Microcontrolador 8051: Fonte: CORRADI 2009
O Microcontrolador 8051: Começou a ser produzido no início da década de 80, pela Intel; Hoje é fabricado por várias empresas e com muitas variações; Atualmente, alguns modelos, possuem vários periféricos integrados, como: Conversores A/D, PWM, interfaces seriais, I²C, SPI, CAM, decodificador MP3, etc.; Possuem várias configurações de memória interna;
Características Básicas (Nicolosi 2008): Palavras de 8 bits; Capacidade para endereçar até 64 kbytes de ROM (memória de programa); Capacidade para endereçar até 64 kbytes de RAM (memória de dados); 256 bytes de memória RAM interna, das quais 128 são usadas para implementar os registradores do 8051. Assim, somente 128 bytes estão disponíveis para dados e pilha;
Características Básicas (continuação): Pelo menos dois timers/counters configuráveis que podem trabalhar em 4 modos distintos; Uma porta serial (UART); Quatro portas de I/O; Seis tipos de interrupção;
Estrutura Interna: Aula 02 Microcontrolador 8051 Fonte: CORRADI 2009
Estrutura Interna (continuação): ALU (Unidade Lógica e Aritmética): circuito responsável pela execução das operações lógicas e aritméticas do microcontrolador; ACC (Acumulador): registrador de 8 bits usado como base de quase todas as operações; Registrador B: registrador auxiliar em algumas operações aritméticas;
Estrutura Interna (continuação): SP (Stack Pointer Ponteiro da Pilha): contém o endereço da próxima posição a ser utilizadas para guardar dados na pilha; PSW (Registrador de Flags Program Status Word): contém vários bits que indicam o estado do microcontrolador;
Estrutura Interna (continuação): PC (Program Counter ou Contador de Programa): contém o endereço da próxima instrução a ser executada; DPTR (Data Pointer Ponteiro de Dados): registrador de 16 bits usado para acessar dados nas memórias externas (tanto na memória de programa quanto na memória de dados). É formado por dois registradores de 8 bits (DPH e DPL);
Estrutura Interna (continuação): Ports 0,1,2 e 3: registradores de 8 bits que dão acesso aos pinos de I/O; IE (Registro de controle de Interrupção Interrupt Enable): permite habilitar ou desabilitar as interrupções individulamente; IP (Registrador de prioridade de Interupção Interrupt Priority): determina o nível de prioridade de cada interrupção, que pode ser alto ou baixo;
Estrutura Interna (continuação): TH0, TL0, TH1 e TL1: registradores dos timers 0 e 1. Cada par TH+TL formam um temporizador/contador, que pode trabalhar de quatro modos distintos; TMOD (Timer Mode Register): configura o modo de trabalho dos temporizadores/contadores; TCON (Timer Control Register): controla a operação dos temporizadores/contadores e das interrupções dos temporizadores/contadores e interrupções externas;
Estrutura Interna (continuação): SBUFF: (Serial Buffer): é um registrador duplo que armazena o byte a ser transmitido e o byte recebido pela interface serial; SCON: (Serial Port Control Register): controla o modo de funcionamento da porta serial; PCON (Power Control Register): configura o 8051 em alguns modos de economia de energia;
Famílias do 8051 (Básicas): 8031-0KB ROM, 128B RAM, 2 T/C; 8051-4KB ROM, 128B RAM, 2 T/C; 8751-4KB EPROM, 128B RAM, 2 T/C; 8032-0KB ROM, 256B RAM, 3 T/C; 8052-8KB ROM, 256B RAM, 3 T/C; 8752-8KB EPROM, 256B RAM, 3 T/C; 80C31, C51, C32 e C52 - CMOS, Low Power;
Famílias do 8051 (Avançadas): 80LV31, LV51, LV32 e LV52 - Low Voltage; 89C51 e 89C52 - Flash EPROM, 24MHz; 89C1051, C2051 e C4051-20 terminais; 89S5x - Flash ISP, 24MHz; 89S8252 8kB de Flash ISP, 2kB de EEPROM, Watchdog, interface SPI; 80C320 - Clock Otimizado (33MHz x 3); C505L - 32KB ROM, 512B RAM, 10B A/D, LCD; P51XA-G3, H3 e S3 - Arquitetura de 16 bits;
Pinagem do 8051: Aula 02 Microcontrolador 8051 Pinagem para um encapsulamento de 40 pinos:
Aula 02 Microcontrolador 8051 Pinagem do 8051 (continuação): P0.0 a P0.7: pinos de entrada e saída do Port 0. Também são usados como barramento de dados e como parte baixa do barramento de endereços (quando for usada memória externa). Estes pinos são FETs em dreno em aberto, necessitam de resistores de pull-up; P1.0 a P1.7: pinos de entrada e saída do Port 1; P2.0 a P2.7: pinos de entrada e saída do Port 2. Também são usados como barramento de dados e como parte alta do barramento de endereços (quando for usada memória externa);
Pinagem do 8051 (continuação): P3.0 a P3.7: pinos de entrada e saída do Port 3. Cada bit deste port também possui as seguintes funções alternatvas: RxD: P3.0, pino de recepção de dados da porta serial; TxD: P3.1, pino de transmissão de dados da porta serial; Int0 e Int1: P3.2 e P3.3, pinos de interrupção externa; T0 e T1: P3.4 e P3.5, pinos de clock para os temporizadores/contadores internos; WR e RD: P3.6 e P3.7, usado para controle de escrita e leitura da memória externa;
Pinagem do 8051 (continuação): Xtal1 e Xtal2: pinos para o cristal do oscilador interno; RST: pino de reset do microcontrolador, ativo em 1; EA/VPP (External Address): ativo em nível baixo, utiliza somente a memória de programa externa. Quando em nível alto (1) utiliza a memória interna. Também é usado no processo de programação da memória EPROM interna; ALE/PROG (Address Latch Enable): gera o pulso de armazenamento da parte baixa do endereço do port 0, quando for usada a memória externa;
Organização de Memória: Abaixo está descrito a organização de memória geral para a família 8051. Na prática cada componente possui a sua própria organização: Até 64 kbytes de Memória ROM (EPROM, FLASH); 128 bytes de memória RAM; Registradores mapeados em memória (endereços F0 a FF da memória RAM interna); Alguns modelos implementam memória EEPROM interna para dados permanentes;
Organização de Memória: Memória de Programa: quando o pino EA = 0, acessa a memória externa, quando EA=1, acessa a memória interna até o seu limite, depois acessa a memória externa. Memória de Programa Externa Pino EA = 0 FFFF 0000 Memória de Programa Externa Memória de Programa Interna Pino EA = 1 FFFF 1FFF 0000
Organização de Memória: Memória de Dados: é dividida em três regiões: memória interna (128 bytes), registros internos (128 bytes) e memória externa, até 64 kbytes; Registros de funções especiais Memória de dados Interna FF 7F 0000 Memória de Dados Externa FFFF 0000
Organização de Memória: A memória de dados interna (os primeiros 128 bytes) possui três regiões com funções específicas, mas pode ser totalmente usada como memória de dados comum:
Organização de Memória: A primeira região da memória interna é composta de quatro banco com 8 registradores cada um. Estes registradores são nomeados como R0, R1, R2, R3, R4, R5, R6 e R7.
Organização de Memória: A segunda região da memória interna, cujos endereços vão de 20h a 2Fh, são também endereçadas bit a bit. As instruções que trabalham com bits acessam estes bits diretamente e seus endereços (dos bits) vão de 00h a 7Fh.
Organização de Memória: A segunda parte memória de dados interna (os últimos 128 bytes) possuem funções especiais, são os registradores do 8051: Registros de funções especiais Memória de dados Interna FF 80 0000 F0h Registro B E0h Acumulador Acc D0h Program Status Word PSW B8h Interrupt Priority IP B0h Porta 3 de E/S P3 A8h Interrupt Enable - IE A0h Porta 2 de E/S P2 99h Serial Buffer BUF 98h Serial Control SCON 90h Porta 1 de E/S P1 8Dh Timer High 1 H1 8Ch Timer High 0 H0 8Bh Timer Low 1 TL1 8Ah Timer Low 0 TL0 89h Timer Mode TMOD 88h Timer Control TCON 87h Power Control PCON 83h Data Pointer High DPH 82h Data Pointer Low DPL 81h Stack Pointer SP 80h Porta 0 de E/S P0
Aula 02 Microcontrolador 8051 Acesso a Memória Externa: Como o barramento de dados e a parte baixa do endereço é multiplexada no port 0, é necessário um circuito externo para separar os endereços dos dados:
Aula 02 Microcontrolador 8051 Acesso a Memória Externa: O ciclo de leitura da memória de programa externa é dado pelo diagrama de tempos abaixo:
Aula 02 Microcontrolador 8051 Acesso a Memória Externa: O ciclo de leitura da memória de dados externa é dado pelo diagrama de tempos abaixo:
Aula 02 Microcontrolador 8051 Acesso a Memória Externa: O ciclo de escrita da memória de dados externa é dado pelo diagrama de tempos abaixo:
Aula 02 Microcontrolador 8051 Periféricos mapeados em memória: Um periférico mapeado em memória é um periférico que usa uma faixa de endereços de memória para ser acessado. Na figura abaixo temos um exemplo:
CORRADI 2009: www.corradi.junior.nom.br; acesso em 28.09.2009; NICOLOSI 2008: Nicolosi, Denis Emílio Campion e Bronzeri, Rodrigo Barbosa. Microcontrolador 8051 com linguagem C: prático e didático: família ATS89S8252 atmel. 2ª edição. São Paulo: Érica 2008.