microcontrolador 8051 - utfpr
TRANSCRIPT
Microcontrolador 8051Microcontrolador 8051
MicrocontroladorMicrocontrolador80518051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Inicialmente fabricado pela INTEL, atualmente fabricado por várias empresas;
● Possui uma grande variedade de dispositivos, com diversas características, porém compatíveis em software;
● São a base para diversos dispositivos, como tocadores MP3, interfaces USB, Ethernet, etc.
● Possui uma arquitetura simples, sendo de fácil aprendizado;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Figura 1. Diagrama em blocos do microcontrolador 89S52. Fonte ATMEL2008.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Figura 2. Diagrama em blocos do microcontrolador 8051 genárico. Fonte VIEIRA2002.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Figura 3. Pinagem do microcontrolador 89S52. Fonte ATMEL2008.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Descrição dos pinos:Pino Nome E/S Função
32 a 39 P0.0 a P0.7 E/S O Port 0 é uma interface de E/S bidirecional com 8 bits individualmente endereçáveis em dreno aberto. Terminais que estejam no estado lógico 1 podem ser utilizados como entradas de alta impedância. O Port 0 também atua como barramento de dados e gera de maneira multiplexada a parte menos significativa dos endereços durante acessos às memórias externas de programa ou dados.
1 a 8 P1.0 a P1.7 E/S O Port 1 é uma interface de E/S bidirecional com 8 bits individualmente endereçáveis e resistores de pull-up internos. Terminais que estejam no estado lógico 1 podem ser utilizados como entradas. No 89S52, alguns pinos deste port possuem funções alternativas.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Descrição dos pinos:Pino Nome E/S Função
21 a 28 P2.0 a P2.7 E/S O Port 2 é uma interface de E/S bidirecional com 8 bits individualmente endereçáveis e resistores de pull-up internos. Terminais que estejam no estado lógico 1 podem ser utilizados como entradas. O Port 2 também gera a parte mais significativa dos endereços durante acessos às memórias externas de programa ou dados.
10 a 17 P3.0 a P3.7 E/S O Port 3 é uma interface de E/S bidirecional com 8 bits individualmente endereçáveis e resistores de pull-up internos. Terminais que estejam no estado lógico 1 podem ser utilizados como entradas. O Port 3 também funções alternativas em todos os pinos.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Descrição dos pinos:Pino Nome E/S Função
40 VCC Potencial de alimentação (+5v)
20 VSS Potencial de referência (terra).
9 RST E Quando aplicado nível lógico 1 a este terminal durante 2 ciclos de máquina (com o oscilador operando) ocorre o reset do microcontrolador. Um resistor interno conectado a VSS permite o power-on-reset com apenas um capacitor externo conectado a VCC.
19 XTAL1 Entrada do amplificador inversor do oscilador e entrada do gerador de clock interno.
18 XTAL2 Saída do amplificador inversor do oscilador.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Descrição dos pinos:Pino Nome E/S Função
29 PSEN S PROGRAM STORE ENABLE: Habilita o acesso à memória de programa externa durante a busca de instruções. Permanece em nível lógico 1 durante o acesso da memória de programa interna.
30 ALE S ADDRESS LATCH ENABLE: Fornece o sinal para armazenamento da parte menos significativa do endereço durante acessos às memórias externas de programa ou dados.
31 EA E EXTERNAL ACCESS: Quando em nível lógico 1, as instruções da memória de programa interna são executadas. Quando em nível lógico 0, todas as instruções são buscadas na memória de programa externa. No caso do 8031 este terminal deve sempre estar em nível lógico 0.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Funções alternativas do Port 3:Pino Nome Função
P3.0 RXD/data
Receptor da interface serial assíncrona ou entrada e saída de dados da interface serial síncrona.
P3.1 TXD/clock
Transmissor da interface serial assíncrona ou saída de clock da interface serial síncrona.
P3.2 INT0 Entrada de interrupção externa 0 ou sinal de controle para o contador 0.
P3.3 INT1 Entrada de interrupção externa 1 ou sinal de controle para o contador 1.
P3.4 T0 Entrada externa para o contador 0.
P3.5 T1 Entrada externa para o contador 1.
P3.6 WR Sinal de escrita na memória externa de dados.
P3.7 RD Sinal de leitura na memória externa de dados.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Funções alternativas do Port 1:Pino Nome Função
P1.0 T2 Entrada externa para o contador 2.
P1.1 T2EX Sinal de trigger para captura/recarga do contador 2, controle de direção.
P1.5 MISO Interface SPI (usada para programação)
P1.6 MOSI Interface SPI (usada para programação)
P1.7 SCK Interface SPI (usada para programação)
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Organização da Memória:
– O 8051 possui 128 bytes de memória RAM interna, mais 128 bytes de registradores mapeados em memória (RAM);
– Possui 0, 4, 8, … kbytes de memória ROM interna. Esta memória pode ser ROM, EPROM, FLASH;
– Pode endereçar até 64 kbytes de memória de programa externa (normalmente algum tipo de ROM);
– Pode endereçar até 64 kbytes de memória de dados externa (normalmente algum tipo de RAM);
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Memória de Programa:
– Após o reset, o 8051 busca a primeira instrução no endereço 0000h;
– Este endereço poderá ser da memória de programa interna ou da memória de programa externa;
● Se EA for igual a 1, o 8051 busca a instrução na memória interna;
● Se EA for igual a 0, o 8051 busca a instrução na memória externa;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Mapa de Memória (exemplo para dispositivo com 4 kbytes de memória ROM interna):
ROMINTERNA
0000h
0FFFh1000h
ROMEXTERNA
FFFFh
0000h
ROMEXTERNA
FFFFh
PSEN = 0
PSEN = 0
PSEN = 1
EA = 1 EA =0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Memória de Dados:
– O 8051 possui 256 bytes de memória interna:● Os primeiros 128 bytes (endereços de 0 a 127)são
memória de uso geral, sendo usados inclusive para a pilha;
● Os 128 bytes superiores (endereços de 128 a 255) são os registradores internos do 8051;
– O 8051 pode acessar até 64 kbytes de memória de dados externa, mas esta memória não pode ser usada como pilha;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Memória de Dados:
– Os 128 bytes de uso geral são divididos em três regiões:
● Os endereços de 0 a 31 (1Fh) formam 4 bancos de oito registradores;
● Os endereços de 32 (20h) a 47 (2Fh) formam uma área de bits que podem ser acessados individualmente, através de instruções específicas;
● Os endereços de 48 (30h) a 127 (7Fh) formam a memória de dados propriamente dita. Esta região deverá incluir a pilha de dados;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Bancos de Registradores:
– O banco de registradores ativo é selecionado pelos bits RS1 e RS0 do registrador PSW;
– Estes registradores podem ser usados para dados (variáveis), ponteiros (indicam um endereço de memória) ou índice;
– Possem instruções específicas, reduzindo o tamanho do código:
● Ex: mov @R0, A; copia o conteúdo do registrador ;no endereço de memória interna indicado
; pelo registrador R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Bancos de Registradores:
R0
R1
R2
R3
R4
R5
R6
R7
Banco 0
Banco 1
Banco 3
Banco 2 MemóriaRAM
Intrerna
RS1=0RS0=0
RS1=0RS0=1
RS1=1RS0=0
RS1=1RS0=1
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Bancos de Registradores - Banco 0 (RS1=0 e RS0=0):
– Estão localizados fisicamente nos endereços de 0h a 7h;
R0
R1
R2
R3
R4
R5
R6
R7
Banco 0
Banco 1
Banco 3
Banco 2
00h
01h
02h
03h
04h
05h
06h
07h
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Bancos de Registradores - Banco 1 (RS1=0 e RS0=1):
– Estão localizados fisicamente nos endereços de 8h a Fh;
R0
R1
R2
R3
R4
R5
R6
R7
Banco 0
Banco 1
Banco 3
Banco 2
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Bancos de Registradores - Banco 2 (RS1=1 e RS0=0):
– Estão localizados fisicamente nos endereços de 10h a 17h;
R0
R1
R2
R3
R4
R5
R6
R7
Banco 0
Banco 1
Banco 3
Banco 2
10h
11h
12h
13h
14h
15h
16h
17h
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Bancos de Registradores - Banco 3 (RS1=1 e RS0=1):
– Estão localizados fisicamente nos endereços de 18h a 1Fh;
R0
R1
R2
R3
R4
R5
R6
R7
Banco 0
Banco 1
Banco 3
Banco 2
18h
19h
1Ah
1Bh
1Ch
1Dh
1Eh
1Fh
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Registradores de Função Especial:
– São responsáveis pelo controle e execução das instruções de programa;
– Também são responsáveis pela configuração dos periféricos internos do 8051;
– Estão situados na parte alta da memória RAM interna, nos endereços de 128 (80h) a 255 (FFh);
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Registradores de Função Especial:
– Program Counter (PC): Registrador de 16 bits, possui o endereço da memória de programa que possui a próxima instrução a ser executada pelo 8051;
– Program Status Word (PSW): Registrador de 8 bits, contém os flags indicando alguma ocorrência na última instrução aritmética executada e os bits de seleção do banco de registradores ativo;
– Stack Pointer (SP): Registrador de 8 bits, contém o endereço do topo da pilha;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Registradores de Função Especial:
– Stack Pointer (SP): Registrador de 8 bits, contém o endereço do topo da pilha;
– Acumulador (A ou ACC): Registrador de 8 bits, é o registrador usado nas operações lógicas e aritméticas;
– Registrador B (B): Registrador de 8 bits, usado nas operações de multiplicação e divisão. Pode ser usado como um registrador de uso geral;
– Data Pointer (DPTR): Registrador de 16 bits formado pela junção de dois registradores de 8 bits, DPH e DPL. Este registrador é usado para acessar a memória externa;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Registradores de Função Especial:
– Ports (P0, P1, P2 e P3): Registradores de 8 bits que contém o valor presente nos pinos de entrada e saída do 8051 quando estes pinos estão sendo usados como pinos de entrada e saída;
– Interrupt Enable(IE): Registrador de 8 bits, usado para habilitar ou desabilitar as interrupções do 8051;
– Interrupt Priority (IP): Registrador de 8 bits que determina o nível de prioridade (alto ou baixo) das interrupções do 8051;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Registradores de Função Especial:
– Power Control (PCON): Registradores de 8 bits, controla os modos de economia de energia do 8051;
– Timer Control (TCON): Registrador de 8 bits, usado para configurar e controlar os temporizadores/ contadores TC0 e TC1;
– Timer Mode (TMODE): Registrador de 8 bits, define o modo de operação dos temporizadores/ contadores TC0 e TC1;
– Timers (TH0, TL0, TH1 e TL1): Registradores de 8 bits que contém o valor da contagem dos temporizadores/ contadores 0 e 1;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Registradores de Função Especial:
– Serial Control (SCON): Registradores de 8 bits, controla o modo de operação da interface serial;
– Serial Buffer (SBUF): Registrador duplo de 8 bits, contém o valor sendo transmitido e recebido pela interface serial. São dois registradores acessados pelo mesmo endereço;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Acesso a memória externa:
– O 8051 pode acessar até 64k bytes de memória ROM e até 64k bytes de memória RAM externa;
– Para isso utiliza os ports 0, 2 e 3;
– Neste caso, estes ports não podem ser usados como interface de entrada e saída;
– Pode-se implementar interfaces de entrada e saída mapeadas em memória;
– O port 0 atua como barramento de dados e barramento de endereços (parte baixa) multiplexado.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Acesso a memória externa:
Figura 4. Pinagem do microcontrolador 89S52. (Fonte própria).
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Ciclo de Leitura da Memória de Programa Externa:
ALE
PSEN
PORT 0
PORT 2
A0:A7
A8:A15
Instrução
A8:A15
A0:A7 Instrução
ArmazenaA0:A7 no latch
ArmazenaA0:A7 no latch
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Ciclo de Leitura da Memória de Dados Externa:
ALE
PSEN
PORT 0
PORT 2
A0:A7 (DPL)
A8:A15 (DPH)
DADO
A8:A15 (DPH)
A0:A7 (PCL)
RD
ArmazenaA0:A7 no latch
Lê o DadoDa memória
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● Ciclo de Leitura da Memória de Dados Externa:
ALE
PSEN
PORT 0
PORT 2
A0:A7 (DPL)
A8:A15 (DPH)
DADO
A8:A15 (DPH)
A0:A7 (PCL)
WR
ArmazenaA0:A7 no latch
Escreve o Dado
na memória
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● CLOCK
– O 8051 possui um gerador de clock interno;
– Basta ligar um cristal nos pinos XTAL1 e XTAL2 e dois capacitores entre estes terminais e o GND;
– Pode-se usar uma fonte de clock externa. Neste caso, o pino XTAL1 é ligado ao GND e o pino XTAL2 ao gerador de clock;
– A frequência de clock é dividida internamente por 12, assim, um ciclo de máquina equivale a 12 ciclos de clock;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● RESET
– O reset é ativado quando o pino de reset (pino 9) fica em nível alto por mais de dois ciclos de máquina (24 ciclos de clock);
– O reset zera os registradores A, B, PSW, DPTR, PC e os registradores dos temporizadores/contadores;
– O registrador SP (stack pointer) é carregado com o valor 07h;
– Os ports são inicializados com o valor FFh, para ficarem configurados como entrada;
– O registrador SCON é zerado e o registrador SBUF possui valor indeterminado;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● RESET
– Os registradores são carregados com o valor XXX00000b;
– A memória RAM interna não é alterada;
– Um resistor interno ligado a GND permite que se faça um sistema POR (reset ao ligar) com apenas um capacitor de 10uF ligado entre o pino 9 (pino de reset) e o Vcc;