Você está na página 1de 55

MICROCONTROLADOR 8051

Introduo
Um sistema microprocessado bsico mostrado na figura abaixo:

Organizao bsica de um sistema microprocessado.

Unidade de Entrada responsvel pela obteno de informaes e dados


externos;
Unidade Lgica e Aritmtica (ULA) e Unidade de Controle essas
unidades juntas so responsveis pela capacidade de processamento e
controle das informaes;
Unidade de Memria auxiliam no processamento e armazenamento de
informaes;

Unidade de Sada responsvel pela transferncia de dados e informaes para


o mundo exterior.

Prof. Sidney Jos Montebeller - FACENS

Diagrama em Blocos de um Sistema Genrico com Microprocessador

Sistema genrico com microprocessador.

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.

Prof. Sidney Jos Montebeller - FACENS

Interconexo entre os elementos de um sistema microprocessado atravs de


barramentos.

Funo principal do barramento de controle e conceito de estado de alta impedncia


(tri-state).

Os sinais de controle so gerados pelo microprocessador (RD , WR , etc) e


pelo circuito de seleo de endereos (chip select CS ).

Prof. Sidney Jos Montebeller - FACENS

Circuito Gerador de Sinais de Controle ( CS ) ou Lgica de Seleo de


Endereos
A15
0
0
1
1

A14
0
1
0
1

Memria Liberada (CS/ = 0)


Memria 1
Memria 2
Memria 3
Memria 4

Memria selecionada atravs da lgica de seleo de endereos.

Lgica de seleo de endereos (mapeamento de memria).

Prof. Sidney Jos Montebeller - FACENS

O Microcontrolador 8051 Diagrama de Blocos

O diagrama de blocos do microcontrolador 8051 mostrado na figura abaixo:

Diagrama em blocos do microcontrolador 8051.

Principais Caractersticas do Microcontrolador 8051


Entre as caractersticas do microcontrolador 8051 esto:

CPU de 8 bits otimizada para aplicaes em controle;


32 linhas de E/S bidirecionais e individualmente endereveis;
128 bytes de RAM interna destinada a dados;
2 temporizadores/contadores de 16 bits;

Prof. Sidney Jos Montebeller - FACENS

UART full duplex (canal serial);


5 estruturas de interrupo com 2 nveis de prioridade;
Clock interno;
4 Kbytes de memria de programa interna;
64 Kbytes de memria de programa endereveis;
64 Kbytes de memria de dados endereveis;

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

Comparao entre microcontroladores.


Descrio dos Pinos

Interrupes
Externas
1
1
1
2

Verso
EPROM
8748H
8749H
8751

Verso sem
ROM
8035AHL
8039AHL
8040AHL
8031

8751H

8032AH

87C51

80C31BH

Nmero dos pinos


1a8

9
10 a 17
18

Nome

Descrio

Estes pinos so endereados como porta bidirecional de 8 bits,


podendo ter seus pinos individualmente endereaveis. Podem
P1.0 P1.7
alimentar ou drenar uma carga TTL, ou vrias cargas MOS
diretamente sem pull-up externos.
Usado para resetar o sistema pela aplicao de um nvel lgico
RST/VPD
1, durante 2 ou mais ciclos de mquina.
Porta de I/O bidirecional de 8 bits, com resistores de pull-up
P3.0 P3.7
interno.
Sada do amplificador inversor do oscilador e entrada para o
XTAL2
gerador de clock interno. Se for usado clock externo, serve

Prof. Sidney Jos Montebeller - FACENS

19
20
21 a 28

29

30

31

32 a 39
40

como entrada para o mesmo.


