Intel 8051O Intel MCS-51 (comumente chamado de Intel 8051) faz parte de uma família de microcontroladores de 8 bits lançada pela Intel em meados de 1980. É conhecido pela sua facilidade de programação, utilizando a linguagem Assembly ou até mesmo a linguagem C. É tido como o microcontrolador mais popular do mundo, pois existem milhares de aplicações para o mesmo, usado majoritariamente em sistemas embarcados. Existem pelo menos dois mil fabricantes produzindo variantes e clones do modelo. Atualmente possui diversos modelos clones sendo produzidos por empresas diversas à Intel. Por ser um microcontrolador CISC, oferece um conjunto de instruções muito vasto que permite executar desde um simples programa até um mais complexo com rede, sendo baseado na arquitetura de Harvard. A família foi continuada em 1996, com o avançado MCS-151 de 8 bits, e o microcontrolador compatível com binário, de 8/16/32 bits, MCS-251. Apesar da Intel terminar a fabricação dos MCS-51, MCS-151 e MCS-251, até hoje microcontroladores derivados dos anteriores continuam populares. Alguns derivados oferecem um processador de sinal digital. Além dos componentes físicos, diversas empresas disponibilizam núcleos de propriedade intelectual derivadas do MCS-51 para uso em FPGAs (field-programmable gate array) ou ASICs (application-specific integrated circuit). EstruturaA família MCS-51 da Intel, foi desenvolvida utilizando a tecnologia NMOS, suas versões posteriores são identificadas por uma letra C em seu nome (por exemplo, 80C51), desenvolvidas com a tecnologia CMOS, garantindo a estes dispositivos um menor consumo de energia quando alimentados por bateria. Em sua composição interna, também possui uma memória ROM, que é tida exclusivamente para armazenar o programa que a CPU executará. Sua utilização tornou-se inviável para alguns projetistas da época, pois como as aplicações precisavam ler e gravar dados em tempo de execução, era preciso que uma memória RAM externa fosse utilizada. Em alguns casos, o Intel 8052 foi usado como alternativa, é o mesmo que o Intel 8051, exceto com outro temporizador, RAM e ROM adicionais. O Intel 8031 é um membro da família que não possui memória interna de programa, embora toda a arquitetura interna seja a mesma. As características de hardware e software da família 8051 permitem a manipulação de bits com extrema facilidade e possibilitam o desenvolvimento de sistema microprocessado de um único chip. AplicaçõesA família MCS-51 da Intel, foi desenvolvida utilizando a tecnologia NMOS, suas versões posteriores são identificadas por uma letra C em seu nome (por exemplo, 80C51), desenvolvidas com a tecnologia CMOS, garantindo a estes dispositivos um menor consumo de energia quando alimentados por bateria. Em sua composição interna, também possui uma memória ROM, que é tida exclusivamente para armazenar o programa que a CPU executará. Sua utilização tornou-se inviável para alguns projetistas da época, pois como as aplicações precisavam ler e gravar dados em tempo de execução, era preciso que uma memória RAM externa fosse utilizada. Em alguns casos, o Intel 8052 foi usado como alternativa, é o mesmo que o Intel 8051, exceto com outro temporizador, RAM e ROM adicionais. O Intel 8031 é um membro da família que não possui memória interna de programa, embora toda a arquitetura interna seja a mesma. As características de hardware e software da família 8051 permitem a manipulação de bits com extrema facilidade e possibilitam o desenvolvimento de sistema microprocessado de um único chip. VersõesCom ROM:
Sem ROM:
80C550, 80C552, 80C562, 80C575, 80C592, 80C652, 80C851. EPROM:
Pinagem do MicrocontroladorPrincipais características funcionais do microcontrolador 8051
Uma adição ao núcleo 8051 foi um mecanismo de processamento booleano, que permite operações lógicas booleanas a nível de bit, a serem executadas diretamente e eficientemente em registradores internos, portas e certos locais da RAM. Essa adição ajudou a concretizar a popularidade do 8051 em controle de aplicações industriais, porque reduziu o tamanho do código em até 30%. Outra característica é a inclusão de quatro registradores selecionáveis por banco, que reduzem bastante a quantidade de tempo necessária para completar uma rotina de interrupção de serviço. Com apenas uma instrução, o 8051 pode trocar de banco de registradores, ao invés de executar a tarefa de mover os registradores críticos para a pilha, ou endereços de RAM designados, que pode demorar um bom tempo a mais. Esse banco de registradores também permitiu ao 8051 rapidamente executar uma troca de contexto. Organização da MemóriaO MCS-51 tem quatro tipos distintos de memória: RAM interna (IRAM), registradores de função especial, memória de programa e memória de dados.
O espaço de endereçamento para a memória é de 64Kbytes. No 8051, os 4KB mais baixos estão na própria memória interna de programa. Após o reset, a CPU inicia a execução no endereço 0x00, onde deve residir uma instrução de salto para o endereço de início do programa. Os 4KB mais baixos da memória de programa podem residir tanto internamente no chip como na memória externa. A seleção é feita pelo pino EA (External Access). Quando EA=1, a CPU busca as instruções de endereços 0x0000 a 0x0FFF na ROM interna e as instruções de endereços 0x1000 a 0xFFFF na memória externa.
O 8051 pode acessar dados tanto na Memória Interna como na Memória Externa de dados. A Memória Externa de Dados pode ter até 64 Kbytes e é acessada através da instrução MOVX. A Memória interna de Dados do 8051 é composta por 2 blocos de 128 bytes. O bloco inferior 0x00 até 0x7F é usado como RAM e pode ser endereçado direto ou indiretamente. O bloco superior 0x80 a 0xFF é um espaço reservado para mapear os registradores de funções especiais da CPU (SFR). Este bloco só pode ser acessado diretamente. O bloco inferior da Memória Interna de Dados 0x00 a 0x7F é dividido em 3 partes:
bytes
A RAM interna tem um espaço de endereços de 8 bits, e permite endereços do 0 até o 0xFF. Os endereços de 0x00 até 0x7F podem ser acessados diretamente. A maioria dos clones do 8051 também tem 256 bytes de IRAM. Os 32 bytes de 0x00 até 0x1F mapeiam na memória os 8 registradores R0-R7. 8 bytes são usados por vez, 2 bits de palavras de status selecionam entre quatro bancos de registradores possíveis.
Os registradores de funções especiais estão localizados no mesmo espaço de memória da IRAM, nos endereços 0x80 até 0xFF, e são acessados diretamente usando as mesmas instruções que a metade inferior da IRAM. Eles não podem ser acessados indiretamente via @R0 ou @R1, utilizando esses comandos será acessado indiretamente a metade superior da IRAM.
Registradores de funções especiaisOs registradores de funções especiais da CPU, os SRF (Special Function Register), com exceção do PC (Program Counter), estão alocados na parte superior da Memória Interna de Dados. São eles: ACC – Acumulador B – Utilizado como fonte e destino para operações de multiplicação e divisão. Stack Pointer (SP) – É o ponteiro da pilha da CPU. DPTR (Data Pointer) – É um registrador de 16 bits usado para o endereçamento da memória externa de dados. Eles ocupa dois espaços de 8 bits que podem ser acessados com DPL e DPH. P0, P1, P2, P3 – Usados para latch nas portas 0 a 3 de E/S. SBUF (Serial Data Buffer) – Utilizado para transmissão e recepção de dados para a porta serial. PSW (Program Status Word) – Contém as flags da CPU. (8-bit) Registradores de Temporização – Sob os pares (TH0, TL0), (TH1, TL1), (TH2, TL2). Cada par corresponde a um registrador de 16 bits. Registradores de Captura (apenas no 8052) – O par de registradores (RCAP2H, RCAP2L) são registradores de captura para o Timer 2 “Modo de Captura”. Registradores de Controle – IP, IE, TMOD, TCON, SCON e PCON são registradores de controle e estado do sistema de interrupção, da seção de temporização e da porta serial. Set de InstruçõesTodas as instruções contém de 1 a 3 bytes cada, consistindo de um byte de opcode inicial, seguido de até 2 bytes de operandos. 3/4 dos bytes de opcode estão associados a 16 instruções básicas de ULA. Um operando é flexível, enquanto o segundo (se houver) é especificado pela operação: o acumulador, uma constante imediata ou um endereço de RAM. Os últimos 4 bits do opcode especificam um dos seguintes modos de endereçamento, o bit mais significante especifica a operação:
Os valores restantes, 0-3, são usados para opcodes irregulares. As operações especificadas pelos 4 bits mais significativos são as seguintes. Nem todas suportam todos os modos de endereçamento; o modo imediato, em particular, não está disponível onde o operando flexível é gravado.
Apenas as instruções ADD, ADDC, e SUBB ligam flags de PSW. As funções INC, DEC, e instruções lógicas não ligam. A instrução CJNE modifica apenas o bit C, ao resultado da subtração do operando 1 menos o operando 2. Acesso à Memória ExternaOs acessos poder feitos tanto para a Memória de Programa quando para à Memória de Dados. O Sinal utilizado para “strobe” de leitura é o PSEN (Program Strobe Enable). Em um acesso externo com endereço de 16 bits, o byte de mais alta ordem do endereço é armazenado em P2 e o menos significativo em P0. Porta SerialA transmissão/recepção serial é feita através dos pinos TXD e RXD. O pino RXD é amostrado periodicamente e quando a porta serial detecta um “start-bit” válido, o dado correspondente é carregado no registrador SBUF. Na transmissão a CPU escreve o dado ser enviado em SBUF e a porta serial encarrega-se de transmiti-lo através do pino TXD. Na recepção, a porta serial encarrega-se de trazer o byte pelo pino RXD e colocar no SBUF. ConsumoPara aplicações onde o consumo de potencia é critico, as versões NMOS e CMOS possuem um modo de operação para redução de consumo. Nas versões NMOS, é feita através de uma fonte de alimentação externa conectada ao pino RST. Nas versões CMOS, há dois modos de operação para redução de consumo, o “Idle” e o “Power-Down”, os mesmos são ativados através do registrador PCON. Processadores relacionadosO predecessor do 8051, o 8048, foi utilizado no teclado do primeiro IBM PC, onde convertia o sinal das teclas em um sinal serial que era enviado a unidade principal do computador. O 8048 e derivados ainda são utilizados hoje em dia (2007) para modelos básicos de teclados. O 8031 foi uma versão de custo reduzido do original Intel 8051 que não possui nenhuma memória interna para programação (ROM). Este fato o torna o microcontrolador mais barato para implementação de projetos. A grande maioria dos kits didáticos são baseados no 8031. A facilidade de encontrar memórias EPROM e RAM de baixo custo o tornaram o microcontrolador mais utilizado nas universidades e cursos técnicos. O 8052 foi uma versão melhorada da versão original Intel 8051 que dispõe de 256 bytes de memória RAM interna ao invés dos 128 bytes, 8 kB de ROM ao invés dos 4 kB, e um terceiro timer de 16-bit. O 8032 possui as mesmas características exceto pela memória interna de programa . Referências bibliográficasSICA, Carlos (2006). Sistemas Automáticos com Microcontroladores 8031/8051. 1 1 ed. São Paulo - SP: Novatec. 192 páginas. ISBN 85-7522-083-7 PREDKO, Myke. Programming and Customizing the 8051 Microcontroller. 1. ed. New York - NY: McGraw-Hill, 1999. ISBN 0-07-134192-7. |