Microcontrolador 8051

Alcides Silveira Costa Alex Silveira Martins Cristina Cunha Elbio Renato Torres Abib Rafael Zan Roberto Drebes

Família, Fabricantes e Aplicações

Rafael Zan

Características do 8051
! CPU de 8-bits otimizada para aplicações de controle ! Processamento Booleano Amplo (lógica Single-bit) ! Espaço de endereçamento de Memória de Programa de 64K ! Espaço de endereçamento de Memória de Dados de 64K ! 4K bytes de Memória de Programa on-chip ! 128 bytes de RAM de Dados on-chip ! 32 linhas de I/O programáveis ! Dois contadores/timer de 16-bits ! UART Full duplex ! Estrutura de interrupção com dois níveis de prioridade ! Oscilador de relógio On-chip

Chip do 8051

Arquitetura Básica em Blocos do 8051

Organização das Estruturas internas do Microprocessador 8051

Bloco de Interrupção, Timer e Serial

! além dos registradores da figura também fazem parte deste bloco registradores como P0, P1, P2, P3, IE ... !Existem registradores de uso casado como ! A+B, DPH+DPL,TH0+TL0,TH1+TL1

.......RST) Voltagem de Saída Baixa (Portas 1..............5 ≡ 1.........1! VCC+0............ 2.~PSEN) Voltagem de Saída Alta (Portas 1...........2VCC+1........9VCC -75 -750 ±10 ≡ 11........45 0....-65ºC a +150ºC Voltagem no ~EA/Pino VPP para VSS.............ALE..4 ou 0........ 3) Voltagem de Saída Baixa (Portas 0............. 3) Corrente de Entrada de Fuga (Porta 0) Corrente de Alimentação de Energia: Modo Ativo a 12MHz Modo de Espera Idle Modo de Power Down Resistor de Reset Interno Capacitância do Pino Min-Max -0...............RST) Voltagem de Entrada Alta (XTAL1......45 0...............2 VCC-0... ~PSEN) Voltagem de Saída Alta (Porta 0 no Modo de Barramento Externo) Corrente de Entrada Lógica 0 (Portas 1.5V IOL por Pino de I/O.......5V a +6............5 0.........-0.......................15 mA Dissipação de Potência.................... 2..........5 ! 0.............0V a +13V Voltagem em quaisquer outros pinos ..-40°C a +125ºC Temperatura de Armazenamento......1..PSW UART Taxas Máximas Absolutas Temperatura Ambiente.. 3.. ALE........0! VCC+0..25 0 ! 0.2 VCC-0.....45 2. 2.... 3) Corrente de Transição Lógica 1-para-0 (Portas 1..........5 0..3 ≡3 50 ! 300 10 Unidade V V V V V V V V µA µA µA mA mA µA KΩ pF RRST CIO ................... 2..7VCC+0..9VCC 2.5 W Características DC Símbolo VIL VIL1 VIH VIH1 VOL VOL1 VOH VOH1 IIL ITL ILI ICC Parâmetro Voltagem de Entrada Baixa (Exceto ~EA) Voltagem de Entrada Baixa para ~EA Voltagem de Entrada Alta (Exceto XTAL1...4 ou 0.

8XC52/54/58.8031AH. 8XL51FA/FB/FC. 8XC51SL Memória Memória ❚ O 8051 possui 4kB de memória de programa internos (ROM). Roberto Jung Drebes . 8XC51GX.Componentes da Família MCS 51 Características dos Componentes do MCS 51 Componentes da linha 8051 . com espaços de endereçamento distintos (instruções distintas). 8XC152. 80C51. 8051AHP. 8751BH Componentes da Família (linhas): . 8XC51FA/FB/FC. 8051AH. 8XC52/54/58. ❚ Possui RAM interna e possibilidade de RAM externa.8052. podendo-se ainda utilizar 64kB externos (8031 não possui ROM interna). 8751H.

P1(90h). portas de I/O. variáveis conforme o modelo: " 32 Portas de I/O endereçáveis individualmente. ponteiros do sistema. ❚ Os endereços de 0x00 a 0x20 são 4 bancos de registradores com 8 registradores cada. ❚ O sinal ALE é utilizado para enviar o endereço a ser acessado na memória externa a um latch. Esse endereço vem do registrador DPTR. temporizadores. Memória ❚ O pino PSEN é elevado a 1 para acessos a memória interna. divididas em 4 portas de 8 bits mapeadas em RAM com bits individualmente endereçáveis (58 ou 24 portas dependendo do modelo): Alex Targanski Medeiros P0(80h).Memória ❚ Mapeia em memória registradores. ❚ Os endereços de 0x21 a 0x30 podem ser endereçados bit a bit ou byte a byte. P2(A0) e P3(B0) " 1 UART Full-Duplex " Modelos com 4 ou 8 Canais A/D " Modelos com 10 ou 5 Canais PCA . Entrada e Saída Entrada e Saída Capacidades de I/O: A família 8051 possui as seguintes capacidades de I/O “nativas”. ficando em 0 em acessos a memória externa.

#80H MOV @RO. Endereçamento direto entre os endereços 80h e FFh acessa os registradores especiais e portas de I/O.#0AAH escreve o valor hexa 0AAH na porta 0. existem endereços que referencia-se a BIT e a BYTE. O 8051 “standard” possui 1 canal serial bem como 4 entradas e saídas de 8 bits. mas observe o esquema elétrico: . Dependendo da instrução. Por exemplo: MOV 80H.#OBBH escreve o valor hexa 0BBH no endereço de memória 80h. enquanto que endereçamento indireto acessa a memória. com instruções normais de movimentação de dados (endereçamento direto) ou utilizando instruções de bit. C MOV 80H. MOV 80H. Aparentemente o resultado deveria ser o mesmo. enquanto que MOV R0. o conteúdo lido pode ser a saída do FF (pino direto) ou a saída do latch.ainda mais confusão As portas do 8051 tem ainda mais uma particularidade: São compostas basicamente por um flip-flop e um latch.confusão à vista Para tornar as coisas ainda mais estranhas.Entrada e Saída Entrada e Saída Acesso às portas Pode ser feito a byte. sendo 2 para memória externa (caso utilizada).#0AAH bit 0 da porta 0 = carry exemplo anterior Entrada e Saída Acesso às portas . Entrada e Saída Acesso às portas .

Utilizando uma RAM Externa: " ~EA em 1: mem.Se memória RAM externa for usada. ext. as instruções que lêem e modificam a porta operam no latch. Neste caso temos 64K ROM. dados) Combinações extremas: " 1 Portas de I/O (8 bits em P1) + 6 bits da P3 + 64K ROM + 64K RAM (EXTERNAS) " 4 Portas de I/O + 128bits RAM + 4K ROM (INTERNAS) Entrada e Saída Portas multifuncionais de I/O Utilizando uma ROM Externa: " ~EA em 0: mem. Assim. podem ser utilizadas tanto para I/O comum endereçável a bit quanto para sua função “especial”.Cada 28+2n bits de endereço externo além de 256 utilizam n bits desta. e as portas 0 e 2 completamente ocupadas.Entrada e Saída Acesso às portas A finalidade disto é permitir que as portas funcionem como I e também como O. ou seja.7) . perde-se os bits 6 e 7 (WR/RD). P2 . e as que só lêem operam no pino direto. pode-se forçar o nível 0 externamente e ler este nível com a instrução apropriada.Se for utilizada memória externa (RAM ou ROM) fica ´perdida´. Escrevendo-se nível 1 na saída. 2 e 3: Porta 0: " dados e parte baixa dos endereços multiplexados alta dos endereços Porta 2: " parte Porta 3: " WR e RD (write strobe e read strobe para mem. como no caso de acesso à memória externa. interna programas para 8051 " ~RD e ~WR: sinalizam o acesso à RAM Resumo da Ópera: A memória externa consome muito da capacidade de I/O nativa Neste caso temos 4K ROM + 2K RAM. e ocupadas as portas: P0 (totalmente).2) e P3 (bits 6. Entrada e Saída Portas multifuncionais de I/O Quase todas são “multifuncionais”. com as portas 0. programas para 8051 " ~PSEN : habilita acesso à ROM externa Entrada e Saída Portas multifuncionais de I/O P0 . P2 (bits 0. P3 .1.

Taxa programável. Taxa 1/12. que têm as seguintes funções ´especiais´: Entrada e Saída Porta 3 . 10bits: 1 start. Taxa 1/32 ou 1/64. que controlam o modo de operação e taxa de transmissão. RXD transmite/recebe.Registro SCON Para controlar o I/O serial. 1 stop. .Comunicação Serial A transmissão/recepção é feita pelo registro especial SBUF (desde que a taxa e demais configurações estejam OK): " Escreve em SBUF: transmite o dado (byte) " Lê SBUF: recebe o dado (byte) Entrada e Saída Porta 3 .Comunicação Serial É feito pelos bits 0 e 1 de P3: " bit 0: RXD (serial input port) " bit 1: TXD (serial output port) Porta 1: " bit 0: T2 Timer/Counter2 external input " bit 1: T2EX Timer/Counter2 Capture/Reload trigger (Apenas no 8052) Comunicação serial síncrona ou assíncrona.Entrada e Saída Portas multifuncionais de I/O Além das funções especiais já vistas. stop. igual ao modo 2. 1 programável. 11bits: start. Porta 3: " bit 0: " bit 1: " bit 2: " bit 3: RXD (serial input port) TXD (serial output port) INTO (external interrupt) INT1 (external interrupt) bit 4: T0 (Timer/Counter 0 external input) bit 5: T1 (Timer/Counter 1 external input) bit 6: WR (external Data Memory write strobe) bit 7: RD (external DataMemory read strobe) Entrada e Saída Porta 3 . full-duplex. assíncrono. ainda temos as portas 1 e parte da P3. mas com taxa programável. opera 8 bits. 8 data. assíncrono. TXD é o clock. 8 data. além do nono bit dos modos 2 e 3 e outros. Possui vários modos de operação: " Modo " Modo " Modo " Modo 0: 1: 2: 3: síncrono. temos os registros especiais SCON e PCON. com buffer de leitura.

8 bits. Taxa 1/32 ou 1/64 (modo 2) ou programável (modo 3). 1 programável.Entrada e Saída Porta 3 . e os dados seguintes serão enviados com nono bit 0. 1 stop. Entrada e Saída Porta 3 . 8 data. já que os outros são bits de controle de energia (PCON = Power Control Register). basta o mestre enviar o endereço de um microcontrolador com nono bit 1.Registro PCON Na verdade. no modelo mestre-escravo. Entrada e Saída Porta 3 . Entrada e Saída Porta 3 . 1 stop. Modo 1: Assíncrono.Formato dos dados Modo 2 e 3: Assíncrono. assim. 2 e 3.Comunicação entre vários 8051 Os modos 2 e 3 foram intercomunicação de 8051s. o micro selecionado ficará pronto para recepção. o único bit que interessa em PCON é o bit 0. 8 data. com taxa programável. . pode ser gerada uma interrupção caso o nono bit seja 1. feitos especialmente para a Neste modo.Formato dos dados Modo 0: Síncrono. 11bits: 1 start. taxa alta (1/12 clock) O Bit 0 dobra a taxa de transmissão nos modos 1. 10bits: 1 start.

Elbio Renato Torres Abib . além do hardware básico. Entrada e Saída Conjunto de Instruções Expandindo o I/O: saída analógica Com um conversor do tipo R/2R podemos ter uma saída analógica para uma porta livre ou mapeada em memória. e pronto! Note a necessidade de controle adicional por software (P1 bit 0) que efetivamente transfere o valor do contador para o latch. podemos criar uma expansão de 512 portas para o 8051 (256 entrada + 256 saída). basta escrever na serial o valor desejado na saída. como demux e latches. ainda são precisos outros chips. e o tempo de acesso às portas de I/O feitas desta maneira é o dobro do tempo das portas “nativas”.Entrada e Saída Expandindo o I/O: + 512 portas Utilizando I/O mapeada em memória e os últimos 256 bytes de endereçamento externo. para efetivamente usar as 512 portas. Note que. como é o caso da figura. No modo 0 (síncrono). podemos “criar” mais uma porta a partir da saída serial (bits 0 e 1 da porta 3). As desvantagens do sistema é que aumentam muito o número de componentes do mesmo. Entrada e Saída Expandindo o I/O: + 1 porta com a serial Utilizando um contador de deslocamento e um latch para proteção contra ruídos.

Conjunto de Instruções ❚ ❚ ❚ ❚ ❚ ❚ Modos de endereçamento Status do Programa Instruções aritméticas Instruções Lógicas Instruções para transferência de dados Instruções de jump Modos de endereçamento ❚ Visão da memória para o programador Modos de endereçamento ❚ Registradores especiais --> ❚ Registradores de uso geral Modos de endereçamento ❚ Endereçamento direto 8 bits RAM de Dados Interna ❚ Endereçamento indireto R0 R1 SP DPTR (16 bits) RAM de Dados Externa .

Modos de endereçamento Bits endereçáveis diretamente ❚ Endereçamento imediato ❙ constantes seguem o opcode na memória de programa ❚ Exemplos Status do Programa (PSW) Instruções aritméticas BCD ❚ CY também serve como acumulador em operações booleanas ❚ RS0 e RS1 selecionam um dos 4 bancos de registradores .. . Acumulador. DPTR.Modos de endereçamento ❚ Endereçamento de registradores ❙ opcodes específicos : 3 bits (R0 a R7) ❙ operador implícito : ex..

Instruções Lógicas Instruções Lógicas(bits) Xor Instruções para transferência de dados Instruções de JUMP .

Instruções observação Pequena ortogonalidade Instruções de tamanho variável(1-3 bytes) Interrupções Interrupções Interrupções .

Interrupções Timers e contadores Timers e contadores Timers e contadores .

❚ Inicialmente ela lançou o “8051” com ROM interna programável de fábrica. a família se expandiu para o”8052”. a INTEL. que tem um timer a mais que o 8051 e suas variações: com EPROM (8752) e sem ROM/EPROM (8032). Fabricantes e Aplicações A Família MCS-51 ❚ No início da década de 80.Família. também de 8 bits. que já tinha lançado o microcontrolador 8048. herdeira do 8048. ❚ Após alguns anos. intitulada 8051. lançou uma nova família. e uma versão especial do 8052. o “8751” com EPROM interna programável pelo usuário e o “8031” com necessidade de ter chips de EPROM externa. Alcides Silveira Costa A Família MCS-51 A Família MCS-51 . que tem dentro de sua ROM um interpretador BASIC que permite programá-lo também em linguagem BASIC (BASIC-52). chamado 8052-BASIC.

. Two Level Memory Lock – Consiste de um array de criptografia (Encrypt Array) de 32 bytes (estado inicial com todos 1s. verificação habilitada e movc desabilitado para as memórias de programa externa. high speed output. ❚ Programmable Clock Out . ❚ Programmable Counter Array . nega qualquer espécie de acesso elétrico para a leitura da memória de programa interna (a verificação da EPROM é desabilitada. o dispositivo não pode ser mais programado e não pode executar código da memória externa).A Família MCS-51 ❚ ❚ A Família MCS-51 Boolean Processing – Processador Booleano (opera com bits). o mesmo que anterior e verificação desabilitada.0 (porta 1 pino 0) pode servir de gerador de clock. o mesmo que anterior e verificação desabilitada). o mesmo que o anterior e memória de programa externa não pode ser executada). também de 16 bits.consiste de um temporizador/contador de 16 bits e cinco módulos de comparação/captura. Quando habilitado. software timer.Timer 2 pode ser configurado para incrementar ou decrementar (nas linhas que possuem o Timer 2). ❚ Expanded RAM – 512 bytes de RAM interna (256 a mais que o da versão anterior). verificação habilitada e movc desabilitado para as memórias de programa externa. XNOR) e 2 lock bits com 3 níveis de segurança com criptografia (verificação habilitada.Versão CHMOS do MCS-51 possuem dois modos de baixo consumo de energia (Idle e Power Down). One Level Memory Lock – Permite o usuário proteger o seu programa embutido na EPROM contra ataques de pirataria de software (1 lock bit). Usado em aplicações sujeitas a descargas elétricas. pulse width modulator e watchdog timer). ❚ Power Save Modes . A Família MCS-51 ❚ WatchDog timer – quando ativado incrementa seu registrador a cada ciclo de máquina. Os módulos de comparação/captura podem ser programados em cinco modos diferentes (rising and/or falling edge capture. ❚ Up-Down Timer/Counter . variando de 61 Hz a 4 MHz (trabalhando a uma freqüência de operação de 16 MHz).P1. resetando o dispositivo quando houver estouro (14 bits). ❚ A Família MCS-51 ❚ Three Level Memory Lock – Consiste de um Encrypt Array de 64 bytes e 3 lock bits com 4 níveis de segurança com criptografia (verificação habilitada.

4 canais PWM de 8 bits.7-Volt. AT89C2051 .A Família MCS-51 ❚ 8 Channel 8 bit A/D . . ❚ DS87C550 – 80C51 com 8 canais A/D de 10 bits. 80C32 com 20 Kbytes de memória Flash. Advanced Microcontroller Device. AT87F52 QuickFlash . ❚ DS87C520 . co-processador matemático de 16/32 bits. e Oki.7-Volt. permitia execução de instruções em pipeline. um upgrade a antiga família MCS-51.2. ❚ Contudo. AT89C51 . ❚ Ambas famílias MCS-151 e MCS-152 mantêm compatibilidade com o original MCS-51. Possui 8 canais de entrada analógicas para um mesmo conversor. A Família MCS-51 Fabricantes ❚ Outros fabricantes têm autorização de fabricar o 8051. Dallas.87C51/87C52 com 16 Kbytes de EPROM e 1Kbyte de SRAM. ❚ AT87F51RC Preliminary . ❚ DS80C390 – 80C51 com capacidade de endereçamento de 4Mbytes (memória externa). Philips. 80C31 com 2Kbytes de Flash e encapsulamento de 20 Pinos. o salto entre MCS-51 e MCS-251 foi muito grande e uma nova família. Temic. Fujitsu. ❚ Em 1994. ❚ DS80C320 – 801C31/80C32 com dois ponteiros para dados.80C32 com 512 bytes SRAM e 32K bytes OTP QuickFlash. como a Atmel.conversor analógico digital. a Intel a lançou a família MCS-251. até 24 bits de endereçamento (16 Mbytes) e barramentos de código de 16 bits. Incorporando novas características. Siemens. A seleção do canal é feita por um multiplexador. Fabricantes ❚ ❚ ❚ ❚ AT89LV55 . ❚ DS80C323 – 80C31/80C32 com baixo consumo de potência.2.80C31 com 4Kbytes de memória Flash. intitulada MCS-151 foi lançada em abril de 1996 para preencher o espaço tecnológico e financeiro entre as duas arquiteturas (custo/benefício).80C32 com 8K bytes de OTP QuickFlash.

❚ T89C51RD2 . ❚ P87LPC764 . Timer 0 overflow.4K bytes de OTP ROM com 128 bytes of SRAM (20 pinos). mas velocidade constante sim.2). ❚ A inversão do sentido de rotação é facilmente adquirida invertendose a polaridade da tensão nos terminais do motor.). conseqüentemente. ❚ Em muitos casos . aplicações que utilizam motores CC requerem variação na sua velocidade e inversão no sentido de rotação. precisão absoluta em movimentos não é necessário.compatível com 80C52 (Tecmic). Motores de passo são utilizados nestas aplicações. variando a tensão média entregue ao motor. ❚ O 83C51 pode ser configurando para utilizar até saídas 5 PWM ao mesmo tempo (possui um PCA com 5 módulos). ❚ 83C552/80C552 – 8 canais A/D de 10 bits. maior custo e consumo. ❚ Uma alternativa pode ser utilizar a saída PWM (pulse width modulator) do 83C51FA. em contraponto com um ploter de alta resolução. ❚ A extensão “XA” significa microcontroladores de 16 bits (eXtensive Architecture). oscillator frequency / 4. . força sobre uma corrente). ❚ C513AO – compatível 8051 padrão (Siemens). ❚ O PCA possui um timer principal compartilhado com os demais módulos que pode ter até 4 diferentes taxas de contagem (oscillator frequency / 12. external input on ECI (P1.Fabricantes Aplicações ❚ O microcontrolador 83C51FA pode ser utilizado eficientemente para controlar um motor de corrente contínua (CC) com o mínimo de hardware. ❚ Conceitos básicos de um motor (FB = i L x B. Ele não precisa parar exatamente em um certo ponto. Aplicações ❚ Normalmente. 1024 bytes de RAM e 50 pinos de I/O (palavras de 16 bits). um motor CC em um toca-fitas deve manter velocidade angular constante. ❚ Em um sistema digital. 2 saídas PWM. significando um componente a mais no circuito e. Aplicações ❚ Variar a velocidade significa variar a tensão nos terminais do motor. Por exemplo. ❚ XAS3 – 32 Kbytes de EPROM. o sinal analógico para o amplificador deve vir de alguma forma de conversor D/A.

osc freq/4. chamado CCAPnL & CCAPnH. ❚ Quando os módulos do PCA não estão em uso. CMOD e CCAPMn). ❚ Os cada módulo do PCA pode trabalhar em cinco modos diferentes de operação. . os pinos da porta 1 são utilizados como pinos de I/O normalmente. o clock do PCA timer/counter deve ser definido (osc freq/12. outros registradores são utilizados (CCON. ❚ CCAPMn deve ser setado apropriadamente para trabalhar no modo PWN. Um desses modos é o PWM. timer 0 overflow e external clock). de 16 bits. ❚ Cada módulo possui um registrador de modo de 8 bits (CCAPMn) e um registrador de captura/comparação. ❚ Para definir o clock. Aplicações Aplicações ❚ Primeiramente.Aplicações Aplicações ❚ Alguns pinos da porta 1 são utilizados por cada módulo do PCA para se comunicar com o mundo exterior.

Através de entradas lógicas pode ser controlado para habilitar e desabilitar o fornecimento de corrente para o motor. o modulo 2 foi selecionado para fornecer um sinal PWM para o amplificador do motor.Aplicações MOV MOV MOV SETB CMOD. ❚ Apenas é necessário um driver. . 0 provides 100% duty cycle (5V) turn timer on Aplicações ❚ Quando usamos o 83C51FA pouco hardware é necessário para o controle de um motor CC. ❚ Um exemplo de driver circuit pode ser da serie L293.#42H CCAP2H. Um clock externo foi selecionado para a entrada do timer. Logo. timer input external put the module in PWM mode. ❚ No exemplo acima. . Aplicações ❚ Driver circuit – através do sinal proveniente do microcontrolador (83C51FA) entrega a corrente e a tensão necessária para o funcionamento do motor.#0 CR . ❚ Ruído elétrico – motores geram ruído elétrico suficiente para atrapalhar a performance do controlador.#06 CCAPM2. . Aplicações . capacitores ajudam a eliminar o ruído proveniente do motor e devem ser adicionados ao circuito. pois o microcontrolador não tem como fornecer a corrente e a tensão necessária para o motor. podendo fornecer 1A quando ligado a uma tensão de 36V.

❚ O tempo ente duas capturas consecutivas correspondem a meia revolução. ❚ A cada momento que o imã passa na frente do sensor. Aplicações ❚ O 83C51FA pode utilizar o sinal proveniente da realimentação para determinar a velocidade e a posição do motor. podemos fazer ajustes. sensível a borda de subida. Aplicações Aplicações . Logo. um pulso é gerado e mandado para a porta 1 pino 6 do microcontrolador (interface externa do módulo 3 do PCA). ❚ Esse sensor pode ser do tipo sensível ao campo magnético. o módulo 3 do PCA é setado para trabalhar no modo de captura.Aplicações ❚ Podemos ter um controle maior do motor através de uma linha de realimentação proveniente de um sensor detector de movimento contido no motor. ❚ Algum cuidado deve ser tomado para que a distância entre o imã e o sensor não seja muito grande. variando a velocidade. Isso nos fornece informação suficiente para calcular a velocidade atual do motor. revertendo a rotação ou parando o motor. por exemplo. Usando esse método podemos. sincronizá-lo com outro evento. ❚ No exemplo a seguir.

.com. www. www.dalsemi. Fitzgerald.intel.atmel. ❚ Máquinas Elétricas – A. Charles Kingsley e Alexander Kusko.com.com . . www. E. ❚ Aplicações Práticas do Microcontrolador 8051 – Vidal Pereira da Silva Jr. ❚ Fundamentos de Física 3 – David Halliday e Robert Resnick .philips. ❚ www.com.Aplicações Bibliografia ❚ 8051 Microcontrolador Detalhado..3ª edição.