Professional Documents
Culture Documents
1. Microcontroladores
Microcontrolador o nome dado ao componente que incorpora em um s "chip" todos os elementos
necessrios a um microcomputador . Deve ter :
CPU , Memria e Interfaces
As interfaces podem ser as mais diversas :
Contador / temporizador
conversor AD / DA
I/O paralela
20 ____
Vss ______
Terra
21 a 28__
29 _____
30 ____
31 _____
ALE
__
EA
_____
______
32 a 39 __
40 _____
Vcc _____________
5V
0=externa
1=interna
Os pinos de P0.0 a P0.7 podem tambm ser usados como Barramento de Dados (D0 a D7) ou como os 8 Bits
menos significativos do Barramento de Endereos (A0 a A7) multiplexados, ou seja, os pinos anotados como
AD0 a AD7 ora podem trafegar dados e ora podem trafegar endereos. preciso utilizar lgica externa para
demultiplexar o Barramento de Dados do de Endereos.
Os pinos P2.0 a P2.7 podem ser usados como a parte mais significativa do Barramento de Endereos (A8 a
A15) que juntamente com a parte menos significativa completam o nmero de linhas necessrias para
enderear 64Kbytes, ou seja, 16 linhas.
Cada interrupo causa um salto para um endereo fixo na memria de programa (ROM , EPROM ,...) a
partir do endereo 0003 . Existem 8 bytes de intervalo entre dois endereos consecutivos, para que possa
ser colocada uma rotina de atendimento de interrupo de um JUMP caso no haja espao suficiente . Se
as interrupes no forem usadas os endereos podem ser usados para o programa geral.
Rom Interna
EA = Vcc
4K
8K
16 K
32 K
Endereamento Interno
Endereamento Externo
0000h
0000h
0000h
0000h
1000h
2000h
4000h
8000h
a
a
a
a
0FFFh
1FFFh
3FFFh
7FFFh
a
a
a
a
FFFFh
FFFFh
FFFFh
FFFFh
Exerccio :
Com o microcontrolador 87C51 desenvolver o mapeamento externo de memria de programa tal que seja
tambm usado o endereamento interno .
(considerar bloco interno = bloco externo)
Soluo :
87C51 _____ 4 Kb de EPROM Interna ___ endereamento externo = 1000h a FFFFh
Decodificador de endereos
Instrues :
Movx a,@Ri
Movx @Ri,a
Ri = R0 ou R1
Caso seja utilizado o modo 8 bits, apenas 256 bytes podem ser endereados (00h a FFh). Este endereo deve
ser previamente armazenado em R0 ou R1 .
Bits de pgina
Um esquema que pode ser utilizado para acessar mais de 256 bytes externos dividir a RAM externa em
pginas de 256 bytes cada atravs , por exemplo , da porta P2
Instrues :
movx a,@DPTR
movx @DPTR,a
DPTR um registrador de 16 bits , logo qualquer posio de 0000h a FFFFh externa pode ser acessada tanto
na escrita como na leitura .
Exemplo :
a. Armazenar 3Fh na posio 34CBh da memria externa :
mov DPTR,#34CBh
mov a,#3Fh
movx @DPTR,a
b. Ler o contedo da posio 13F4h da memria externa :
mov DPTR,#13F4h
movx a,@DPTR
Exercicos:
a. como acessar um endereo de 8 bits na memria externa mapeada para endereamento de 16 bits ?
Soluo :
Somente os 256 primeiros bytes so acessveis :
movx @Ri,a (escreve) ou movx a,@Ri (l)
b. Como acessar com endereamento de 16 bits uma memria externa mapeada para endereamento de 8 bits
?
Soluo :
O DPTR deve conter os endereos 0000h a 00FFh e faz-se a seleo de pgina normalmente :
mov P2,# end. pgina
movx a,@DPRT (ler) ou movx @DPRT,a (escrever)
Chips com 128 bytes de RAM no possuem a rea (Apenas Endereamento Indireto)
rea A:
128 bytes inferiores (00h a 7Fh) , acessveis por endereamento direto e indireto (existe em
toda a famlia MCS-51)
rea D :
SFR (Special Function Register) acessvel por endereamento direto (80h a FFh) tambm
existe em todos os membros da famlia MCS-51
rea I :
128 bytes superiores (80h a FFh acessvel somente por endereamento indireto, s existe
nos chips de 256 bytes de RAM interna (80C32,80C52,...)).
Exemplos:
a. Escrever 0AAh na Porta 0 (P0 = 80h ----- rea D)
mov 80h,#0AAh
b. Escrever 0AAh no endereo 80h da RAM (rea I de um microcontrolador com 256 bytes de RAM interna)
mov R0,#80h
mov @R0,#0AAh
Bancos de registradores
Obs : Cada banco formado pelos registradores R0 a R7. A seleo entre os Bancos de registradores feita
pelos bits 3 e 4 do byte PSW (program status word)
Esse byte traz informaes sobre o estado da CPU e fica localizado no SFR.
Obs : Ao se resetar a CPU, RS1 e RS0 so 0 , portanto o banco de registradores 'default' o Banco 0. Alm
disso o reset inicializa o Stack Pointer (SP) na posio 07h, 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
posio da RAM (por exemplo 30h).
Exemplo:
mov SP,#30h
16 Bytes da rea A da RAM podem ser direcionadas diretamente a Bit .So as posies de 20h a 2Fh . Cada
Bit nesta rea possui um endereo individual podendo ser associado diretamente por uma instruo de Bit .
As instrues de Bit sao :
CLR bit___________zera o bit diretamente
SETB bit___________seta o bit diiretamente
CPL bit___________complementa o bit diretamente
ANL C,bit__________AND entre o bit e o carry
ANL C,/bit_________AND entre o complemento do bit e o carry
ORL C,bit_________OR entre o bit e o carry
ORL C,/bit_________OR entre o complemento do bit e o carry
MOV C,bit_________move o bit para o carry
MOV bit,C_________move o carry para o bit
JB
bit,rel________jmp para rel se bit = 1
JNB bit,rel________jmp para rel se bit = 0
JBC bit,rel________jmp para rel se bit = 1 e zere o bit
Cada uma dessas posies de memria pode tambm ser acessada direta ou indiretamente por byte .
Exemplo:
mov
mov
mov
20h,#0AAh
R0,#2Fh
@R0,0AAh
As posies de 30h a 7Fh da RAM interna, disponveis para leitura e escrita, atravs de endereamento direto
e indireto. Se o SP for inicializado no incio desta rea, deve-se reservar um espao para a pilha .
Acc Acumulador
BRegistrador B
PSW Palavra do status do programa
SP Ponteiro de pilha
DPL - LSB do DTPR (Ponteiro de Dados)
DPH
MSB do DPTR (Ponteiro de Dados)
P0 porta 0
P1 porta 1
P2 porta 2
P3 porta 3
IP Controle de prioridade de Interrupo
IE Controle de habilitao de interrupo
TMOD - Controle de modo do Temporizador/Contador
TCON - Controle do Temporizador/Contador
T2COM - Controle 2 do Temporizador/Contador
TH0 MSB do Temporizador/Contador 0
TL0 LSB do Temporizador/Contador 0
TH1 MSB do Temporizador/Contador 1
TL1 LSB do Temporizador/Contador 1
TH2 MSB do Temporizador/Contador 2
TL2 LSB do Temporizador/Contador 2
RCAP2H - Registro de captura do T/C 2 - MSB
RCAP2L - Registro de captura do T/C 2 - LSB
SCON - Controle da Serial
SBUF Buffer de dados da Serial
PCON - Controle de Potncia
Qualquer dos SFRs podem ser endereados a byte diretamente atravs do endereo de cada um ou do nome.
Exemplo:
mov P0,#3Fh ou
mov DPL,DPH ou
mov 80h,#3fh
mov 82h,83h
FF
F7
B7
FE
F6
B6
97
96
8F
8E
87
86
Endereo de cada Bit
FD
F5
FC
F4
FB
F3
FA
F2
F9
F1
B5
B4
B3
B2
B1
95
8D
85
94
8C
84
93
8B
83
92
8A
82
91
89
81
F8
F0
E8
E0
D8
D0
C8
C0
B8
B0
A8
A0
98
90
88
80
B
Acc
PSW
T2CON
IP
P3
IE
P2
SCON
P1
TCON
P0
Alm disso, os SFRs endereveis a bit que determinam funes, podem ser endereados atravs do
Mnemnico de cada bit:
Exemplo:
setb EA ; faz o bit 7 de IE=1
setb 0AFh ; idem
Obs :
clr AC ; zera o bit 6 do PSW (Carry auxiliar)
clr 0ACh ; zera o bit de endereo 0ACh , ou seja , o bit 4 do IE