Академический Документы
Профессиональный Документы
Культура Документы
Introduo
Um sistema microprocessado bsico mostrado na figura abaixo:
Conceito de Barramento
O microprocessador tem trs barramentos que conduzem todas as
informaes e sinais necessrios operao do sistema. Estes barramentos
conectam o microprocessador (CPU) a cada um dos elementos de memria e de
E/S.
A14
0
1
0
1
Microcontroladores
8048AH
8049AH
8050AH
8051
RAM
Interna
64
128
256
128
ROM
Interna
1K
2K
4K
4K
8052AH
256
8K
80C51BH
128
4K
Linhas
Perifricos
I/O
27
Timer
27
Timer
27
Timer
32
2 Timers
Canal Serial
32
3 Timers
Canal Serial
32
2 Timers
Canal Serial
Interrupes
Externas
1
1
1
2
Verso
EPROM
8748H
8749H
8751
Verso sem
ROM
8035AHL
8039AHL
8040AHL
8031
8751H
8032AH
87C51
80C31BH
9
10 a 17
18
Nome
Descrio
19
20
21 a 28
29
30
31
32 a 39
40
RXD/data
P3.1
TXD/clock
P3.2
INT0\
P3.3
INT1\
P3.4
P3.5
P3.6
P3.7
T0
T1
WR\
RD\
Memria de programa.
Os 64 Kbytes de memria de dados externa so acessados pelo dispositivo
atravs dos sinais RD e WR .
Memria de Dados:
7E
76
6E
66
5E
56
4E
46
3E
36
2E
26
1E
16
0E
06
7D
75
6D
65
5D
55
4D
45
3D
35
2D
25
1D
15
0D
05
7C
74
6C
64
5C
54
4C
44
3C
34
2C
24
1C
14
0C
04
7B
73
6B
63
5B
53
4B
43
3B
33
2B
23
1B
13
0B
03
7A
72
6A
62
5A
52
4A
42
3A
32
2A
22
1A
12
0A
02
79
71
69
61
59
51
49
41
39
31
29
21
19
11
09
01
78
70
68
60
58
50
48
40
38
30
28
20
18
10
08
00
Endereos
dos bytes
2FH
2EH
2DH
2CH
2BH
2AH
29H
28H
27H
26H
25H
24H
23H
22H
21H
20H
Endereo
80H
90H
A0H
B0H
81H
8DH
8BH
8CH
8AH
88H
89H
87H
98H
99H
A8H
B8H
D0H
E0H
F0H
83H
Funo
Port0 I/O
Port1 I/O
Port2 I/O
Port3 I/O
Indica ltimo endereo de armazenagem na pilha
Byte mais significativo do temporizador/contador T1
Byte menos significativo do temporizador/contador T1
Byte mais significativo do temporizador/contador T0
Byte menos significativo do temporizador/contador T0
Contm o Controle e Modo de Operao dos
temporizadores/contadores
Usado para Controle de Potncia
Contm dados para programao do canal serial
Contm o dado recebido ou a ser transmitido
Indica quais interrupes sero habilitadas ou desabilitadas
Contm a indicao da prioridade de cada interrupo
Sinaliza eventos na ULA e indica o Banco de Registros
Registros de uso geral
Registros de uso geral
Juntos formam o DPTR, usado para endereamento indireto
10
DPL
82H
Reset
O reset uma operao que causa reinicializao do sistema. Isso pode ser
feito quando o pino 9 (RST) permanecer em nvel alto por um determinado perodo.
Quando o reset ativado, a CPU executa as seguintes funes:
- o PC (Program Counter), o acumulador (A), o registro B, os flags, o DPTR e
todos os registros dos temporizadores/contadores so ZERADOS;
- no SP (Stack Pointer) colocado o valor 07;
- as portas P0 a P3 tero o valor FFH. Isso deve ser levado em considerao no
projeto do hardware, para evitar acionamentos indesejveis de algum perifrico
externo;
- o SBUF (Buffer Serial) estar com contedo indeterminado e o registro de
controle da porta serial (SCON) ser zerado;
- o registro PCON ter apenas seu bit mais significativo zerado;
- os registros de controle de interrupo (IE e IP) contero o valor binrio
XXX00000, onde X = irrelevante.
No reset forado, a RAM interna no afetada.
Ciclo de Mquina
Um ciclo de mquina consiste de uma sequncia de 6 estados (S1 a S6).
Cada estado toma 2 perodos de clock e, portanto, um ciclo de mquina toma 12
perodos de clock ou 1 s sob uma frequncia de 12 MHz.
A figura abaixo mostra a sequncia de busca/execuo para alguns tipos de
instrues. Normalmente dois ciclos de busca so executados em cada ciclo de
mquina mesmo que a instruo sendo executada no o requer, caso em que o byte
buscado ignorado e o PC no incrementado.
11
12
Interrupes
O microcontrolador 8051 possui as seguintes fontes de interrupo: 2
interrupes externas, 2 interrupes de temporizadores e uma interrupo pela
porta serial.
Interrupt Enable (IE) Cada uma das fontes de interrupo pode ser habilitada ou
desabilitada setando ou limpando um bit do registrador IE localizado na regio SFR.
Este registrador tambm contm um bit global que pode desabilitar todas as
interrupes de uma s vez. A figura abaixo mostra o registrador IE
13
Prioridade de Interrupes
Cada fonte de interrupo pode ser programada para um de dois nveis de
interrupo setando ou limpando um bit do registrador IP (Interrupt Priority)
localizado no espao SFR e mostrado na figura abaixo.
14
15
16
PSW.6
AC
PSW.5
F0
PSW.4
RS1
PSW.3
RS0
PSW.2
OV
PSW.1
-
PSW.0
P
RS0
0
1
0
1
Banco de Registradores
0
1
2
3
Endereo
00H-07H
08H-0FH
10H-17H
18H-1FH
Modos de Endereamento
Para acessar um dado, as instrues do microcontrolador 8051 contam com
seis tipos de endereamentos:
Modo Imediato: nesse modo, o endereo do operando especificado por um
campo de 8 bits na instruo. Somente RAM de dados interna e a regio SFR
podem ser diretamente endereadas.
Ex:
MOV A, 25H; A (25H)
- Move contedo da posio de memria 25H (RAM) para o acumulador (A).
Modo Registrador: a instruo a ser executada contm o nome de um dos
registradores de R0 a R7 que ser acessado. Um dos quatro bancos de registros
selecionado (RS1 e RS0, no registro PSW) em tempo de execuo do programa.
Assim podemos identificar qual registro (R0 a R7) e de qual banco de registros
estamos acessando.
Ex:
MOV A, R1; A R1
- Move o contedo de R1 para o acumulador (A).
Modo Indireto: a instruo especifica um registrador que contm o endereo do
operando. Ambas externa e interna RAMs podem ser indiretamente acessadas. Se
tal endereo possui 8 bits, seu valor armazenado em R0 ou R1, do respectivo
Prof. Sidney Jos Montebeller - FACENS
17
banco selecionado, ou no Stack Pointer. Por outro lado, se tal endereo possui 16
bits, seu valor armazenado no registrador DPTR.
Ex:
MOV @R1, 15H; (R1) (15H)
- Move contedo da posio de memria 15H (RAM) para a posio de memria
endereada por R1.
Modo Especfico a Registro: o registro a ser acessado faz parte do cdigo de
operao da instruo.
Ex:
DA A;
- Ajuste decimal do acumulador.
Modo Constante Imediata: quando uma constante faz parte da instruo.
Ex:
MOV A, #20H; A 20H
- Move o valor 20H para o acumulador.
Modo Indexado: somente a Memria de Programas, cuja nica operao leitura,
pode ser acessada por esse modo. usado para fazer leituras em tabelas na
Memria de Programas. Um registrador de 16 bits (DPTR ou PC) aponta para o
incio da tabela enquanto o Acumulador ajustado para a n-sima posio da
mesma. O endereo de uma entrada para a tabela formado pela soma entre o
Acumulador e o registrador de 16 bits.
Ex:
JMP @A + DPTR; PC A + DPTR
- Desvia para o endereo obtido da soma do acumulador com o DPTR.
Modo Desvio Indexado: usado em instrues de desvio condicionais, onde estas
instrues somam ao PC j ajustado o dado de 8 bits presente no final da instruo.
Ex:
JNZ 05H; PC PC + 05H
- Desvia se acumulador no for zero.
18
Generalidades
-
19
DPTR,
MOVC A, @A +
DPTR
MOVC A, @A +
PC
MOVX A, @Ri
MOVX
@DPTR
A,
MOVX @Ri, A
DESCRIO
Move o registro Rn para o
Acumulador
Move o contedo da memria
N para o Acumulador
Move o contedo da RAM
endereada por Ri para o
Acumulador
Move a constante N para o
Acumulador
Move o Acumulador para o
registro Rn
Move o contedo da memria
N para o registro Rn
Move a constante N para o
registro Rn
Move o Acumulador para a
memria N
Move o registro Rn para a
memria N
Move o contedo da memria
N2 para a memria N1
Move RAM endereada por Ri
para a memria N
Move a constante N para o
contedo da memria N
Move o Acumulador para a
RAM endereada por Ri
Move o contedo da memria
N para a RAM endereada
por Ri
Move a constante N para a
RAM endereada por Ri
Move constante NN para o
DPTR
Soma A + DPTR obtendo um
endereo de 16 bits na
memria
de
programa.
Carrega
o
acumulador com o contedo
desta ao
memria
Idem
anterior, mas soma A
+ PC
Move
RAM
externa
endereada por Ri (endereo
8 bits) para o Acumulador
Move
RAM
externa
endereada
por
DPTR
(endereo 16 bits) para o
Acumulador
Move Acumulador para a
RAM externa endereada por
Ri (endereo 8 bits)
COND.
FLAGS
CY AC
OPERAO
DE
OV
N DE N
DE
BYTES ESTADOS
A Rn
12
A (N)
12
A (Ri)
12
A N
12
Rn A
12
Rn (N)
24
Rn N
12
(N) A
12
(N) (Rn)
24
(N1) (N2)
24
(N) (Ri)
24
(N) N
24
(Ri) A
12
(Ri) (N)
24
(Ri) N
12
DPTR NN
24
24
A (A + PC)
24
A (Ri)
24
A (DPTR)
24
(Ri) A
24
A (A
DPTR)
20
XCHD A, @Ri
DESCRIO
Move Acumulador para a
RAM externa endereada por
DPTR (endereo 16 bits)
Incrementa o SP e ento
coloca a memria no Stack
Retira dado do Stack e coloca
na
memria,
depois
decrementa SP
Troca entre si o contedo do
Acumulador e do Registro Rn
Troca entre si o contedo da
memria N com Acumulador
Troca entre si a RAM
endereada por Ri com
Acumulador
Troca entre si o nibble menos
significativo do Acumulador e
da RAM endereada por Ri
OPERAO
COND.
FLAGS
CY AC
DE
OV
N DE N
DE
BYTES ESTADOS
(DPTR) A
24
SP SP + 1
(SP) N
24
N (SP)
SP SP - 1
24
A Rn
12
A (N)
12
A (Ri)
12
A3-A0 (Ri)
3-0
12
21
DESCRIO
OPERAO
ADD A, Rn
Soma Rn ao Acumulador
Soma o contedo da posio
de memria N ao Acumulador
Soma o contedo da RAM
endereada
por
Ri
ao
Acumulador
Soma a constante N ao
Acumulador
Soma Rn e o flag Carrry ao
Acumulador
Soma o contedo da posio
de memria N e o flag Carry
ao Acumulador
Soma o contedo da RAM
endereada por Ri e o flag
Carry ao Acumulador
Soma a constante N e flag
Carry ao Acumulador
Subtrai Rn e o flag Carry do
Acumulador
Subtrai
o
contedo
da
posio de memria N e o
flag Carry do Acumulador
Subtrai o contedo da RAM
endereada por Ri e o flag
Carry do Acumulador
Subtrai a constante N e o flag
Carry do Acumulador
Soma 1 ao Acumulador
Soma 1 ao Rn
Soma 1 ao contedo da
posio de memria N
Soma 1 ao contedo da RAM
endereada por Ri
Subtrai 1 do Acumulador
Subtrai 1 de Rn
Subtrai 1 do contedo da
posio de memria N
Subtrai 1 do contedo da
RAM endereada por Ri
A A + Rn
COND.
FLAGS
CY AC
*
*
A A + (N)
12
A A + (Ri)
12
A A + N
12
A A + Rn +
*
CY
12
A A + (N) +
*
CY
12
A A + (Ri)
*
+ CY
12
12
12
ADD A, N
ADD A, @Ri
ADD A, #N
ADDC A, Rn
ADDC A, N
ADDC A, @Ri
ADDC A, #N
SUBB A, Rn
SUBB A, N
SUBB A, @Ri
SUBB A, #N
INC A
INC Rn
INC N
INC @Ri
DEC A
DEC Rn
DEC N
DEC @Ri
INC DPTR
MUL AB
DIV AB
DA A
A A + N +
*
CY
A A - Rn
*
-CY
DE
OV
*
N DE N
DE
BYTES ESTADOS
1
12
A A - (N)
-CY
12
A A - (Ri)
-CY
12
12
1
1
12
12
12
12
1
1
12
12
(N) (N) - 1
12
(Ri) (Ri) - 1
12
24
48
48
12
A A - N
-CY
A A + 1
Rn Rn + 1
(N) (N) + 1
(Ri) (Ri) +
1
A A - 1
Rn Rn - 1
DPTR
DPTR + 1
Multiplica A e B, resultado: BA BA A x B
0
Divide A e B, resultado: A
A e B A / B 0
inteiro e B resto
Ajuste
decimal
do
*
A (A)10
Acumulador
Soma 1 ao registro DPTR
*
*
22
Instrues de Desvio
MNEMNICO
DESCRIO
OPERAO
COND.
FLAGS
CY AC
ACALL N
DE
OV
N DE N
DE
BYTES ESTADOS
2
24
24
1
1
24
24
PC PC + N
24
PC NN
24
PC PC + N
24
PC A +
DPTR
24
24
24
24
24
24
24
24
24
12
23
ANL A, @Ri
ANL A, #N
ANL N, A
ANL N, #N
ORL A, Rn
ORL A, N
ORL A, @Ri
ORL A, #N
ORL N, A
ORL N, #N
XRL A, Rn
XRL A, N
XRL A, @Ri
XRL A, #N
XRL N, A
XRL N, #N
CRL A
CPL A
RL A
DESCRIO
Operao E entre Rn e
Acumulador
Operao
E
entre
o
contedo da memria N e o
Acumulador
Operao E entre RAM
endereada
por
Ri
e Acumulador
Operao
E
entre
a
constante N e Acumulador
Operao
E
entre
Acumulador e memria N
Operao E entre constante
N e memria N
Operao OU entre Rn e
Acumulador
Operao
OU
entre
memria N e Acumulador
Operao OU entre RAM
endereada
por
Ri
e
Acumulador
Operao
OU
entre
constante N e Acumulador
Operao
OU
entre
Acumulador e contedo da
memria N
Operao
OU
entre
constante N e contedo da
memria N
Operao OU EXCLUSIVO
entre Rn e Acumulador
Operao OU EXCLUSIVO
entre o contedo da memria
N e Acumulador
Operao OU EXCLUSIVO
entre RAM endereada por Ri
e Acumulador
Operao OU EXCLUSIVO
entre
constante
N
e
Acumulador
Operao OU EXCLUSIVO
entre Acumulador e contedo
da memria N
Operao OU EXCLUSIVO
entre a constante N e o
contedo da memria N
Faz A = 0
Inverte o estado dos bits do
Acumulador
Rotao do Acumulador para
esquerda
OPERAO
COND.
FLAGS
CY AC
DE
OV
N DE N
DE
BYTES ESTADOS
A A ^ Rn
12
A A ^ (N)
12
A A ^ (Ri)
12
A A ^ N
12
(N) (N) ^ A
12
(N) (N) ^ N
24
A A v Rn
12
A A v (N)
12
A A v (Ri)
12
A A v N
12
(N) (N) v A
12
(N) (N) v N
24
A A Rn
12
A A (N)
12
A A (Ri)
12
A A N
12
(N) (N) A
12
(N) (N) N
24
A 00H
12
A A
12
An + 1 An
A0 A7
12
24
RLC A
RR A
RRC A
SWAP A
DESCRIO
OPERAO
COND.
FLAGS
CY AC
DE
OV
N DE N
DE
BYTES ESTADOS
1
12
12
12
12
25
Instrues de Flag/Bit
MNEMNICO
DESCRIO
OPERAO
CLR C
CLR bit
SETB C
SETB bit
CPL C
CY 0
bit 0
CY 1
bit 1
CY CY
CPL bit
ANL C, bit
ANL C, bit
ORL C, bit
ORL C, bit
MOV C, bit
MOV bit, C
JC N
JNC N
JB bit, N
JNB bit, N
JBC bit, N
COND.
FLAGS
CY AC
0
DE
OV
N DE N
DE
BYTES ESTADOS
1
2
1
2
1
12
12
12
12
12
bit bit
12
CY CY ^
*
bit
24
CY
^ bit
24
CY CY v
*
bit
24
CY
v bit
24
12
24
24
24
24
24
24
1
*
CY
CY
CY bit
bit CY
se CY = 1
PC PC + N
se CY = 0
PC PC + N
se bit = 1
PC PC + N
se bit = 0
PC PC + N
se bit = 1
PC PC + N
Bit = 0
26
Interrupes
Os tipos de interrupo do 8051 so:
Interrupo
Interrupo Externa 0 (INT0)
Temporizador/Contador 0
Interrupo Externa 1 (INT1)
Temporizador/Contador 1
Canal Serial
Interrupes do 8051.
Endereo
0003H
000BH
0013H
001BH
0023H
IE.6
-
IE.5
-
IE.4
ES
EA :
ES :
IE.3
ET1
IE.2
EX1
IE.1
ET0
IE.0
EX0
IP.6
-
IP.5
-
IP.4
PS
IP.3
PT1
IP.2
PX1
IP.1
PT0
IP.0
PX0
27
Registro IP.
PS :
TCON.6
TCON.5
TCON.4
TCON.3
IE1
TCON.2
IT1
TCON.1
IE0
TCON.0
IT0
Registro TCON.
IE1 : setado com a ocorrncia de uma borda de descida no pino da Interrupo
Externa 1. zerado quando a interrupo for atendida.
IT1 : 0 = Deteco atravs de nvel 0 no pino da Interrupo Externa 1.
1 = Deteco atravs da ocorrncia de uma borda de descida no pino da
Interrupo Externa 1.
IE0 : setado com a ocorrncia de uma borda de descida no pino da Interrupo
Externa 0. zerado quando a interrupo for atendida.
IT0 : 0 = Deteco atravs de nvel 0 no pino da Interrupo Externa 0.
1 = Deteco atravs da ocorrncia de uma borda de descida no pino da
Interrupo Externa 0.
28
Temporizadores / Contadores
O 8051 possui dois temporizadores/contadores:
-
TCON.5
TF0
TCON.4
TR0
TCON.3
TCON.2
TCON.1
TCON.0
GATE-1 :
29
T/C-1 :
Modo de Operao
Modo 0
Modo 1
Modo 2
Modo 3
GATE-0 :
T/C-0 :
Modo de Operao
Modo 0
Modo 1
Modo 2
Modo 3
30
X
-
6
-
6
-
31
Contador (TH0)
15
14 13 12 11 10
9
8
Temporizadores/Contadores no modo 3.
Contador (TL0)
5
4
3
2
Comunicao Serial
O 8051 transmite dados seriais pelo pino TxD/clock e recebe dados seriais
pelo pino RxD/data.
Registrador SCON (Serial Port Control) Registrador de controle da comunicao
serial.
SCON.7
SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 SCON.1 SCON.0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
Registro SCON.
SM0, SM1 : Definem o modo de operao do canal serial
SM0
SM1
Modo de Operao
Velocidade
Modo 0
Clock / 12
Modo 1
Varivel
Modo 2
Clock / 32 ou Clock / 64
Modo 3
Varivel
REN : 0 = Desabilita recepo (o pino RxD pode ser usado como E/S).
1 = Habilita recepo de dados seriais.
TB8 :
- Indica, nos modos 2 e 3, o estado do 9 bit a ser transmitido.
RB8 :
- No usado no modo 0.
32
No modo 1 indica o estado do bit de STOP recebido (desde que o bit SM2 esteja
zerado).
Nos modos 2 e 3 indica o estado do 9 bit do dado recebido.
TI :
setado aps a transmisso do 8 bit de dado no modo 0 e no incio da
transmisso do bit de STOP nos demais modos. Deve ser zerado pela rotina de
tratamento de interrupo de transmisso para permitir novas interrupes de
transmisso.
RI : setado aps a recepo do 8 bit de dado no modo 0 e no meio do bit de
STOP nos demais modos. Deve ser zerado pela rotina de tratamento da interrupo
de recepo para permitir novas interrupes de recepo.
Registrador SBUF (Serial Buffer) Registrador onde so recebidos e enviados os
dados seriais.
- A escrita neste registro implica na transmisso automtica do dado para o meio
externo.
- A recepo serial de bits do meio externo tambm automtica.
SBUF.7
SBUF.6
SBUF.5
SBUF.4
SBUF.3
SBUF.2
SBUF.1
SBUF.0
Registro SBUF.
Modo 0:
Transmisso e recepo so sncronas.
Os bits de dados so transmitidos e recebidos pelo pino RxD/data.
O clock de transmisso e da recepo gerado pelo pino TxD/clock.
So transmitidos ou recebidos dados de 8 bits.
A velocidade de comunicao clock / 12.
Modo 1:
Transmisso e recepo so assncronas.
Os bits de dados so transmitidos pelo pino TxD.
Os bits de dados so recebidos pelo pino RxD.
Velocidade de comunicao varivel e fornecida pelo temporizador/contador
1.
Os dados tem 10 bits, sendo:
- 1 bit de Start (nvel 0).
- 8 bits de dados.
- 1 bit de Stop (nvel 1).
Modo 2:
33
Modo 3:
Idntico ao modo 2, mas com velocidade varivel.
34