Entrada do amplificador inversor do oscilador, deve ser
XTAL1
conectado a terra se usarmos clock externo.
Vss
Conexo de terra.
P2.0 P2.7 Porta bidirecional de 8 bits, usado como sada ou como parte
(A8 A15) mais significativa do endereo na expanso de memria.
Sada para habilitao do programa externo. Quando o sistema
vai buscar instrues ou operando na memria externa, este
PSEN/
pino vai a nvel zero. PSEN/ no ativado (permanece em
ALTO) durante a busca na memria interna de programa.
Sada habilitadora do latch de endereos. Serve para separar a
parte menos signifivativa do endereo que est multiplexada
ALE
com os dados, no caso de usarmos memria externa.
Entrada de seleo de memria de programa. Quando em
BAIXO, a CPU trabalha apenas com a memria de programa
EA/
externa. Quando em ALTO, a CPU executa instrues da
memria de programa interna.
Porta de 8 bits bidirecional com dreno aberto. Durante
P0.7 P0.0 operaes com memria externa, fornece multiplexadas parte
(AD7 AD0) menos significativa de endereos e dados, ativando pull-ups
internos.
Vcc
Ligao de 5 V para operao normal.

Descrio dos pinos do 8051.


P3.0

RXD/data

P3.1

TXD/clock

P3.2

INT0\

P3.3

INT1\

P3.4
P3.5
P3.6
P3.7

T0
T1
WR\
RD\

Receptor da porta serial assncrona ou entrada e sada de


dados sncronos (expanso de I/O pela porta serial)
Sada de transmisso da porta assncrona ou sada de clock
para os registradores de deslocamento externos (expanso de
I/O pela porta serial)
Interrupo externa nmero 0, ou bit de controle para o
timer/counter 0
Interrupo externa nmero 1, ou bit de controle para o
timer/counter 1
Entrada externa para o timer/counter 0
Entrada externa para o timer/counter 1
Strobe (sinalizador) de escrita na memria de dados externa
Strobe (sinalizador) de leitura na memria de dados externa

Funes Especiais dos Pinos da Porta 3


Organizao de Memria no 8051
Memria de Programa:
A memria de programa separada da memria de dados. O
microcontrolador pode acessar 64 Kbytes de memria de programa. Se o pino EA
estiver em ALTO, os primeiros 4 Kbytes so acessados internamente e o restante
externamente. Se o pino EA estiver em BAIXO, os 64 Kbytes so acessados
externamente.
O dispositivo emite o sinal PSEN (Program Store Enable) para ler a memria
de programa externa.

Prof. Sidney Jos Montebeller - FACENS

Memria de programa.
Os 64 Kbytes de memria de dados externa so acessados pelo dispositivo
atravs dos sinais RD e WR .

Memria de Dados:

A memria de dados corresponde s RAMs internas e externas.

Memria RAM interna e externa.


A memria interna vai do endereo 00H at o endereo FFH e dividida
conforme a figura abaixo:

Prof. Sidney Jos Montebeller - FACENS

Mapa da RAM Interna.


Os 4 bancos de registros (endereos de 00H a 1FH da RAM interna) so
constitudos de 8 registros cada (R0 a R7). A rea de bytes endereveis bit a bit vai
de 20H a 2FH da RAM interna:

Prof. Sidney Jos Montebeller - FACENS

Endereos individuais dos bits


7F
77
6F
67
5F
57
4F
47
3F
37
2F
27
1F
17
0F
07

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

rea de bytes endereveis bit a bit. Os 80 bytes endereveis byte a byte


vo do endereo 30H ao endereo 7FH da RAM interna.
Registros de Funes Especiais (SFR):
Esto localizados do endereo 80H ao endereo FFH da RAM interna:
Registro
P0
P1
P2
P3
SP
TH1
TL1
TH0
TL0
TCON
TMOD
PCON
SCON
SBUF
IE
IP
PSW
ACC
B
DPH

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

Prof. Sidney Jos Montebeller - FACENS

10

de leitura de constantes na ROM, acessar a RAM externa e


para desvio para EPROM de at 64K
Registros de Funes Especiais (SFR).

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.

Prof. Sidney Jos Montebeller - FACENS

11

Sequncia de busca/execuo de instrues no 8051.

Instrues de um ciclo comeam em S1, em S4 gerado uma segunda busca


