8051 Estudo de Caso Prof. Carlos E. Capovilla - CECS/UFABC 1
8051 - Características O 8051 é membro da família MCS-51, e constitui o núcleo de todos os dispositivos MCS-51. Diversos fabricantes produzem microcontroladores da família 8051 (Intel, AMD, Atmel, Dallas, OKI, Matra, Philips, Siemens, SMC, SSI). A Intel iniciou a produção do 8051 em 1981. É um sistema de um chip único, que além do microprocessador de 8 bits pode conter: Memória de Programa (8051) e Memória de Dados Portas de I/O Comunicação Serial Contadores / Timers Lógica para Controle de Interrupção Conversor A/D (80550) Etc Prof. Carlos E. Capovilla - CECS/UFABC 2
Família MCS-51 Prof. Carlos E. Capovilla - CECS/UFABC 3
8051 Núcleo Básico CPU de 8 bits otimizado para aplicações de controle Capacidade de processamento booleano (lógica de um único bit) 64 Kbytes de espaço de memória de programa 64 Kbytes de espaço de memória de dados 4 Kbytes de espaço de memória de programa "on chip" 128 bytes de memória RAM de dados "on chip" 32 linhas de I/O 2 Contadores / Temporizadores de 16 bits cada UART full duplex (Universal Asynchronous Receiver/Transmitter ) Estrutura de interrupção com níveis de prioridade Prof. Carlos E. Capovilla - CECS/UFABC 4
Diagrama de blocos 8051 Prof. Carlos E. Capovilla - CECS/UFABC 5
Diagrama 8051 Prof. Carlos E. Capovilla - CECS/UFABC 6
8051 Características DC Prof. Carlos E. Capovilla - CECS/UFABC 7
Pinos de Controle do 8051 ALE (Address Latch Enable) Copia a Informação de endereço para o latch (Port0 multiplexa dados e o byte menos significativo do endereço O Port0 multiplexa dados e endereços para economizar 8 pinos (totalizando 40) PSEN (Program Store Enable ) Aciona ROM externa EA (ExternalAccess) Determina se irá se utilizar a ROM interna ou somente a ROM externa (inativando a interna) RST (Reset) (Necessita de 2 ciclos de clock em estado 1 para acionamento) - Deve ser implementado através de circuito externo para realizar o reset toda vez que o circuito for energizado e também através de chave para acionamento quando necessário. Prof. Carlos E. Capovilla - CECS/UFABC 8
Port0 Multiplexado Prof. Carlos E. Capovilla - CECS/UFABC 9
Funções secundárias da Port3 (Implementadas via software) RxD (P3.0) Receive Data (Receptor de dados seriais) TxD (P3.1) Transmit Data (Transmissor de dados seriais) INT0 (P3.2) - External Interrupt 0 (Usado para interrupção externa) INT1 (P3.3) - External Interrupt 1 (Usado para interrupção externa) T0 (P3.4) Timer / Counter 0 (Usado para o timer se tornar contador de eventos externos) T1 (P3.5) Timer / Counter 1 (Usado para o timer se tornar contador de eventos externos) WR (P3.6) External Memory write strobe (Sinaliza a RAM externa que o dado será escrito) RD (P3.7) External Memory read strobe (Sinaliza a RAM externa que o dado será lido) Prof. Carlos E. Capovilla - CECS/UFABC 10
Memórias Endereçamento Endereços das memórias de programa interna e externa : Se EA = Gnd toda a memória de programa é externa : 0000h a FFFFh Prof. Carlos E. Capovilla - CECS/UFABC 11
Endereço das interrupções Cada interrupção causa um salto para um endereço fixo na memória de programa (ROM, EPROM,...) a partir do endereço 0003 Prof. Carlos E. Capovilla - CECS/UFABC 12
Memória de dados interna Prof. Carlos E. Capovilla - CECS/UFABC 13
Memória de dados interna Faixa de endereço endereçável diretamente: 00 a FF hexadecimal. Faixa de endereço endereçável indiretamente: 00 a 7F hexadecimal. Espaço endereçável por bit: 20 a 2F hexadecimal. Quatro bancos de 8 registradores: 00 a 1F hexadecimal. Prof. Carlos E. Capovilla - CECS/UFABC 14
Bancos de Registradores Gerais Cada banco é formado pelos registradores R0 a R7. A seleção entre os Bancos de registradores é feita pelos bits 3 e 4 do byte PSW (program status word) Prof. Carlos E. Capovilla - CECS/UFABC 15
Registradores de Funções Especiais ACC: Acumulador; P0, P1, P2 e P3: Registradores espelhos dos Ports de comunicação; B: Registrador para operações de Multiplicar e dividir (MUL AB e DIV AB); PSW (Program Status Word): Registrador de status do acumulador; IP e IE (Interrupt Priority e Interrupt Enable): Utilizados na programação das interrupções; DPH e DPL (Data Pointer High e Data Pointer Low): Os dois juntos formam o DPTR (Data Pointer) que permite apontar endereços da memória de programa e da memória RAM externa; SP (Stack Pointer): Apontador da pilha de endereços de retornos das subrotinas e interrupções; PCON (Power Control Register): Utilizado para alternar os modos de funcionamento em relação ao consumo de potência. Prof. Carlos E. Capovilla - CECS/UFABC 16
Registradores F.E. (Periféricos) SBUF (Serial Buffer): Interface Mc com a saída / entrada serial; SCON (Serial Port Control Register): Permite programar e controlar o periférico serial; TH0, TL0, TH1 e TL1 (Timer High e Timer Low, 0 e 1): Registradorers de 8 bits que em conjunto formam os dois timers de 16 bits cada; TCON (Timer Control Register): Permite controlar os timers; TMOD (Timer Mode Register): Permite programar os modos de atuação dos timers. Prof. Carlos E. Capovilla - CECS/UFABC 17
Memória de dados interna O endereçamento é feito com 8 bits. Chips com 128 bytes de RAM não possuem a área I (Apenas Endereçamento Indireto) Área A: 128 bytes inferiores (00h a 7Fh), acessíveis por endereçamento direto e indireto (existe em toda a família MCS-51) Área D : SFR (special function register) acessível por endereçamento direto (80h a FFh) também existe em todos os membros da família MCS-51 Área I : 128 bytes superiores (80h a FFh acessível somente por endereçamento indireto, só existe nos chips de 256 bytes de RAM interna (8032,8052,...)). Prof. Carlos E. Capovilla - CECS/UFABC 18
Memória de dados interna Exemplos: Escrever AAh na Porta 0 (P0 = 80h ----- área D) mov 80h,#0AAh Escrever AAh no endereço 80h da RAM (área I de um microcontrolador com 256 bytes de RAM interna) mov R0,#80h mov @R0,#0AAh Prof. Carlos E. Capovilla - CECS/UFABC 19
Utilização de outros bancos Ao se resetar a CPU, RS1 e RS0 são 0, portanto o banco de registradores 'default' é o Banco 0. O reset inicializa o Stack Pointer (SP) na posição 07h, e é incrementando a cada vez que é usado. Para que se possa usar mais que um banco de registradores, o SP deve ser inicializado no programa em uma outra posição da RAM (por exemplo 2Fh). Prof. Carlos E. Capovilla - CECS/UFABC 20
Exemplos de Endereçamento Cada uma dessas posições de memória pode também ser acessada direta ou indiretamente por byte. Exemplo: a) Endereçamento Direto mov 2Fh, 0BAh b) Endereçamento Indireto mov R0,#2Fh mov @R0,0BAh Prof. Carlos E. Capovilla - CECS/UFABC 21
Memória endereçável a Bit Endereços individuais dos Bits: Exemplo : Setar o bit 2 da posição 21h setb 0Ah ou setb 21h.2 Cada uma dessas posições de memória pode também ser acessada direta ou indiretamente por byte. Exemplo: mov 20h,0AAh mov R0,#20h mov @R0,0AAh Prof. Carlos E. Capovilla - CECS/UFABC 22
Área de dados (Scratch Pad) As posições de 30h a 7Fh da RAM interna, são disponíveis para leitura e escrita, através de endereçamento direto e indireto. Prof. Carlos E. Capovilla - CECS/UFABC 23
Geração e monitoria do clock Ck -> 3,5 à 40MHz Típico -> 12MHz O 8051 possui internamente um circuito oscilador simples (incompleto!), oferecendo duas possibilidades de clock distintas, sendo uma externa e outra interna. Para o uso de oscilador externo deve-se aterrar o pino 19 e injetar o sinal externo no pino 18 que, desta forma, não atuará no gerador interno. Para usarmos o clock gerado internamente devemos intercalar entre os pinos 18 e 19 um cristal com filtro cerâmico na freqüência desejada Prof. Carlos E. Capovilla - CECS/UFABC 24
Ciclo de Máquina / Busca / Execução Prof. Carlos E. Capovilla - CECS/UFABC 25
Ciclos de Máquina Prof. Carlos E. Capovilla - CECS/UFABC 26
Ciclos de Máquina Prof. Carlos E. Capovilla - CECS/UFABC 27
Busca e Execução Para buscar uma instrução na Memória, o microprocessador/microcontrolador gasta um determinado tempo chamado de Ciclo de Busca. Para executar a instrução buscada, o Microprocessador/microcontrolador gasta outro tempo determinado chamado de Ciclo de Execução. Prof. Carlos E. Capovilla - CECS/UFABC 28
Detalhando a Busca e Execução Ciclo de Busca: operação de leitura de uma instrução a partir da posição de memória cujo endereço é definido pelo conteúdo do PC. Nesse ciclo o conteúdo do PC é incrementado de uma, duas ou três unidades. Isso depende do tamanho da instrução; Ciclo de Execução: executa a instrução (operações de movimentação de informação, operações aritméticas e lógicas, etc.). T i M 2 M 3 Ciclo de busca M1 Ciclo de execução Ciclo de instrução Prof. Carlos E. Capovilla - CECS/UFABC 29
Referências: D. E. C. NICOLOSI, Microcontrolador 8051 Detalhado, Erica, 8a Ed., 2007. STEWART, James W; MIAO, Kai X. The 8051 microcontroller: hardware, software, and interfacing. 2 ed. Upper Saddle River, N.J: Prentice Hall, c1999. USP/SC - Material on line - Disponível em: http://iris.sel.eesc.usp.br UFG/GO Material on line - Disponível em: http://www.emc.ufg.br/~jwilson/teoria.html USP/Poli Material on line - Disponível em: http://sites.poli.usp.br/d/pcs2529/index_arquivos/8051.pdf Prof. Carlos E. Capovilla - CECS/UFABC 30