Capítulo 2 A família de Microcontroladores MCS-51 da Intel Membro original é o 8051; CPU de 8 bits otimizada para aplicações de controle; Poderosa capacidade de processamento booleano, incluindo lógica individual de bits; 64 Kbytes de endereçamento de memória de programa; 64 Kbytes de endereçamento de memória de dados; 4 Kbytes de memória de programa interna; Prentice Hall Microcontroladores 8051 1 Capítulo 2: 128 bytes de memória RAM de dados interna; 32 linhas de I/O bidirecionais endereçáveis individualmente; 2 Timers/Contadores de 16 bits; 5 entradas de interrupções (3 internas e 2 externas) com 2 níveis de prioridade; 1 oscilador interno de relógio. Prentice Hall Microcontroladores 8051 2 Capítulo 2: Arquitetura do 8051 Interrupções Internas (3) e Externas (2) Controle de Interrupções ROM RAM Entradas externas de clock dos Contadores Timer 0 Timer 1 CPU OSC Bar. Controle 4 Portes de Ent/Sai P0 P1 P2 Porte Serial P3 TX RX Figura 1: Arquitetura básica do microcontrolador 8051. Prentice Hall Microcontroladores 8051 3 Capítulo 2: Família de Microcontroladores MCS-51 da Intel Dispositivo Versão sem ROM Versão com EPROM 8051 8031 - 8051AH 8031AH 8052AH 8032AH 8751AH 8751BH 8752BH 80C51BH 80C31BH 87C51 80C52 80C32 - 83C51FA 80C51FA 87C51FA 83C51FB 80C51FA 87C51FB 83C152JA 80C152JA - - 80C152JB - 83C152JC 80C152JC - - 80C152JD - 83C452 80C452 87C452P Capacidade Capacidade da ROM da RAM Portes de E/S de 8 bits Timers/ Contadores de 16 bits Matrizes de contadores programáveis UART Canais de DMA Canais A/D Fontes de interrupção 4K 4K 128 128 4 4 2 2 X X 6/5 6/5 8K 4K 8K 8K 16K 8K 8K 8K 256 128 256 256 256 256 256 256 256 256 4 4 4 4 4 5 7 5 7 5 3 2 3 3 3 2 2 2 2 2 X X X X X X X X X X 8/6 6/5 8/6 14/7 14/7 19/11 19/11 19/11 19/11 9/8 X X 2 2 2 2 Modos de baixo consumo e Idle X X X X X X X X X Tabela 1: A família de microcontroladores de 8 bits da Intel. Prentice Hall Microcontroladores 8051 4 Capítulo 2: Pinagem do 8051 Entrada do sinal externo de Reset ----9 ----18 Reset X2 EA/ ALE ----31 ----30 ----19 ----39 X1 P0.0/AD0 PSEN/ P2.0/A8 ----29 ----21 ----38 ----37 ----36 ----35 ----34 ----33 ----32 ----1 ----2 ----3 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P1.0 P1.1 P1.2 8 ----22 ----23 ----24 ----25 ----26 ----27 ----28 ----10 ----11 ----12 Bit 0 do porte 3 ou pino de recepção de dados seriais Bit 1 do porte 3 ou pino de transmissão de dados seriais Bit 2 do porte 3 ou sinal de entrada externa da interrupção 0 Bit 3 do porte 1 ----4 P1.3 1 ----13 Bit 3 do porte 3 ou sinal de entrada externa da interrupção 1 Bit 4 do porte 1 ----5 ----6 ----7 P1.4 P1.5 P1.6 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 / P3.3/INT1 / P3.4/T0 P3.5/T1 P3.6/WR/ ----14 ----15 ----16 ----8 P1.7 P3.7/RD/ ----17 Bit 4 do porte 3 ou sinal de entrada de clock do timer 0 Bit 5 do porte 3 ou sinal de entrada de clock do timer 1 Bit 6 do porte 3 ou sinal de saída de controle de escrita de memória de dados externa (RAM) Bit 7 do porte 3 ou sinal de saída de controle de leitura de memória de dados externa (RAM) Entrada 2 do circuito oscilador externo a cristal Entrada 1 do circuito oscilador externo a cristal Porte 0 ou Barramento de Endereços menos significativo e dados (multiplexados): Bit 0 de porte 0 ou A0 e D0 Bit 1 de porte 0 ou A1 e D1 Bit 2 de porte 0 ou A2 e D2 Bit 3 de porte 0 ou A3 e D3 Bit 4 de porte 0 ou A4 e D4 Bit 5 de porte 0 ou A5 e D5 Bit 6 de porte 0 ou A6 e D6 Bit 7 de porte 0 ou A7 e D7 Bit 0 do porte 1 Bit 1 do porte 1 Bit 2 do porte 1 Bit 5 do porte 1 Bit 6 do porte 1 Bit 7 do porte 1 0 5 Sinal de saída para acesso externo a memória de programa Sinal de saída habilitador de captura externa do byte de endereço menos significativo que está multiplexado com o byte de dados Sinal de saída de controle de leitura da memória de programa externa (ROM) Porte 2 ou Barramento de Endereços mais significativo: Bit 0 do porte 2 ou A8 Bit 1 do porte 2 ou A9 Bit 2 do porte 2 ou A10 Bit 3 do porte 2 ou A11 Bit 4 do porte 2 ou A12 Bit 5 do porte 2 ou A13 Bit 6 do porte 2 ou A14 Bit 7 do porte 2 ou A15 Figura 2: Pinagem do 8051 Prentice Hall Microcontroladores 8051 5 Capítulo 2: Memória de programa e memória de dados Memória de Programa: Memória de Dados: FFFFh Externa FFFFh Externa Interna FFh 1000h 0FFFh PSEN\ EA\=0 Externa EA\=1 Interna 80h 7Fh 128 bytes superiores SFRs 128 bytes inferiores 00h 0000h RD\ 0000h WR\ Figura 3: Organização da Memória da família de microcontroladores MCS-51 da Intel. Prentice Hall Microcontroladores 8051 6 Capítulo 2: Endereçamento das Interrupções ROM 07FFh Timer 2 (8052/32) : : : : 0033h 0032h 002Bh Serial Port 002Ah 0023h Timer 1 0022h 001Bh Ext. Int. 1 Timer 0 Ext. Int. 0 Reset 001Ah 0013h 0012h 000Bh 000Ah 0003h 8 bytes 0002h 0000h Figura 4: Memória de programa do MCS-51. Prentice Hall Microcontroladores 8051 7 Capítulo 2: 8051 P1 ROM/EPROM OE\=OEbarra D7-D0 PSENbarra P0 Latch ALE P3 Endereços mais significativos P2 EAbarra Endereços menos significativo GND Figura 5: Hardware para memória de programa externa. Prentice Hall Microcontroladores 8051 8 Capítulo 2: MCS-51 com ROM interna P1 RAM P0 VCC D7-D0 Latch EAbarra ALE E/S RD\ P3 WR\ P2 bits de paginação E/S Endereços menos significativo Endereços mais significativos WE\ OE\ Figura 6: Hardware para memória de dados externa. Prentice Hall Microcontroladores 8051 9 Capítulo 2: FFh FFh Acessível somente por endereçamento indireto (128 bytes superiores) 80h Acessível por endereçamento direto (SFRs: Portes, Bits de controles dos Timers, Acumulador, etc) 80h 7Fh Acessível por endereçamento direto e indireto (128 bytes inferiores) 00h Prentice Hall Figura 7: Memória de dados interna. Microcontroladores 8051 10 Capítulo 2: Figura 8: 128 bytes inferiores da RAM interna. 7Fh 30h 2Fh Endereçamento por byte Endereçável por bit e/ou byte 20h 1Fh R7 Banco 3 18h 17h R0 R7 Banco 2 Valor inicial do SP (Stack Pointer: ponteiro de pilha) após um sinal de Reset. 10h 0Fh R0 R7 Banco 1 08h 07h R0 R7 Banco 0 00Hh Prentice Hall Microcontroladores 8051 R0 11 Capítulo 2: Program Status Word bits 7 6 (PSW) = C AC 5 4 3 2 F0 RS1 RS0 OV 1 0 - P RS1 RS0 Banco Selecionado Registradores Selecionados Endereços de Memória Selecionados 0 0 0 R0 a R7 00h a 07h 0 1 1 R0 a R7 08h a 0Fh 1 0 2 R0 a R7 10h a 17h 1 1 3 R0 a R7 18h a 1Fh Prentice Hall Microcontroladores 8051 12 Capítulo 2: Bancos de Registradores RS1 RS0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Prentice Hall Endereço 1Fh 1Eh 1Dh 1Ch 1Bh 1Ah 19h 18h 17h 16h 15h 14h 13h 12h 11h 10h 0Fh 0Eh 0Dh 0Ch 0Bh 0Ah 09h 08h 07h 06h 05h 04h 03h 02h 01h 00h Registrador R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 Microcontroladores 8051 Banco 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 13 Capítulo 2: Endereçamento por bits/bytes Endereço de Memória bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 2Fh 2Eh 2Dh 2Ch 2Bh 2Ah 29h 28h 27h 26h 25h 24h 23h 22h 21h 20h 7Fh 77h 6Fh 67h 5Fh 57h 4Fh 47h 3Fh 37h 2Fh 27h 1Fh 17h 0Fh 07h 7Eh 76h 6Eh 66h 5Eh 56h 4Eh 46h 3Eh 36h 2Eh 26h 1Eh 16h 0Eh 06h 7Dh 75h 6Dh 65h 5Dh 55h 4Dh 45h 3Dh 35h 2Dh 25h 1Dh 15h 0Dh 05h 7Ch 74h 6Ch 64h 5Ch 54h 4Ch 44h 3Ch 34h 2Ch 24h 1Ch 14h 0Ch 04h 7Bh 73h 6Bh 63h 5Bh 53h 4Bh 43h 3Bh 33h 2Bh 23h 1Bh 13h 0Bh 03h 7Ah 72h 6Ah 62h 5Ah 52h 4Ah 42h 3Ah 32h 2Ah 22h 1Ah 12h 0Ah 02h 79h 71h 69h 61h 59h 51h 49h 41h 39h 31h 29h 21h 19h 11h 09h 01h 78h 70h 68h 60h 58h 50h 48h 40h 38h 30h 28h 20h 18h 10h 08h 00h Prentice Hall Microcontroladores 8051 14 Capítulo 2: Registradores de Funções Especiais (SFRs) Registradores A ou ACC B* DPL DPH IE* IP SCON* SBUF PSW* PCON TCON* TMOD TH0 TL0 TH1 TL1 P0* P1* P2* P3* Prentice Hall Endereço E0h F0h 82h 83h A8h B8h 98h 99h D0h 87h 88h 89h 8Ch 8Ah 8Dh 8Bh 80h 90h A0h B0h Nome dos Registradores Acumulador Registrador B Byte menos significativo do Ponteiro de Dados Byte mais significativo do Ponteiro de Dados Habilitador de Interrupções Priorizador de Interrupções Controlador da Comunicação Serial Buffer de Dados Serial Palavra de Status de Programa Controle de Potência Controle do Timer/Contador Modo de operação de Timer/Contador Byte mais significativo do Timer/Contador 0 Byte menos significativo do Timer/Contador 0 Byte mais significativo do Timer/Contador 1 Byte menos significativo do Timer/Contador 1 Porte 0 Porte 1 Porte 2 Porte 3 Microcontroladores 8051 15 Capítulo 2: Registradores de Funções Especiais (SFRs) para o 8052 Registradores Endereço Nome dos Registradores T2CON* C8h Controle de Timer/Contador 2 TH2 CDh Byte mais significativo do Timer/Contador 2 TL2 CCh Byte menos significativo do Timer/Contador 2 RCAP2H CBh Byte mais significativo do Timer/Contador de captura 2 RCAP2L CAh Byte mais significativo do Timer/Contador de captura 2 * Registradores endereçados por bit; Tabela 2 - Registradores de Funções Especiais. Prentice Hall Microcontroladores 8051 16 Capítulo 2: Figura 10: Decodificador 74HC138 Figura 12: Decodificador 74138 Prentice Hall Microcontroladores 8051 17 Capítulo 2: Entradas Saídas G2A´ G2B´ G1 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 1 X X X X X 1 1 1 1 1 1 X 1 X X X X 1 1 1 1 1 1 X X 0 X X X 1 1 1 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0: 0 lógico; 1: 1 lógico; X: pode ser 0 ou 1 lógico; ´ : representa entrada ativa em 0 lógico. Y6 1 1 1 1 1 1 1 1 1 0 1 Tabela 3: Tabela verdade do 74138 Prentice Hall Microcontroladores 8051 18 Capítulo 2: Figura 11: Exemplo de mapeamento de memória com o 74138. Prentice Hall Microcontroladores 8051 19 Capítulo 2: A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 0 X 1 Dígito + sign. do endereço Prentice Hall 2° dígito + sign do endereço 2° dígito - sign do endereço Microcontroladores 8051 Endereço Inicial e final 0000H 1FFFH 2000H 3FFFH 4000H 5FFFH 6000H 7FFFH 8000H 9FFFH A000H BFFFH C000H DFFFH E000H FFFFH Dígito - sign do endereço 20 Capítulo 2: Figura 12: Circuito de Reset para a família de microcontroladores MCS-51 da Intel. Prentice Hall Microcontroladores 8051 21 Capítulo 2: Figura 13: Circuito do sinal de relógio (clock). Prentice Hall Microcontroladores 8051 22 Capítulo 2: Sinal de relógio: S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 Sinal de ALE: 1- Um ciclo de instrução de um byte. Ex: INC A. Lê Opcode S1 S2 Lê o próx. Opcode (descarta) S3 S4 S5 Lê o próx. Opcode novamente S6 S1 S2 S3 S4 S5 S6 S2 S3 S4 S5 S6 2- Um ciclo de instrução de dois bytes. Ex: ADD A,#data. Lê Opcode S1 S2 Lê segundo Byte S3 S4 S5 Lê prox. Opcode S6 S1 3- Dois ciclos de instrução de um byte. Ex: INC DPTR. Lê Opcode S1 S2 Lê prox. Opcode (descata) S3 S4 S5 Lê prox. Opcode (descarta) S6 S1 S2 Lê prox. Opcode (descarta) S3 S4 S5 S6 Abaixo os sinais e tempos envolvidos na busca do programa em memória de programa externa em uso da instrução MOVX. S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 Sinal de ALE: PSEN\ : RD\: P2: PCH Out P0: Inst. in Prentice Hall PCH Out PCL Out PCH Out Inst. in PCL Out PCH Out Inst. in PCL Out Microcontroladores 8051 PCH Out Inst. in PCL Out 23 Capítulo 2: Operação de executar um programa passo a passo: JNB JB RETI P3.2,$ P3.2,$ Prentice Hall ; Aguarda que o bit P3.2 vá para 1 lógico ; Aguarda que o bit P3.2 vá para 0 lógico ; Retorna da rotina de atendimento da fonte de interrupção INT0\ Microcontroladores 8051 24 Capítulo 2: Modos de redução de potência em microcontroladores CHMOS: Modo Idle Modo Baixa Potência Registrador PCON: bit 7 SMOD bit 6 - bit 5 - bit 4 - bit 3 GF1 bit 2 GF0 bit 1 PD bit 0 IDL -SMOD: Bit de duplo baud rate (freqüência de recepção e transmissão do canal de comunicação serial). Quando igual a 1 lógico, o baud rate é dobrado quando o canal de comunicação serial ou está no modo 1, ou 2, ou 3; -GF1: flag de uso de propósito geral; -GF0: flag de uso de propósito geral; -PD: Bit de baixa potência (Power Down). Fazendo este bit igual a 1 lógico, ativa o modo de baixa potência. -IDL: Bit de Modo Idle. Fazendo este bit igual a 1 lógico, ativa o modo Idle. Prentice Hall Microcontroladores 8051 25