e, no fim de S6, a instruo est completa. O ciclo busca/execuo o mesmo se a
Memria de Programas externa ou interna. A figura 10 mostra os sinais e as
temporizaes envolvidas quando a Memria de Programas externa.
Nesse caso, o sinal PSEN ativo duas vezes por ciclo de mquina. Se um
acesso Memria de Dados externa ocorre, dois PSEN so pulados porque o bus
de endereos e o bus de dados esto sendo utilizados para acesso Memria de
Dados. Note que um ciclo de Memria de Dados externa toma duas vezes mais
tempo que um ciclo de Memria de Programas.
A figura a seguir mostra a dinmica dos endereos sendo enviados s Portas
0 e 2 e dos sinais ALE e PSEN . O sinal ALE ativado indiferentemente se a CPU
est executando a partir da Memria de Programas externa ou interna, podendo ser
utilizado como uma sada de clock.

Prof. Sidney Jos Montebeller - FACENS

12

Ciclo de Execuo em Memria de Programas Externo.

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

Prof. Sidney Jos Montebeller - FACENS

13

O Registrador Interrupt Enable.

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.

Prof. Sidney Jos Montebeller - FACENS

14

O Registrador Interrupt Priority

Se requisies de interrupo de mesma prioridade so recebidas


simultaneamente, uma seqncia de pooling ativada para determinar
qual interrupo ser atendida.
Todos os flags de interrupo so carregados no sistema de controle de
interrupo durante o Estado 5 de todo ciclo de mquina. A anlise desses flags
feita no ciclo seguinte. Se um flag para uma interrupo habilitada encontrado
setado, o sistema de interrupo gera um LCALL para a correta localizao na
Memria de Programas a menos que uma situao de bloqueio de verifique (ex.
interrupo de igual ou maior prioridade sendo atendida). Com LCALL sendo
executado, o contedo de PC salvo na pilha e este registrador recebe o valor do
endereo inicial da rotina de interrupo.
Somente PC automaticamente salvo na pilha. Isso permite ao programador
decidir quanto tempo deve ser gasto salvando outros registradores. Como resultado,
tem-se uma melhoria no tempo de resposta a uma interrupo.
Temporizadores e Contadores
O microcontrolador 8051 conta com 2 temporizadores/contadores de 16 bits
para uso geral. A configurao dos temporizadores/contadores 0 e 1 feita no
registrador TMOD localizado na regio SFR no endereo 89H. Se o bit C/T desse
registrador setado, o temporizador/registrador atua como contador e, se zerado,
atua como temporizador.
Quando na funo temporizador, o registrador de tempo, localizado na regio
SFR incrementado a cada ciclo de mquina. Logo, podemos pens-lo como um
Prof. Sidney Jos Montebeller - FACENS

15

contador de ciclos de mquina. Quando na funo contador, o registrador


incrementado a cada transio 1 para 0 do correspondente sinal externo T0 ou T1
(pino 4 ou pino 5 respectivamente da porta 3).
Cada temporizador/contador consiste em 2 registradores de 8 bits que podem
ser configurados em um dos 4 possveis modos:
- Modo 0: o registro configurado como um registrador de 13 bits. Os bits TF0
(8DH) e TF1 (8FH) so utilizados como flags de overflow associadas s
interrupes INT0 e INT1 respectivamente aos temporizadores/contadores 0 e 1.
- Modo 1: semelhante ao modo 0 com a diferena de que o registrador atua em 16
bits.
- Modo 2: o registrador configurado em 8 bits com recarga automtica, isto ,
quando numa situao de overflow de TLO (8 bits menos significativos), tal
registrador recarregado com o contedo de TLH (8 bits mais significativos) cujo
contedo permanece constante.
- Modo 3: temporizador/contador 1 desligado enquanto o temporizador/contador
0 utilizado como dois registradores de 8 bits. A interrupo associada a TL0
INT0 enquanto a interrupo associada a TH0 INT1.
Interface Serial
O 8051 possui uma porta serial full-duplex, o significa que ela pode enviar e
transmitir dados simultaneamente. Essa interface pode operar em 4 modos:
- Modo 0: (modo sncrono) 8 bits do dado serial entram e saem por RxD0. TxD0
tem como sada o sinal de clock deslocado em fase. A velocidade de transmisso
de 1/12 clock.
-

