























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
tutorial microcontrolador 8051 detalhado
Tipologia: Notas de estudo
1 / 31
Esta página não é visível na pré-visualização
Não perca as partes importantes!
























Alessandro de Souza Lima Vagner Santos da Rosa
NOTA IMPORTANTE: Esta documentação está em processo de revisão. Estamos trabalhando duro para assegurar que todas as informações contidas neste documento estejam corretas. Não nos responsabilizamos por qualquer dano ou perda provocado pelo uso deste material.
1 - Introdução aos Microcontroladores
Inicialmente, é importante frisarmos três conceitos:
a) Microprocessador: chip responsável pelo processamento em um microcomputador. É um elemento complexo, contendo, entre outras coisas, uma unidade lógica e aritmética (ULA) e diversos registros (registradores) especiais.
b) Microcomputador-de-um-só-chip: como o nome indica, reúne no mesmo chip os diversos elementos de um microcomputador: microprocessador, RAM, ROM, temporizadores, contadores, canal de comunicação serial e portas de I/O.
c) Microcontrolador: microcomputador-de-um-só-chip que pode ainda conter elementos para uso industrial, tais como conversores A/D e D/A, PLL, PWM, etc.
1.1 – Motivação para o Estudo de um Microcontrolador
O microcontrolador, hoje em dia, é um elemento indispensável para o engenheiro elétrico, eletrônico ou ainda para o técnico de nível médio da área, em função de sua versatilidade e da enorme aplicação. Entre algumas das aplicações de um microcontrolador podemos citar automação industrial, telefones celulares, auto-rádios, fornos de microondas e videocassetes. Além disso, a tendência da eletrônica digital é de se resumir a microcontroladores e a chips que concentram grandes circuitos lógicos, como os PLDs (Programmable Logic Devices). Para sistemas dedicados, o microcontrolador apresenta- se como a solução mais acessível, em função do baixo custo e facilidade de uso.
O 8051, da Intel, é, sem dúvida, o microcontrolador mais popular atualmente. O dispositivo em si é um microcontrolador de 8 bits relativamente simples, mas com ampla aplicação. Porém, o mais importante é que não existe somente o CI 8051, mais sim uma família de microcontroladores baseada no mesmo. Entende-se família como sendo um conjunto de dispositivos que compartilha os mesmos elementos básicos, tendo também um mesmo conjunto básico de instruções.
2 - Sistemas Microprocessados
Sistemas microprocessados são aqueles que têm por elemento central um microprocessador. O microprocessador funciona como um sistema seqüencial síncrono, onde a cada pulso, ou grupos de pulsos de clock, uma instrução é executada. Entre os microprocessadores mais conhecidos podemos citar o 8080 e 8085, Z-80, 8088, 8086, 80286, 68000, 80386 e superiores.
Embora já existam microprocessadores que trabalhem a centenas de MHz, o 8051 utiliza tipicamente um clock de 12 MHz, com tempos de execução de cada instrução variando entre 1μs e 4μs.
2.1 – Diagrama em Blocos de um Sistema Genérico com Microprocessador
Seleção de Endereços: lógica para escolher qual memória ou periférico o microprocessador vai utilizar.
Portas de I/O: sua função é a comunicação com o mundo externo. Através delas dispositivos como teclados, impressoras, displays, entre outros, comunicam-se com o sistema.
3 - Hardware
Como já foi citado, o 8051 é um microcontrolador de ampla utilização. O mesmo tem dois modos básicos de funcionamento:
a) modo mínimo, onde somente recursos internos são utilizados pela CPU. Neste modo, estão disponíveis 4 KB de ROM para memória de programa e 128 bytes de RAM para memória de dados. O modo mínimo possui a vantagem (além da economia de componentes e espaço físico) de poder utilizar as 4 portas de 8 bits cada para controle (I/O);
b) modo expandido. Neste modo, a memória de programa (ROM), a memória de dados (RAM) ou ambas podem ser expandidas para 64 kB, através do uso de CIs externos. No entanto, apresenta a desvantagem de "perder" duas das 4 portas para comunicação com as memórias externas.
A pinagem para o 8051, é mostrada abaixo na figura 3.1:
Figura 3.
Um exemplo de utilização do modo expandido é mostrado na figura 3.2. No caso, estão sendo utilizadas externamente tanto memória de programa como memória de dados, mas é possível a utilização de apenas uma delas (somente a ROM).
tem a mesma pinagem que o 8051, o mesmo possui o pino EA, que deverá sempre ser utilizado em nível lógico baixo.
Retornando a figura 3.2, nela estamos utilizando 8kB de RAM externa, além dos 256 bytes de RAM interna. Além disso, temos um total de 8kB de memória ROM que, no caso do 8051, pode estar sendo utilizado apenas no CI externo ou com os 4096 bytes menos significativos em memória interna e os 4096 bytes mais significativos na memória externa.
Ainda em relação à figura 3.2, para fazer uma leitura na ROM externa, o pino PSEN será levado a nível baixo, para fazer uma leitura na RAM externa, o pino RD será levado a nível baixo e, para fazer uma escrita na RAM externa, o pino WR será levado a nível baixo.
4 - A Organização da Memória
As figuras 4.1 e 4.2 ilustram, respectivamente, a organização da memória de programa e da memória de dados do 8051.
É importante salientar que, diferentemente de outros sistemas baseados em microprocessador, onde cada endereço de memória identifica uma única posição física, no 8051 o mesmo endereço hexadecimal pode identificar 3 posições físicas diferentes (e até 4, no caso do 8052, que tem 256 bytes de RAM interna). Por exemplo, temos o endereço 23H na RAM interna, o endereço 23H na RAM externa e o endereço 23H na ROM externa. Mesmo com esses endereços "iguais", não há risco de confusão, pois as instruções e o modo de endereçamento são diferentes. Para deixar mais claro, vamos
Como pode ser visto pela figura, os bytes 20 a 2F da RAM interna tem bits endereçáveis individualmente. Podemos, com os mesmos, executar várias instruções de bits. Por
exemplo, a instrução SETB 3CH coloca em nível alto o bit 3C ou seja, o bit 4 da posição de memória 27 H da RAM interna. 5 - Os Registros de Função Especial Os Registros de Função Especial (SFRs - Special Function Registers) são responsáveis pela maior parte do controle do 8051. Os mesmos são mostrados na figura 5.1, sendo que alguns deles possuem bits endereçáveis. Note que alguns dos bits endereçáveis possuem inclusive um nome mnemônico, para maior facilidade de desenvolvimento de software em compiladores.
Figura 5.
PSW.7 - Flag de carry para bit 7 da ALU; PSW.6 - Flag de carry auxiliar para bit 3 da ALU ( para operações BCD ); PSW.5 - Flag 0 - Flag de status de propósito geral ( definido pelo usuário ); PSW.4 - Bit 1 de seleção de banco PSW.3 - Bit 0 de seleção de banco PSW.2 - Flag de overflow para operações aritméticas; PSW.1 - PSW.0 - Flag de paridade do acumulador ( 1=ímpar, 0=par ).
Este registro contém o bit de carry, carry auxiliar, para operações BCD, dois bits de seleção de banco de registros, flag de overflow, bit de paridade e dois flags de status definidos pelo usuário. O bit de carry é usado em operações aritméticas e, também, serve como "acumulador" para operações booleanas. Os bits RS0 e RS1 são usados para selecionar um dos quatro bancos de registros mostrado na figura 4.3 (pg.6). As instruções referem-se a estas localizações de RAM como registros de R0 a R7. A seleção de qual dos quatro bancos estará sendo utilizado é feita com base aos conteúdos de RS0 e RS1, durante o tempo de execução do programa.
RS1 RS0 BANCO Endrereço na RAM interna 0 0 0 00 h - 07 h 0 1 1 08 h - 0F h 1 0 2 10 h - 17 h 1 1 3 18 h - 1F h
O bit de paridade reflete o número de 1’s do acumulador. P = 1 se o acumulador tiver um número ímpar de 1’s e P = 0, se tiver um número par. Assim o número de 1’s do acumulador mais P será sempre par. O flag de overflow é afetado por operações aritméticas.
Além do flags usuais, como CY, AC , OV, P, tem dois flags de propósito geral que não estão associados com qualquer estado ou função da CPU. O bit PSW.5 ( F0 ) e PSW. ( sem nome ). O programador pode usar F0 ( PSW.5 ) como um bit flag para aplicação definida pelo usuário. Pode ser setado ou ressetado pelo programa como uma função de alguma condição especial ou ser lido de um pino de alguma porta. Documentos da INTEL indicam que PSW.1 esta reservado para uma utilização futura e é recomendado que não seja utilizado em programas Note que o PSW não tem flag ZERO, mas isto não é problema porque o 8051 tem instrução específicas para testar se o acumulador é zero. Exemplos: JZ rel. - desvia se o acumulador for zero JNZ rel - desvia se o acumlador não for zero
6.4 – Modo de endereçamento de registros específicos ou ESPECÍFICO A REGISTRO Algumas instruções referem-se a certos registros. Por exemplo algumas instruções operam o acumulador, o registro DPTR, etc., assim nenhum byte de endereço será necessário, o opcode já define qual o registro que será afetado. Exemplo 6.4.a : DA A Faz o ajuste decimal do acumulador Exemplo 6.4.b : CLR A A ← 00h ( zera o acumulador ) Exemplo 6.4.c : INC DPTR DPTR ← DPTR + 1 6.5 – Modo de endereçamento IMEDIATO ou CONSTANTE IMEDIATA Neste modo de endereçamento o opcode é seguido de um valor de uma constante que será operada. Na linguagem assembly, este modo é indicado através do simbolo #. Exemplo 6.5.a : MOV B, # B ← FCh Exemplo 6.5.b : MOV A, # A ← 64h Exemplo 6.5.c : MOV DPTR, #05FEh DPTR ← 05FEh Obs.: # indica valor constante; Quando após a constante aparecer um " H", o valor da constante é hexadecimal, quando tiver um " B" é binário, e quando a letra for omitida ou aparecer um " D" o valor será decimal. 6.6 – Modo de endereçamento INDEXADO Somente a memória de programa ( ROM ) poderá ser acessada com endereçamento indexado e somente poderá ser lida. O endereço efetivo é a soma do acumulador e um registro de 16 bits ( DPTR ou PC ). Este modo é usado para leituras de tabelas colocadas na memória de programa ( ROM ). Por exemplo tabelas de conversão, ou de mensagens. Um registro base de 16 bits, tal como o registro DPTR, ou contador de programa ( PC ), aponta para a base da tabela e o acumulador recebe o deslocamento dentro da tabela. Assim o endereço de entrada da tabela será formado com a soma do conteúdo do acumulador e o registro base. Exemplo 6.6.a : MOVC A, @ A + DPTR
A ← ( A+DPTR ) da ROM Exemplo 6.6.b : MOVC A, @ A + PC A ← ( A + PC ) da ROM Outro tipo de endereçamento indexado é usado nas instruções de "case jump". Neste caso o endereço destino do salto (jump) é calculado com a soma do conteúdo do acumulador e do conteúdo do apontador base. Assim o valor base do endereço do salto será carregado no apontador base ( DPTR ) e o valor de indexação do salto que realiza a condição (case) será carregado no acumulador. Exemplo : JMP @ A + DPTR Faz um salto para o endereço dador por A + DPTR PC ← A + DPTR 7 - RESET NO 8051
O RESET é conseguido mantendo-se nível alto no pino 9 ( RST ) por pelo menos dois ciclos de máquina ( 24 pulsos de clock ). Para a versão CMOS ( 80C51 ) o resistor se torna desnecessário. Se existir não interfere em nada. O RESET afetará os registros de função especial da seguinte forma: REGISTRO VALOR REGISTRO VALOR PC 0000 H TMOD 00 H ACC 00 H TCON 00 H B 00 H TH0 00 H PSW 00H TL0 00 H SP 07 H TH1 00 H
C/T 0 000B h 4240 h INT 1 0013 h 4250 h C/T 1 001B h 4260 h SERIAL 0023 h 4270 h
Quando atende uma interrupção, o PC é salvo no Stack (pilha). O acumulador, PSW e demais registros não são salvos. As interrupções no 8051 são MASCARADAS , ou seja, podem ser desabilitadas pelo software. O registro responsável pelas habilitações da interrupções é o IE ( Interrupt Enable ).
AFh AEh ADh ACh Abh AAh A9h A8h A8 H EA x x ES ET1 EX1 ET0 EX0 IE bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
BFh BEh BDh BCh BBh BAh B9h B8h B8 H x x x PS PT1 PX1 PT0 PXO IP
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 "0" Prioridade BAIXA / "1" Prioridade ALTA
INTERRUPÇÃO PRIORIDADE INTERNA Externa 0 MAIOR Temporizador 0 Externa 1 Temporizador 1 Serial MENOR
As interrupções EXTERNAS no 8051 podem ser ativadas por transição 1 para 0 ( borda de descida ) ou por nível ( nível lógico baixo ). O ajuste da forma de ativar as interrupções externas estão no registro TCON ( Controle do Temporizador ).
8Fh 8Eh 8Dh 8Ch 8Bh 8Ah 89h 88h 88 H TF1 TR1 TF0 TRO IE1 IT1 IE0 IT0 TCON bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
IT 0 = "0" - ativa a interrupção com nível lógico baixo no pino INT0\ ( pino P3.2 ); = "1" - ativa a interrupção com borda de descida no pino INT0;