Modo 1: (modo assncrono) 10 bits so transmitidos (TxD0) ou recebidos (RxD0):


8 bits de dados, 1 stop bit e 1 start bit. A velocidade de transmisso varivel.

Modo 2: (modo assncrono) 11 bits so transmitidos (TxD0) ou recebidos (RxD0):


1 start bit, 8 bits de dados, 1 bit programvel pelo usurio (por exemplo: bit de
paridade) e um stop bit. A velocidade de transmisso pode ser programvel para
1/32 ou 1/64 clock.

Modo 3: (modo assncrono) exatamente como no Modo 2, porm, a


velocidade de transmisso varivel.

Em cada um dos modos, a transmisso iniciada quando da execuo de


uma instruo cujo registrador destino o registrador SBUF (endereo 99H, regio
SFR). A recepo iniciada no modo 0 pela condio RI = 0 (endereo 98H) e
REN0 = 1 (endereo 9CH), ambos localizados no registrador S0CON (endereo
98H, regio SFR). Em outros modos, a recepo iniciada quando REN0 = 1.

Prof. Sidney Jos Montebeller - FACENS

16

Program Status Word (PSW)


Importante registrador que contm bits de status da CPU. Localiza-se no
endereo D0H da RAM interna. A figura abaixo mostra esse registro:
PSW.7
CY

PSW.6
AC

PSW.5
F0

PSW.4
RS1

PSW.3
RS0

PSW.2
OV

PSW.1
-

PSW.0
P

Registrador PSW (Program Status Word)


CY : Flag Carry;
AC : Flag Carry Auxiliar;
F0 : Flag 0 definido pelo usurio;
RS1 : Bit 1 para seleo de Banco de Registradores;
RS0 : Bit 0 para seleo de Banco de Registradores;
OV : Flag de Overflow;
-:
Flag definido pelo usurio;
P:
Flag de Paridade. setado/zerado pelo hardware a cada ciclo de instruo
para indicar um nmero mpar/par de bits 1 no acumulador.
RS1
0
0
1
1

RS0
0
1
0
1

Banco de Registradores
0
1
2
3

Endereo
00H-07H
08H-0FH
10H-17H
18H-1FH

Seleo de Banco de Registradores atravs de RS1 e RS0.

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.

Prof. Sidney Jos Montebeller - FACENS

18

Conjunto de Instrues do 8051


-

O conjunto de instrues dividido em 5 grupos:


Transferncia de Dados;
Operaes Aritmticas;
Desvio;
Operaes Lgicas;
Flag/Bit.

Generalidades
-

@ indica Indireto (endereado pelo valor de);


#N indica valor Constante de 8 bits;
#NN indica valor Constante de 16 bits;
H indica que o valor est na base Hexadecimal;
B indica que o valor est na base Binria;
Rn indica registro R0 a R7;
Ri indica registro R0 ou R1;
N indica um endereo de memria de 8 bits (primeiras 256 posies internas ou
externas).

Prof. Sidney Jos Montebeller - FACENS

19

Instrues de Transferncia de Dados


MNEMNICO
MOV A, Rn
MOV A, N
MOV A, @Ri
MOV A, #N
MOV Rn, A
MOV Rn, N
MOV Rn, #N
MOV N, A
MOV N, Rn
MOV N1, N2
MOV N, @Ri
MOV N, #N
MOV @Ri, A
MOV @Ri, N
MOV @RI, #N
MOV
#NN

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)

Prof. Sidney Jos Montebeller - FACENS

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

Instrues de Transferncia de Dados


MNEMNICO
MOVX
@DPTR, A
PUSH N
POP N
XCH A, Rn
XCH A, N
XCH A, @Ri

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

Prof. Sidney Jos Montebeller - FACENS

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

Instrues de Operaes Aritmticas


MNEMNICO

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

Prof. Sidney Jos Montebeller - FACENS

*
*

22

Instrues de Desvio
MNEMNICO

DESCRIO

Chama sub-rotina numa faixa


de 2 Kbytes da atual posio
Chama
sub-rotina
em
qualquer posio da memria
LCALL NN
de programa
RET
Retorna da sub-rotina
RETI
Retorna da interrupo
Desvia para outro endereo
numa faixa de 2 Kbytes da
AJMP N
atual posio
Desvia para qualquer posio
LJMP NN
da memria
SJMP N
Desvio curto relativo
Desvia para o endereo
JMP @A +
obtido
da
soma
do
DPTR
Acumulador com o DPTR
Desvia se o Acumulador for
JZ N
zero
Desvia se o Acumulador no
JNZ N
for zero
Compara e desvia se o
Acumulador for diferente do
CJNE A, N, N
contedo da memria N
Compara e desvia se o
CJNE A, #N, N
Acumulador for diferente da
constante N
CJNE Rn, #N, N
Compara e desvia se o Rn for
diferente da constante N
Compara e desvia se a RAM
CJNE
@Ri, #N,
endereada
por
Ri
for
N
diferente da constante N
Decrementa Rn e desvia se
DJNZ Rn, N
for diferente de zero
Decrementa o contedo da
memria N e desvia se for
DJNZ N, N
diferente de zero
NOP
Nenhuma operao

OPERAO

COND.
FLAGS
CY AC

ACALL N

Prof. Sidney Jos Montebeller - FACENS

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

Instrues de Operaes Lgicas


MNEMNICO
ANL A, Rn
ANL A, N

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

Prof. Sidney Jos Montebeller - FACENS

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

Instrues de Operaes Lgicas


MNEMNICO

RLC A
RR A
RRC A
SWAP A

DESCRIO

OPERAO

COND.
FLAGS
CY AC

Rotao do Acumulador para An + 1 An


esquerda atravs do flag CY A7
*
Carry
A0 CY
Rotao do Acumulador para An An + 1
direita
A7 A0
An An + 1
Rotao do Acumulador para
*
CY A0
direita atravs do flag Carry
A7 CY
Troca
os
nibbles
do A7-A4 A3Acumulador
A0

Prof. Sidney Jos Montebeller - FACENS

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

Zera o flag Carry


Zera o bit endereado
Seta o flag Carry
Seta o bit endereado
Inverte o estado do flag Carry
Inverte o estado do bit
endereado
Operao E entre o bit
endereado e o flag Carry
Operao
E
entre
o
complemento
do
bit endereado e o flag Carry
Operao OU entre o bit
endereado e o flag Carry
Operao OU entre o
complemento
do
bit endereado e o flag Carry
Move o bit endereado para o
flag Carry
Move o flag Carry para o bit
endereado
Desvia se o flag Carry estiver
setado
Desvia se o flag Carry estiver
zerado
Desvia se o bit endereado
estiver setado
Desvia se o bit endereado
estiver zerado
Desvia se o bit endereado
estiver setado e depois zera o
bit

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

Prof. Sidney Jos Montebeller - FACENS

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

Podemos definir dois nveis de prioridade para cada interrupo: 0 e 1. Se


uma interrupo de prioridade 0 (menor prioridade) estiver sendo tratada e outra de
prioridade 1 (maior prioridade) ocorrer, o 8051 ir atender a de prioridade 1. Depois
de atender a interrupo de prioridade 1, o 8051 continua a atender a interrupo de
prioridade 0.
Se a interrupo que requisitar ser atendida for de nvel igual ou menor da
que est sendo tratada, ela ficar aguardando o fim do tratamento desta.
Registrador IE (Interrupt Enable) Indica qual das interrupes est habilitada
ou desabilitada.
IE.7
EA
Registro IE.

IE.6
-

IE.5
-

IE.4
ES

EA :

0 = Desabilita todas as interrupes.


1 = Habilita as interrupes escolhidas.

ES :

0 = Desabilita interrupo do canal serial.


1 = Habilita interrupo do canal serial.

IE.3
ET1

IE.2
EX1

IE.1
ET0

IE.0
EX0

ET1 : 0 = Desabilita interrupo do temporizador/contador 1.


1 = Habilita interrupo do temporizador/contador 1.
EX1 : 0 = Desabilita interrupo externa 1.
1 = Habilita interrupo externa 1.
ET0 : 0 = Desabilita interrupo do temporizador/contador 0.
1 = Habilita interrupo do temporizador/contador 0.
EX0 : 0 = Desabilita interrupo externa 0.
1 = Habilita interrupo externa 0.
Registrador IP (Interrupt Priority) Determina o nvel de prioridade de cada
interrupo.
IP.7
-

IP.6
-

IP.5
-

Prof. Sidney Jos Montebeller - FACENS

IP.4
PS

IP.3
PT1

IP.2
PX1

IP.1
PT0

IP.0
PX0
27

Registro IP.
PS :

0 = Prioridade baixa para interrupo do canal serial


1 = Prioridade alta para interrupo do canal serial.

PT1 : 0 = Prioridade baixa para interrupo do temporizador/contador 1.


1 = Prioridade alta para interrupo do temporizador/contador 1.
PX1 : 0 = Prioridade baixa para interrupo externa 1.
1 = Prioridade alta para interrupo externa 1.
PT0 : 0 = Prioridade baixa para interrupo do temporizador/contador 0.
1 = Prioridade alta para interrupo do temporizador/contador 0.
PX0 : 0 = Prioridade baixa para interrupo externa 0.
1 = Prioridade alta para interrupo externa 0.

Registrador TCON (Timer/Counter Control) Os quatro bits menos significativos


deste registrador controlam o modo como as interrupes externas sero
detectadas. Elas podem ser detectadas atravs de uma transio negativa (nvel 1
para nvel 0) ou atravs de nvel 0.
TCON.7

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.

Prof. Sidney Jos Montebeller - FACENS

28

Temporizadores / Contadores
O 8051 possui dois temporizadores/contadores:
-

Temporizador/Contador 0 que utiliza o pino P3.2 como entrada de controle e


o pino T0 como entrada de pulsos;
Temporizador/Contador 1 que utiliza o pino P3.3 como entrada de controle e
o pino T1 como entrada de pulsos.

Registrador TCON (Timer/Counter Control) Os quatro bits mais significativos


deste registrador mostram o estado e iniciam ou param a contagem dos
temporizadores/contadores.
TCON.7
TCON.6
TF1
TR1
Registro TCON.

TCON.5
TF0

TCON.4
TR0

TCON.3

TCON.2

TCON.1

TCON.0

TF1 : setado com a ocorrncia de um transbordo (overflow) do


temporizador/contador 1. zerado ao final da rotina de interrupo do
temporizador/contador 1.
TR1 : 0 = Desabilita a contagem do temporizador/contador 1.
1 = Habilita a contagem do temporizador/contador 1.
TF0 : setado com a ocorrncia de um transbordo (overflow) do
temporizador/contador 0. zerado ao final da rotina de interrupo do
temporizador/contador 0.
TR0 : 0 = Desabilita a contagem do temporizador/contador 0.
1 = Habilita a contagem do temporizador/contador 0.

Registrador TMOD (Timer/Counter Control) Este registrador controla o modo


de operao dos temporizadores/contadores.
TMOD.7
TMOD.6 TMOD.5 TMOD.4 TMOD.3 TMOD.2 TMOD.1 TMOD.0
GATE-1
T/C-1
M1-1
M0-1
GATE-0
T/C-0
M1-0
M0-0
Registro TMOD.

GATE-1 :

0 = Temporizador/Contador 1 ser habilitado para contagem quando


TR1 = 1 (registro TCON).
1 = Temporizador/Contador 1 ser habilitado para contagem quando
TR1 = 1 (registro TCON) e o pino /INT1 = 1.

Prof. Sidney Jos Montebeller - FACENS

29

T/C-1 :

0 = Temporizador/Contador 1 funcionar como temporizador usando


um sinal interno (clock dividido por 12).
1 = Temporizador/Contador 1 funcionar como um contador de sinais
externos.

M1-1, M0-1 : Definem o modo de operao do temporizador/contador 1.


M1-1
M0-1
0
0
0
1
1
0
1
1
Modos de Operao do Temporizador/Contador 1.

Modo de Operao
Modo 0
Modo 1
Modo 2
Modo 3

GATE-0 :

0 = Temporizador/Contador 0 ser habilitado para contagem quando


TR0 = 1 (registro TCON).
1 = Temporizador/Contador 0 ser habilitado para contagem quando
TR0 = 1 (registro TCON) e o pino /INT0 = 1.

T/C-0 :

0 = Temporizador/Contador 0 funcionar como temporizador usando


um sinal interno (clock dividido por 12).
1 = Temporizador/Contador 0 funcionar como um contador de sinais
externos.

M1-0, M0-0 : Definem o modo de operao do temporizador/contador 0.


M1-1
M0-1
0
0
0
1
1
0
1
1
Modos de Operao do Temporizador/Contador 0.

Prof. Sidney Jos Montebeller - FACENS

Modo de Operao
Modo 0
Modo 1
Modo 2
Modo 3

30

Modos de Operao dos Temporizadores / Contadores


-

Modo 0 - Temporizador ou Contador de 8 bits com divisor de frequncia de at


32 vezes.

TL0 e TL1 servem como divisores de 5 bits.


TH0 e TH1 recebem o valor inicial da contagem.
A contagem crescente (at FFH).
Quando o nmero de pulsos lidos igual ao valor do DIVISOR, o
CONTADOR incrementado.
O valor do DIVISOR no alterado durante a contagem.

Contador (TH0 ou TH1)


7
6
5
4
3
2
1
0
Temporizadores/Contadores no modo 0.

X
-

Divisor (TL0 ou TL1)


X
4
3
2

Modo 1 - Temporizador ou Contador de 16 bits.

TH0 e TL0 formam o temporizador/contador 0.


TH1 e TL1 formam o temporizador/contador 1.
A contagem crescente at FFFFH.

Contador (TH0 ou TH1)


15
14 13 12 11 10
9
8
Temporizadores/Contadores no modo 1.

6
-

Contador (TL0 ou TL1)


5
4
3
2
1

Modo 2 Temporizador ou Contador de 8 bits com recarga automtica.

TL0 e TL1 so os contadores 0 e 1, respectivamente.


TH0 e TH1 possuem valores que so transferidos para TL0 e TL1 depois de
um overflow do contador.

Valor de Recarga (TH0 ou TH1)


7
6
5
4
3
2
1
0
Temporizadores/Contadores no modo 2.

6
-

Contador (TL0 ou TL1)


5
4
3
2
1

Modo 3 Temporizador ou Contador de 8 bits.

TL0 um temporizador/contador de 8 bits controlado pelos bits TR0 e TF0 do


registro TCON.
TH0 um temporizador/contador de 8 bits controlado pelos bits TR1 e TF1 do
registro TCON.
O overflow de TL0 acionar o flag de requisio de interrupo (TF0) do
temporizador/contador 0.
O overflow de TH0 acionar o flag de requisio de interrupo (TF1) do
temporizador/contador 1.
Nesse modo TH1 e TL1 no tem funo.

Prof. Sidney Jos Montebeller - FACENS

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

Modos de Operao do Canal Serial.

SM2 : 0 = Operao individual do 8051.


1 = Operao com vrios 8051.
-

No modo 0 deve permanecer em 0.


No modo 1 no requisitar interrupo se estiver em 1 e se o bit de STOP
recebido for ilegal.
Nos modos 2 e 3 habilita comunicao entre vrios 8051.

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.

Prof. Sidney Jos Montebeller - FACENS

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.

Modos de Operao do Canal Serial


-

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:

Prof. Sidney Jos Montebeller - FACENS

33

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 pode ser clock / 32 ou clock / 64.
Os dados tem 11 bits, sendo:
- 1 bit de Start (nvel 0).
- 8 bits de dados.
- 1 bit extra de dado (9 bit de dado).
- 1 bit de Stop (nvel 1).

Modo 3:
Idntico ao modo 2, mas com velocidade varivel.

Prof. Sidney Jos Montebeller - FACENS

34