A família 80C51
• Organização:
–
–
–
–
–
–
–
Microcontroladores versus microprocessadores
Os microcontroladores da família 80C51
Interface com o exterior
Modelo de programação
Processamento dos pedidos de interrupção
Modos de endereçamento e tipos de instruções
Exemplo: Simulação de um registo de deslocamento
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 1
Microcontroladores (Cs) e
microprocessadores (Ps)
• Um microcontrolador é fundamentalmente um
componente que integra os três blocos principais na
arquitectura de um computador: CPU, memória e E/S
• Entre Cs e Ps existem as seguintes diferenças:
– Os Cs dispõem de E/S interna de vários tipos
– Os Cs podem dispor de ROM / EPROM
– Os Cs são sobretudo vocacionados para tarefas de
controlo, onde 8 bits são a solução mais comum
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 2
Os Cs da família 80C51
• A família 80C51 apresenta uma arquitectura interna
algo complexa, o que a poderia desaconselhar como
veículo para a introdução a este domínio. Contudo:
– Trata-se de componentes com grande uso na prática, para
os quais existe uma enorme variedade de aplicações de
apoio ao projecto, comerciais ou do domínio público
– A complexidade não é tanto devida à arquitectura do CPU
interno, mas mais pela necessidade de se multiplexarem
muitos sinais em poucos pinos
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 3
80C51: Arquitectura do
núcleo de base
In te rru p çõ e s
e x te rn a s
C o n tro lo
de
in te rru p çõ e s
S in a is d e
co n tro lo
4K
ROM
128
RAM
CPU
O scila d o r
(crista l
e x te rio r)
In te rru p çõ e s
in te rn a s
4 p o rta s d e
E /S p a ra le la
P o rta
sé rie
P0 P2 P1 P3
TxD RxD
E n d e re ço s / d a d o s
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 4
T e m p o riza d o re s /
C o n ta d o re s
(2 T /C d e 1 6 b its)
E n tra d a s d o s co n ta d o re s
Variantes dentro da família
80C51
• As variantes principais que estão disponíveis nesta
família têm as seguintes características principais:
F unção
V a ria n te s
RAM
6 4 b y tes a 1 .0 2 4 b y tes
(E P )R O M
0 a 3 2 K b y tes
T im ers / co u n ters
1 a 3 (1 6 b its)
E /S p a r a le la
2 a 7 p o rta s (8 b its)
In te rfa ce s sé rie
R S -2 3 2 C , I 2 C , C A N
In te rru p çõ e s e x te rn a s
1 a 10
F re q u ê n cia d e re ló g io
32 K H z a 40 M H z
E n ca p su la m e n to
2 4 a 8 0 p in o s (D IP , L C C , Q F P )
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 5
Organização de memória
• A família 80C51 distingue entre memória de
programa (MP) e memória de dados (MD):
– A MP contém o programa a executar (instruções e
operandos), enquanto a MD serve apenas para dados
– Uma vez que existe apenas um barramento de endereços
e um barramento de dados, a distinção entre MP e MD é
feita através do sinal de leitura (MP: /PSEN, MD: /RD)
– Na MP efectuam-se apenas operações de leitura, sendo
que na MD se efectuam operações de leitura e escrita
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 6
Organização de memória
(cont.)
• Ainda a distinção MP / MD:
– A existência de dois tipos de memória obriga o 80C51 a
ter internamente dois apontadores (PC, DP)
– A selecção do sinal de leitura apropriado (/PSEN ou /RD)
é feita automaticamente pela instrução a executar
– MP e MD não são necessariamente ROM e RAM,
podendo mesmo coexistir no mesmo componente de
memória, e.g. uma NVRAM (de onde viria o sinal de
leitura, neste caso?)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 7
Organização de memória
(cont.)
• Os recursos internos de MP e MD podem ser
complementados externamente:
M e m ó ria d e p ro g ra m a (M P )
M e m ó ria d e d a d o s (M D )
FFFFh
h
(e x te rn a )
FFFFh
(e x te rn a )
1000h
(in te rn a )
0FFFh
/E A = 0
(e x te rn a ) 0 0 0 0 h
/E A = 1
(in te rn a )
/P S E N
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 8
FFh
00h
0000h
/R D
/W R
Organização de memória
(cont.)
• O 80C51 inicializa a execução do programa a partir
do endereço 0 (zero), que poderá ser de MP interna
ou externa, de acordo com o estado do pino /EA:
– Quando /EA=0, o 80C51 começa a execução do programa
pela MP externa
– Nos casos em que existe MP interna, forçar /EA=0
significa que esta memória não deve ser considerada (no
entanto, se existir MP interna, será normalmente por aí
que se iniciará a execução do programa)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 9
Organização de memória
(cont.)
(in te rn a )
FFh
00h
• Alguns aspectos importantes quanto à MD:
– Os 128 endereços superiores permitem de facto aceder a
256 posições, de acordo com o modo de endereçamento
(conforme seja directo ou indirecto, como veremos
adiante)
– Do total de 384 posições assim existentes, 128
correspondem aos registos de funções especiais (SFR,
special function registers) (por exemplo, o DP ocupa dois
destes 128 SFR)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 10
Interface com o exterior
• Barramentos:
+5 V
V CC
XTAL1
8
crista l
XTAL2
P o rto 0 (o u b a rra m e n to d e
d a d o s e e n d e re ço s — A D [0 :7 ])
8
P o rto 1
RST
8
/E A -V P P
A L E -/P R O G
/P S E N
V SS
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 11
8
P o rto 2 (o u b a rra m e n to d e
e n d e re ço s — A [8 :1 5 ])
P o rto 3 (o u o s se g u in te s sin a is:
R x D , T x D , /IN T 0 e /IN T 1 , T 0 e
T 1 , /W R e /R D )
Interface com o exterior
(cont.)
+5 V
V CC
XTAL1
8
P 0 / A D [0 :7 ]
crista l
XTAL2
• Repare-se ainda que:
8
P1
8
P 2 / A [8 :1 5 ]
– O barramento de endereços é partilhado com
os portos de E/S paralela 0 e 2
– O porto 0 é também partilhado com o barramento de
dados
– AD[0..7]: A multiplexagem dados / endereços (oito bits
menos significativos) é feita no domínio temporal (primeiro
o endereço e depois os dados)
8
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 12
P3 / …
Interface com o exterior
(cont.)
• Atendendo à multiplexagem temporal em AD[0..7], o
80C51 proporciona o sinal de controlo (ALE) para
uma latch externa que memoriza a metade menos
significativa do endereço:
80C 51
M e m ó ria
P o rto 0
A D [0 :7 ]
8
8
D [0 :7 ]
R e g isto
8
A [0 :7 ]
ALE
P o rto 2
A [8 :1 5 ]
/W R
P o rto 3
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 13
/R D
A [8 :1 5 ]
Interface com o exterior
(cont.)
• Barramento de controlo:
–
–
–
–
–
RST (reset)
/EA-VPP
/PSEN
ALE - /PROG
/INT0 e /INT1 (entradas
de interrupção)
– T0 e T1
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 14
– /WR
– /RD
– XTAL1 e XTAL2 (pinos
do oscilador interno)
Configuração de pinos
P 1 .0
P 1 .1
P 1 .2
P 1 .3
P 1 .4
P 1 .5
P 1 .6
P 1 .7
RST
P 3 .0 - R x D
P 3 .1 - T x D
P 3 .2 - /IN T 0
P 3 .3 - /IN T 1
P 3 .4 - T 0
P 3 .5 - T 1
P 3 .6 - /W R
P 3 .7 - /R D
XTAL2
XTAL1
0 V
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 15
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
+5 V
P 0 .0 - A D 0
P 0 .1 - A D 1
P 0 .2 - A D 2
P 0 .3 - A D 3
P 0 .4 - A D 4
P 0 .5 - A D 5
P 0 .6 - A D 6
P 0 .7 - A D 7
/E A - V P P
A L E - /P R O G
/P S E N
P 2 .7 - A 1 5
P 2 .6 - A 1 4
P 2 .5 - A 1 3
P 2 .4 - A 1 2
P 2 .3 - A 1 1
P 2 .2 - A 1 0
P 2 .1 - A 9
P 2 .0 - A 8
Diagramas temporais
• Leitura da MP externa:
 1 4 0 n s (m ín .)
ALE
/P S E N
P o rto 0
 80 ns
(m á x .)
A 0 :A 7
In stru çã o
A 0 :A 7
 3 9 7 n s (m á x .)
P o rto 2
A 8 :A 1 5
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 16
A 8 :A 1 5
Diagramas temporais
(cont.)
• Leitura da MD externa:
ALE
/P S E N
 4 4 0 n s (m ín .)
/R D
 1 5 2 n s (m á x .)
P o rto 0
A 0 :A 7 (R i
ou D PL)
D ados
A 0 :A 7 (P C L )
 6 4 8 n s (m á x .)
P o rto 2
P 2 .0 :P 2 .7 o u A 8 :A 1 5 (d o D P H )
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 17
A 8 :A 1 5 (P C H )
In str.
Diagramas temporais
(cont.)
80C 51
P o rto 0
M e m ó ria
8
D [0 :7 ]
R e g isto
8
A [0 :7 ]
A D [0 :7 ]
8
ALE
• Escrita na MD externa:
P o rto 2
A [8 :1 5 ]
A [8 :1 5 ]
/W R
P o rto 3
/R D
ALE
/P S E N
 4 4 0 n s (m ín .)
/W R
 7 0 n s (m ín .)
P o rto 0
P o rto 2
A 0 :A 7 (R i
ou D PL)
D ados
P 2 .0 :P 2 .7 o u A 8 :A 1 5 (d o D P H )
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 18
A 0 :A 7 (P C L )
A 8 :A 1 5 d o P C H
In str.
Modelo de programação
• Diagrama de
blocos da
arquitectura
de base:
8
RAM
8
P 0 d rivers
P 2 d rivers
P 0 la tch
P 2 la tch
EPROM
S ta ck p o in ter
R eg. B
P ro g . co u n ter
A cu m .
C o n tro lo
IR
PSW
ALU
D a ta p o in ter
SFR
P 1 la tch
P 3 la tch
P 1 d rivers
P 3 d rivers
8
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 19
8
A RAM (MD) interna
revisitada
FFH
(1 2 8 b y te s
su p e rio re s)
A ce ssív e l p o r
e n d e re ça m e n to
in d ire cto (R A M )
A ce ssív e l p o r
e n d e re ça m e n to
d ire cto (S F R s)
7FH
80H
7FH
(1 2 8 b y te s
in fe rio re s)
0
A ce ssív e l p o r
e n d e re ça m e n to
d ire cto e
in d ire cto (R A M )
R e g isto s d e
fu n çõ e s
e sp e cia is
(S F R s)
B its d e se le cçã o d o b a n co
n a p a la v ra d e e sta d o (P S W )
E sp a ço e n d e re çá v e l a o
b it (e n d e re ço s d e b it
e n tre 0 e 7 F )
Q u a tro b a n co s
d e o ito re g isto s
ca d a (re g isto s
R 0 a R 7)
V a lo r in icia l (a p ó s reset) d o
a p o n ta d o r p a ra a sta ck (S P )
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 20
30H
2FH
20H
11
10
01
00
18H
10H
08H
0
1FH
17H
0FH
07H
Os registos de funções
especiais (SFR)
(co n ju n to s d e o ito b y te s)
F8H
F0H
FFH
B
F7H
E 8H
E 0H
EFH
ACC
E 7H
D 8H
D 0H
DFH
PSW
D 7H
C 8H
CFH
C 0H
C 7H
B 8H
IP
BFH
B 0H
P3
B 7H
A 8H
IE
AFH
A 0H
P2
A 7H
98H
SCO N
90H
P1
88H
TCON
TM OD
TL0
TL1
80H
P0
SP
DPL
DPH
SBU F
9FH
97H
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 21
TH0
TH1
8FH
PCON
87H
Pedidos de interrupção
• A arquitectura do núcleo de base do 80C51 suporta
cinco fontes de interrupção:
– Duas interrupções externas (pinos /INT0 e /INT1)
– Duas interrupções provenientes dos timers
– Uma interrupção proveniente do porto série
• Cada uma destas fontes pode ser habilitada ou
inibida e a cada uma pode ser atribuída alta ou baixa
prioridade (em ambos os casos, individualmente)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 22
Pedidos de interrupção
(cont.)
• Sobre a prioridade das interrupções:
– O atendimento a uma interrupção de baixa prioridade
pode ser interrompido por uma interrupção de alta
prioridade, mas não vice-versa (e se forem interrupções
da mesma prioridade?)
– No que respeita a pedidos simultâneos, será atendido
primeiro o que tiver mais alta prioridade; se forem iguais,
será realizada uma sequência de pooling para determinar
qual será atendido primeiro
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 23
Pedidos de interrupção
(cont.)
• O atendimento a um pedido de interrupção começa
com o armazenamento do valor actual do PC na
stack, a que se segue uma chamada à respectiva
rotina de atendimento:
F o n te d e in te r r u p ç ã o
E n d e r e ç o d e a te n d im e n to
P in o e x te rio r E x tern a l In terru p t 0 (/IN T 0 )
0003H
O v erflo w n o tim er 0 (T F 0 )
000B H
P in o e x te rio r E x tern a l In terru p t 1 (/IN T 1 )
0013H
O v erflo w n o tim er 1 (T F 1 )
001B H
C o n clu iu -se u m a re ce p çã o o u tra n sm issã o sé rie (R I, T I)
0023H
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 24
Modos de endereçamento
• Será adoptada nesta apresentação a mesma
classificação e organização que são seguidas na
folha de características do componente (Philips)
• Por cada modo de endereçamento, apresenta-se
uma explicação sumária e alguns exemplos
ilustrativos da sua utilização
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 25
Endereçamento directo
• O operando é especificado através de um endereço
de oito bits que se encontra na posição de MP
seguinte à que contém o código da instrução (só
pode ser usado com as posições internas de RAM e
com os SFR):
M n e m ó n ic a
O peração
F la g s
C ó d ig o
m ov
r0 ,5 fh
(r0 )  (5 fh )
nenhum a
m ov
a ,p 1
(a )  (9 0 h )
nenhum a
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 26
# B y te
#M
A8 5F
2
2
E 5 90
2
1
Endereçamento indirecto
• É usado um registo para especificar o endereço do
operando (tanto pode ser usado com as posições de
RAM internas como externas):
M n e m ó n ica
O p e ra çã o
F la g s
C ó d ig o
m ov
a,@ r1
(a)  ((r1))
n en h u m a
m ov x a,@ r1
(a)  ((r1))
m ov x @ d p tr,a
((d p tr))  (a)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 27
# B y te
#M
E7
1
1
n en h u m a
E3
1
2
n en h u m a
F0
1
2
Endereçamento ao registo
• O próprio código da instrução contém um campo com
três bits que identifica qual dos registos R0 a R7 deve
ser usado (dentro do banco seleccionado):
M n e m ó n ic a
O peração
F la g s
C ó d ig o
m ov
a ,r1
(a )  (r1 )
nenhum a
in c
r5
(r5 )  (r5 )+ 1
nenhum a
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 28
# B y te
#M
E9
1
1
0D
1
1
Endereçamento específico
dos registos
• No caso das instruções que são específicas de certos
registos (por exemplo, do acumulador):
M n e m ó n ic a
O peração
F la g s
C ó d ig o
cp l
a
(a )  /(a )
nenhum a
in c
d p tr
(d p tr)  (d p tr)+ 1
nenhum a
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 29
# B y te
#M
F4
1
1
A3
1
2
Endereçamento imediato
• O valor do operando está contido na posição de MP
seguinte à que contém o código da instrução:
M n e m ó n ic a
O p e ra ç ã o
F la g s
C ó d ig o
cjn e r5 ,# 2 a h ,m a rca
(p c)  (p c)+ 3
se (r5 )  2 a h
se
(r5 )< 2 a h
(p c)  (p c)+ re l
# B y te
#M
B D 2A
F1
3
2
74 76
2
1
(c)  1
se n ã o
(c)  0
m o v a ,# 7 6 h
(a )  # 7 6 h
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 30
nenhum a
Endereçamento indexado
• É usado para a leitura de valores armazenados na
MP, servindo como apontador um registo de 16 bits
(DP ou PC):
M n e m ó n ic a
O p e ra ç ã o
F la g s
C ó d ig o
m ov c
a ,@ a + d p tr
(a )  ((a )+ (d p tr))
n en h u m a
m ov c
a ,@ a + p c
(p c)  (p c)+ 1
(a )  ((a )+ (p c))
jm p
@ a + d p tr
(p c)  (a )+ (d p tr)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 31
# B y te
#M
93
1
2
n en h u m a
83
1
2
n en h u m a
73
1
2
Ainda os modos de
endereçamento
• Apesar de a folha de características do 80C51 não o
referir explicitamente, este componente suporta
também um modo de endereçamento a que é
habitualmente dada a designação de endereçamento
relativo (e.g. jb P1.2,marca)
• Neste modo, e em vez do endereço de destino, o
operando consiste na diferença (offset) entre esse
endereço e o endereço actual
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 32
Ainda os modos de
endereçamento (cont.)
• O offset é apresentado
como um byte em
complemento para
dois, o que permite
saltos de até 127 bytes
para a frente ou 128
bytes para trás:
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 33
D e c im a l
C o m p le m e n to p a r a d o is
-1 2 8
1 0 0 0 0 0 0 0 (h e x a d e cim a l 8 0 )
-1 2 7
1 0 0 0 0 0 0 1 (h e x a d e cim a l 8 1 )
-1 2 6
1 0 0 0 0 0 1 0 (h e x a d e cim a l 8 2 )
...
...
-2
1 1 1 1 1 1 1 0 (h e x a d e cim a l F E )
-1
1 1 1 1 1 1 1 1 (h e x a d e cim a l F F )
0
0 0 0 0 0 0 0 0 (h e x a d e cim a l 0 0 )
1
0 0 0 0 0 0 0 1 (h e x a d e cim a l 0 1 )
2
0 0 0 0 0 0 1 0 (h e x a d e cim a l 0 2 )
...
...
126
0 1 1 1 1 1 1 0 (h e x a d e cim a l 7 E )
127
0 1 1 1 1 1 1 1 (h e x a d e cim a l 7 F )
Ainda os modos de
endereçamento (cont.)
• Esta solução permite poupar um byte na
especificação do endereço, sendo o valor do offset
calculado pela aplicação que gera o código objecto
• Exemplo:
E n d e re ço s n o e x e m p lo
co n sid e ra d o :
0006
01100000
(6 0 h , có d ig o d e j z m a r c a )
0007
00000101
(0 5 h , v a lo r d o o ffset)
0008
C ó d ig o in str.
0009
000A
000B
000C
m a rca : 0 0 0 D
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 34
C ó d ig o in str.
e n d e re ço d a in stru çã o se g u in te
(d e v e rá se r in cre m e n ta d o 5
v e ze s p a ra ch e g a r a o e n d e re ço
d a m a rca )
e n d e re ço p a ra o n d e se
p re te n d e sa lta r
Tipos de instruções
• O importante não é conhecer todas as instruções
(nem isso seria possível), mas sim conhecer bem as
características dos seus cinco grupos principais:
–
–
–
–
–
Instruções aritméticas (arithmetical)
Instruções lógicas (logical)
Transferência de dados (data transfer)
Instruções Booleanas (Boolean)
Instruções de salto (jump)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 35
Instruções aritméticas
M n e m ó n ic a
M o d o s e n d e re ç a m e n to
Tem po de
d ir.
in d .
re g .
im .
execução
( s )
(a ) = (a )+ < b y te >




1
a d d c a ,< b y te >
(a ) = (a )+ < b y te > + (c)




1
su b b a ,< b y te >
(a ) = (a )-< b y te > -(c)




1
in c
a
(a ) = (a )+ 1
in c
< b y te >
< b y te > = < b y te > + 1
in c
d p tr
(d p tr) = (d p tr)+ 1
dec
a
(a ) = (a )-1
dec
< b y te >
< b y te > = < b y te > -1

m ul
ab
(b )  b . a [1 5 :8 ], (a )  b . a [7 :0 ]
(e sp e cífico d o A C C e B )
4
d iv
ab
(a )= In t[a /b ], (b )= M o d [a /b ]
(e sp e cífico d o A C C e B )
4
da
a
A ju ste p a ra d e cim a l
(e sp e cífico d o A C C )
1
add
a ,< b y te >
O p e ra ç ã o
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 36
(e sp e cífico d o A C C )



1
1
(e sp e cífico d o D P )
2
(e sp e cífico d o A C C )
1


1
Instruções aritméticas
(cont.)
• Exemplos:
M n e m ó n ica
O p e ra çã o
F la g s
C ó d ig o
ad d c a,#3 bh
(a)  (a)+ (c)+ #3 bh
c, ac, ov
m ul
b  b . a[15:8],
a  b . a[7:0]
c= 0, ov
ab
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 37
# B y te
#M
34 3B
2
1
A4
1
4
Instruções lógicas
Mnemónica
Operação
Modos endereçamento
dir.
ind.
reg.
im.



Tempo de
execução (s)
anl a,<byte>
(a) = (a)<byte>

anl <byte>,a
<byte> = <byte>(a)

1
anl <byte>,#data
<byte> = <byte>#data

2
orl a,<byte>
(a) = (a)<byte>

orl <byte>,a
<byte> = <byte>(a)

1
orl <byte>,#data
<byte> = <byte>#data

2
xrl a,<byte>
(a) = (a)<byte>

xrl <byte>,a
<byte> = <byte>(a)

1
xrl <byte>,#data
<byte> = <byte>#data

2
clr a
(a) = 0
(específico do ACC)
1
cpl a
(a) = /(a)
(específico do ACC)
1
rl
Rotaciona (a) à
esquerda
(específico do ACC)
1
rlc a
Rotaciona (a) à
esquerda através do c
(específico do ACC)
1
rr
a
Rotaciona (a) à direita
(específico do ACC)
1
rrc a
Rotaciona (a) à direita
através do c
(específico do ACC)
1
(a[3:0])  (a[7:4])
(específico do ACC)
1
a
swap
a
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 38






1
1
1
Instruções lógicas (cont.)
• Exemplos:
M n e m ó n ic a
O peração
F la g s
C ó d ig o
o rl
4 e h ,# 3 b h
(4 e h )  (4 e h )  # 3 b h
nenhum a
clr
a
(a )  0
nenhum a
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 39
# B y te
#M
43 4E 3B
3
2
E4
1
1
Instruções de transferência
de dados
• Estas instruções sub-dividem-se em três grupos
principais:
– Transferência de dados na MD interna
– Transferência de dados na MD externa
– Leitura de tabelas armazenadas na MP
• Cada um destes tipos será agora considerado
individualmente
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 40
Transferência de dados: MD
interna
M n e m ó n ic a
O peração
M o d o s e n d e r e ç a m e n to
Tem po de
d ir.
in d .
re g .
im .
e x e cu çã o ( s)

1
m ov
a ,< fo n te >
(a ) = < fo n te >



m ov
< d e st> ,a
< d e stin o > = (a )



m ov
< d e st> ,< fo n te >
< d e stin o > = < fo n te >



m ov
d p tr,# d a ta 1 6
(d p tr) = # d a ta 1 6
p u sh < fo n te >
in c (sp );
1

2

2

2

2
m o v ((sp )),< fo n te >
pop
< d e stin o >
m o v < d e stin o > ,((sp ));
d e c (sp )
x ch
a ,< b y te >
x ch d a ,@ ri
(a )  < b y te >
(a [3 :0 ])  ((ri[3 :0 ]))
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 41




1
1
Transferência de dados: MD
interna (cont.)
• Exemplos:
M n e m ó n ic a
O p e ra ç ã o
F la g s
C ó d ig o
m ov
7 fh ,3 b h
(7 fh )  (3 b h )
n en h u m a
m ov
d p tr,# 3 b 0 7 h
d p tr[1 5 :8 ]  # 3 b h
d p tr[7 :0 ]  # 0 7 h
x ch
a ,r7
(a )  (r7 )
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 42
# B y te
#M
85 3B 7F
3
2
n en h u m a
90 3B 07
3
2
n en h u m a
CF
1
1
Transferência de dados: MD
externa
B its d e e n d e re ç o
M n e m ó n ic a
O p e ra ç ã o
Tem po de
e x e cu çã o ( s)
8 b its
m o v x a ,@ ri (i= 0 o u 1 )
C a rre g a (a ) co m ((ri))
2
8 b its
m o v x @ ri,a (i= 0 o u 1 )
C a rre g a ((ri)) co m (a )
2
1 6 b its
m o v x a ,@ d p tr
C a rre g a (a ) co m ((d p tr))
2
1 6 b its
m o v x @ d p tr,a
C a rre g a ((d p tr)) co m (a )
2
M n e m ó n ic a
O peração
F la g s
C ó d ig o
m o v x a ,@ r1
(a )  ((r1 ))
nenhum a
m o v x @ d p tr,a
((d p tr))  (a )
nenhum a
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 43
# B y te
#M
E3
1
2
F0
1
2
Transferência de dados:
Leitura de tabelas na MP
M n e m ó n ic a
O p e ra ç ã o
Tem po de
e x e cu çã o ( s)
m ovc
a ,@ a + d p tr
C a rre g a (a ) co m o co n te ú d o d a M P
e m ((a )+ (d p tr))
2
m ovc
a ,@ a + p c
C a rre g a (a ) co m o co n te ú d o d a M P
e m ((a )+ (p c))
2
M n e m ó n ica
O p e ra çã o
F la g s
C ó d ig o
m ov c
a,@ a + d p tr
(a)  ((a)+ (d p tr))
n en h u m a
m ov c
a,@ a + p c
(p c)  (p c)+ 1;
(a)  ((a)+ (p c))
n en h u m a
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 44
# B y te
#M
93
1
2
83
1
2
Instruções Booleanas
M n e m ó n ic a
O peração
anl
c,< b it>
(c) = (c)  < b it>
2
anl
c,/< b it>
(c) = (c)  /< b it>
2
o rl
c,< b it>
(c) = (c)  < b it>
2
o rl
c,/< b it>
(c) = (c)  /< b it>
2
m ov
c,< b it>
(c) = < b it>
1
m ov
< b it> ,c
< b it> = (c)
2
clr
c
(c) = 0
1
clr
< b it>
< b it> = 0
1
se tb
c
(c) = 1
1
se tb
< b it>
< b it> = 1
1
cp l
c
(c) = /(c)
1
cp l
< b it>
< b it> = /< b it>
1
jc
m a rca
S a lta p a r a m a rc a se (c)= 1
2
jn c
m a rca
S a lta p a r a m a rc a se (c)= 0
2
jb
< b it> ,m a rca
S a lta p a r a m a rc a se < b it> = 1
2
jn b
< b it> ,m a rca
S a lta p a r a m a rc a se < b it> = 0
2
jb c
< b it> ,m a rca
S e < b it> = 1 e n tã o [sa lta p a ra m a rca ; < b it>  0 ]
2
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 45
Tem po de
e x e c u ç ã o ( s )
Instruções Booleanas
(cont.)
• Exemplos:
M n e m ó n ic a
O p e ra ç ã o
F la g s
C ó d ig o
orl
c,/a cc.4
(c)  (c)  /a cc.4
c
clr
p 2 .7
(p 2 .7 )  0
jb
p 1 .2 ,m a rc a
(p c)  (p c)+ 3 ;
se (p 1 .2 )= 1 en tã o
(p c)  (p c)+ rel
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 46
# B y te
#M
A0 E4
2
2
n en h u m a
C2 A7
2
1
n en h u m a
20 92 D 3
3
2
Instruções de salto
• Estas instruções sub-dividem-se em dois grupos
principais:
– Salto não condicional
– Salto condicional
• Cada um destes tipos será agora considerado
individualmente
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 47
Instruções de salto não
condicional
M n e m ó n ic a
O p e ra ç ã o
jm p
m a rca
S a lta p a r a m a rc a (ljm p , sjm p )
2
jm p
@ a + d p tr
S a lta p a r a ((a )+ (d p tr))
2
ca ll
m a rca
C h a m a a su b ro tin a e m m a rca (lca ll, a c a ll)
2
re t
R e to rn a d a su b ro tin a
2
re ti
R e to rn a d a in te rru p çã o
2
nop
N e n h u m a o p e ra çã o (p a ra a lé m d e (p c)  (p c)+ 1 )
1
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 48
Tem po de
e x e cu çã o ( s)
Instruções de salto não
condicional (cont.)
• Exemplos:
M n e m ó n ic a
O p e ra ç ã o
F la g s
C ó d ig o
# B y te
#M
ljm p
m a rca
(p c)  m a rca
nenhum a
02 80 00
3
2
lca ll
m a rca
(p c)  (p c)+ 3 ;
(sp )  (sp )+ 1 ;
nenhum a
12 80 00
3
2
nenhum a
32
1
2
((sp ))  (p c[7 :0 ]);
(sp )  (sp )+ 1 ;
((sp ))  (p c[1 5 :8 ])
(p c)  m a rca
re ti
(p c[1 5 :8 ])  ((sp ));
(sp )  (sp )-1 ;
(p c[7 :0 ])  ((sp ));
(sp )  (sp )-1 ;
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 49
Instruções de salto
condicional
M n e m ó n ic a
jz
O peração
M o d o s e n d e r e ç a m e n to
Tem po de
d ir.
e x e c . ( s )
in d .
re g .
im .
m a rca
S a lta p a r a m a rc a se
(a )= 0
(e sp e cífico d o A C C )
1
jn z m a rca
S a lta p a r a m a rc a se
(a )  0
(e sp e cífico d o A C C )
1
d jn z < b y te > ,m a rca
D e cre m e n ta < b y te > e
sa lta p a r a m a rc a se
< b y te >  0

cjn e a ,< b y te > ,m a rc a
S a lta p a r a m a rc a se
(a )  < b y te >

cjn e < b y te > ,# d a ta ,m a rc a
S a lta p a r a m a rc a se
< b y te >  # d a ta
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 50
2




2
2
Instruções de salto
condicional (cont.)
• Exemplos:
M n e m ó n ic a
O p e ra ç ã o
F la g s
C ó d ig o
jz
(p c)  (p c)+ 2 ;
nenhum a
nenhum a
m a rca
# B y te
#M
60 C A
2
2
D 5 5F C 7
3
2
B 7 22 C 4
3
2
se (a )= 0 e n tã o
(p c)  (p c)+ re l
d jn z 5 fh ,m a rca
(p c)  (p c)+ 3 ;
(5 fh )  (5 fh )-1 ;
se (5 fh )  0 e n tã o
(p c)  (p c)+ re l
cjn e @ r1 ,# 2 2 h ,m a rc a
(p c)  (p c)+ 3 ;
se
se ((r1 ))  # 2 2 h e n tã o ((r1 ))< # 2 2 h
(c)  1
(p c)  (p c)+ re l
se ((r1 ))< # 2 2 h
se n ã o
e n tã o (c)  1 ;
se n ã o (c)  0
(c)  0
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 51
Exemplo de aplicação
• Para consolidar os conhecimentos adquiridos,
consideraremos agora o caso de pretendermos
simular o funcionamento de um registo de
deslocamento, como o que se apresenta a seguir:
OU T[0]
OU T[1]
OU T[2]
OU T[3]
IN
D
Q
D
CL K
Q
D
CL K
Q
D
CL K
Q
CL K
CL K
OU T[4]
D
CL K
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 52
Q
OU T[5]
D
CL K
Q
OU T[6]
D
CL K
Q
OU T[7]
D
CL K
Q
Exemplo de aplicação
(cont.)
• Os pressupostos são os seguintes:
– O sinal de relógio é activo à transição
ascendente
– No estado inicial, todas as saídas
deverão estar a 0
– A relação entre as entradas (IN e CLK) e as saídas
(OUT[0..7]) deverá ser tão próxima quanto possível da
que teria lugar através da implementação em hardware
IN
CLK
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 53
O U T [0 ]
O U T [1 ]
O U T [2 ]
O U T [3 ]
O U T [4 ]
O U T [5 ]
O U T [6 ]
O U T [7 ]
Sequência de passos
• A sequência de passos até à solução é a seguinte:
– Efectuar a atribuição entre os sinais exteriores e os pinos
de E/S paralela do microcontrolador
– Reflectir sobre a sequência de operações que
implementem a funcionalidade pretendida
– Codificar esta sequência em assembly
– Obter o código objecto, simular o seu funcionamento
(verificação de projecto) e implementar na prática
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 54
Atribuição de recursos
• A simplicidade do exemplo considerado dispensa-nos
o uso de recursos externos a um 87C51, pelo que
poderemos especificar a seguinte atribuição:
– Linhas de saída OUT[0..7] do registo de deslocamento
estarão ligadas ao porto 1 (respectivamente P1[0..7])
– Linhas de entrada ligadas ao porto 0 (CLK em P0.0 e IN
em P0.1)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 55
Sequência de operações a
realizar
• A sequência de operações a realizar pode
especificar-se como se segue:
– Aguardar pela subida no sinal de relógio (CLK)
– Após a subida em CLK, deslocar o conteúdo de OUT[0..7]
uma posição, no sentido de OUT[0] para OUT[7] (para a
esquerda, considerando que OUT[7] está à esquerda)
– Se a entrada IN estiver em 1, colocar OUT[0] em 1; caso
contrário, colocar OUT[0] em 0
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 56
Codificação em assembly
0003
0000
0004
0000 E4
0005
0001 F5 90
0006
0003 30 80 FD
0007
inicio
clr
a
mov
p1,a
; coloca OUT[0..7] em 0
jnb
p0.0,marca1
; espera que CLK suba
0006 A2 81
mov
c,p0.1
; coloca IN no Carry
0008
0008 33
rlc
a
; realiza o deslocamento
0009
0009 F5 90
mov
p1,a
; actualiza as saidas
0010
000B 20 80 FD
jb
p0.0,marca2
; espera que o CLK desca
0011
000E 80 F3
sjmp
marca1
0012
0010
0013
0010
marca1
marca2
.end
tasm: Number of errors = 0
(analisar com pormenor; para que serve a linha 10?)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 57
Verificação de projecto
• É necessário esperar pela descida do relógio (linha
10), para evitar que uma única subida em CLK
provoque múltiplas operações de deslocamento
(dependendo da relação entre CLK e o relógio do
87C51):
CLK
O U T [0 ]
In te rv a lo co rre sp o n d e n te à e x e cu çã o d a s lin h a s
0 0 0 6 a 0 0 0 9 , a p ó s o q u e te m lu g a r a
a ctu a liza çã o d a s sa íd a s P 1 [0 ..7 ]
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 58
Verificação de
projecto (cont.)
CLK
O U T [0 ]
• Considerando CLK a 1 KHz e o relógio do 87C51 a
12 MHz, quantas operações de deslocamento
ocorreriam se não tivéssemos aquele cuidado?
inicio
marca1
marca2
clr
a
mov
p1,a
jnb
p0.0,marca1
mov
c,p0.1
rlc
a
mov
p1,a
jb
p0.0,marca2
sjmp
marca1
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 59
1
1
2
1
1
1
2
2
s
s
s
s
s
s
s
s
(1
(1
(2
(1
(1
(1
(2
(2
ciclo m á q u in a @ 1 2 M H z)
ciclo m á q u in a @ 1 2 M H z)
ciclo m á q u in a @ 1 2 M H z)
ciclo m á q u in a @ 1 2 M H z)
ciclo m á q u in a @ 1 2 M H z)
ciclo m á q u in a @ 1 2 M H z)
ciclo m á q u in a @ 1 2 M H z)
ciclos m á q u in a @ 1 2 M H z)
Verificação de projecto
(cont.)
• É ainda também importante atentarmos na diferença
entre o tempo de
propagação de um
circuito com FF-D e a
simulação via 87C51:
• Poderão daqui advir
problemas (funcionamento incorrecto)?
t 1 – M o m e n to e m q u e é e fe ctu a d a a
le itu ra d e C L K (j n b p 0 . 0 )
t 2 – M o m e n to e m q u e é e fe ctu a d a a
le itu ra d e IN (m o v c , p 0 . 1 )
IN (P 0 .1 )
C L K (P 0 .0 )
O U T [0 ] (P 1 .0 )
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 60
2 s
Expansão da
funcionalidade
• Suportar uma entrada Habilita (em P0.2):
inicio
marca1
marca2
.org
0
#include
def8752.asm
clr
a
mov
p1,a
; coloca OUT[0..7] em 0
jnb
p0.0,marca1
; espera que CLK suba
mov
c,p0.1
; coloca IN no Carry
jnb
p0.2,marca2
; Habilita activo?
rlc
a
; realiza o deslocamento
mov
p1,a
; actualiza as saidas
jb
p0.0,marca2
; espera que o CLK desca
sjmp
marca1
.end
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 61
“.org...”? “#include...”?
Expansão da
funcionalidade (cont.)
• Suportar entradas de Habilita (P0.2) e Sentido (P0.3):
.org
#include
inicio
0
def8752.asm
clr
a
mov
p1,a
; coloca OUT[0..7] em 0
jnb
p0.0,marca1
; espera que CLK suba
mov
c,p0.1
; coloca IN no Carry
jnb
p0.2,marca2
; Habilita activo?
jnb
p0.3,dir
; Sentido para a direita?
rlc
a
; deslocamento para a esquerda
sjmp
actual
dir
rrc
a
; deslocamento para a direita
actual
mov
p1,a
; actualiza as saidas
marca2
jb
p0.0,marca2
; espera que o CLK desca
sjmp
marca1
marca1
esq
.end
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 62
Avaliação do resultado
• Comparando as duas alternativas (FF-D e 87C51)
para a implementação do exemplo considerado, que
conclusões podemos tirar relativamente a:
– Tempo de desenvolvimento?
– Flexibilidade da implementação?
– Rapidez de funcionamento?
• Como é que a resposta às questões anteriores é
afectada pela complexidade do caso em estudo?
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 63
As interrupções revisitadas
/ IN T 0
0
1
IT 0
IE 0
TF 0
/ IN T 1
0
1
IT 1
TF 1
TI
RI
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 64
IE 1
F o n tes de
in te rru pç ã o
IE 0 e IE 1 sã o f l a g s de i nt er rup ç ã o
q ue p er te nc e m a o r eg is to T C O N
( SF R c o m e nd er eç o 8 8 H )
Gestão das interrupções
• O código executado pelo microcontrolador pode
activar / desactivar (set / cleared) todas as flags de
interrupção
• Cada fonte de interrupção pode ser habilitada /
inibida individualmente (registo IE nos SFR)
• A cada fonte de interrupção pode ser atribuída uma
prioridade alta ou baixa (registo IP nos SFR)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 65
/IN T0
Interrupções externas
0
1
IT 0
IE 0
TF 0
/IN T1
0
1
IT 1
IE 1
TF 1
TI
RI
• /INT0 e /INT1 podem ser activos ao nível ou à
transição, de acordo com o conteúdo do registo
TCON (SFR com endereço 88H)
• Se as interrupções forem activas à transição, as flags
que as geram são limpas pelo hardware quando a
respectiva rotina é executada (caso contrário, terá
que ser o código do utilizador a fazê-lo)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 66
/IN T0
Interrupções dos T/C
0
1
IT 0
IE 0
TF 0
/IN T1
0
1
IT 1
IE 1
TF 1
TI
RI
• As interrupções pedidas pelos temporizadores /
contadores são geradas por TF0 e TF1, activadas por
“rollover” nos registos dos respectivos T/C (excepto
T/C 0 em modo 3, como veremos adiante)
• Quando é gerada uma interrupção proveniente dos
T/C, a flag que a gerou é limpa pelo hardware quando
a respectiva rotina é executada
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 67
Interrupções da
comunicação série
/IN T0
0
1
IT 0
IE 0
TF 0
/IN T1
0
1
IT 1
IE 1
TF 1
TI
RI
• Os pedidos de interrupção do periférico de
comunicação série resultam do OR entre as flags RI
(recepção) e TI (transmissão)
• Nenhuma destas flags é limpa pelo hardware quando
a respectiva rotina é executada (o código da rotina
tem primeiro que identificar a causa da interrupção e
depois limpar a flag)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 68
O registo IE (end. SFR A8H)
– endereçável ao bit
• Este registo permite-nos habilitar / inibir cada fonte de
interrupção:
IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0
EA
-
-
ES
ET1 EX1 ET0 EX0
– EA inibe todas as interrupções se estiver em 0; se estiver
em 1, estarão habilitadas as que tiverem o seu IE.x em 1
– ES: periférico série; ET1 e ET0: dos T/C; EX1 e EX0:
externas (pinos /INT1 e /INT0)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 69
O registo IP (end. SFR B8H)
– endereçável ao bit
• Este registo permite-nos atribuir a cada fonte de
interrupção uma prioridade alta ou baixa:
IP.7
IP.6
IP.5
IP.4
IP.3
IP.2
IP.1
IP.0
-
-
-
PS
PT1 PX1 PT0 PX0
– Uma fonte de interrupção terá alta prioridade quando o
seu bit IP.x estiver em 1 baixa quando estiver em 0
– PS: periférico série; PT1 e PT0: dos T/C; PX1 e PX0:
externas (pinos /INT1 e /INT0)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 70
O registo TCON (end. SFR
88H) – endereçável ao bit
• Para além de controlar os T/C, este registo também
se relaciona com as interrupções externas:
TC.7 TC.6 TC.5 TC.4 TC.3 TC.2 TC.1 TC.0
TF1 TR1 TF0 TR0
IE1
IT1
IE0
IT0
– IEx: O hardware activa (set) esta flag à transição
descendente em /INTx e limpa-a (cleared) quando a
respectiva rotina de atendimento é executada
– ITx: Se estiver em 1 a interrupção em /INTx é activa à
transição descendente; caso contrário, é activa ao nível 0.
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 71
Atendimento das
interrupções
• Ao atender uma interrupção, o hardware do 80C51
determina a execução de uma instrução LCALL para
a respectiva rotina de atendimento:
– Endereços de atendimento: IE0 - 0003H; TF0 - 000BH;
IE1 - 0013H; TF1 - 001BH; RI ou TI - 0023H
– A flag associada à interrupção é limpa pelo hardware nuns
casos, mas noutros terá que o ser pelo código
– LCALL força o PC na stack, mas quaisquer outros registos
(e.g. ACC, PSW, ...) terão que ser guardados pelo código
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 72
Retorno das interrupções
• A execução da rotina de atendimento continua até
que seja encontrada uma instrução RETI (return from
interrupt):
– RETI informa o processador que terminou o atendimento à
interrupção e extrai da stack o endereço de retorno
– RET (retorno de subrotina) faria algo semelhante, mas
manter-se-ia a indicação de estar em curso o atendimento
a uma interrupção (qual o problema?)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 73
Exemplo (KEIL):
Interrupções via /INT0
; código para ilustrar o atendimento de interrupções
; externas em /INT0, activas à transição
salta:
cseg
at
0
jmp
inicio
; uma vez que 0003H tem que conter o código de atendimento
; a /INT0, em 0000 cabe apenas uma instrução de salto
cseg
at
0003h
intext0:
inc
r1
reti
; o atendimento a /INT0 apenas incrementa o R1, pelo que o
; seu conteúdo nos diz quantas interrupções foram atendidas
cseg
at
0010h
inicio:
mov
r1,#0
; inicializa R1 com 0
mov
tcon,#01
mov
ie,#81h
; programa o funcionamento das interrupções via /INT0
ciclo:
mov
a,p0
add
a,p1
mov
p2,a
jmp
ciclo
; está sempre a colocar em P2 o valor de P1+P0
endcom Sistemas Digitais e Microcontroladores
Introdução ao Projecto
A família 80C51 - 74
Int. via /INT0: Visualização
no dScope
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 75
Os temporizadores /
contadores (T/C) do 80C51
• Existem dois T/C com 16 bits, podendo cada um
funcionar como temporizador (T) ou contador (C):
– Como temporizador o registo é incrementado por cada
ciclo máquina (12 ciclos de relógio)
– Como contador o registo é incrementado à descida do
sinal no pino (T0 ou T1) – sendo T0 / T1 amostrados uma
vez em cada ciclo máquina, a detecção de descida leva
24 ciclos de relógio (primeira amostra 1, segunda 0)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 76
Controlo de funcionamento
dos T/C
• O controlo de cada T/C é feito através dos registos
TMOD e TCON (dois dos SFR):
– O estado (activo / parado) é controlado através do registo
TCON
– A definição da função pretendida (temporizador ou
contador) é feita pelo bit C-/T em TMOD
– Para cada T/C (seja como temporizador ou como
contador) existem quatro modos de funcionamento,
definidos pelos pares de bits (M1,M0) em TMOD
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 77
T/C: Modos 0 e 1
(iguais nos dois T/C)
TCON:
TMOD:
– Este modo é compatível com o temporizador
do 8048 (8 bits com pré-divisão por 32)
– No modo temporizador, e com Gate em 1, podemos medir a
largura do impulso em /INTx
– O modo 1 é igual ao 0, mas agora em 16 bits
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 78
T/C: Modo 2
(igual nos dois T/C)
TCON:
TMOD:
– A contagem é em 8 bits (TL1)
– Quando se excede o limite da contagem (“overflow”) é
pedida uma interrupção e TL1 é automaticamente
recarregado com o conteúdo de TH1 (que se mantém)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 79
T/C: Modo 3 TCON: TMOD:
(diferente para cada T/C)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 80
T/C: Modo 3
(cont.)
• Comentários ao modo 3:
– Neste modo, o T/C 1 está parado (como quando TR1=0)
– TL0 e TH0 funcionam de modo independente (em 8 bits)
– TH0 funciona como temporizador, controlado por TR1 e
pedindo interrupções via TF1 (repare-se que TR1 e TF1
pertenciam ao T/C 1, nos outros modos de funcionamento)
– Nota: O T/C 1 pode ainda ser usado (retirando-o do modo
3), mas sem poder controlar TF1
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 81
O registo TCON (end. SFR
88H) – endereçável ao bit
• Os bits TFx e TRx estão associados aos T/C:
TC.7 TC.6 TC.5 TC.4 TC.3 TC.2 TC.1 TC.0
TF1 TR1 TF0 TR0 IE1
IT1
IE0
IT0
– TFx: Pede as interrupções do T/C x (set por hardware
quando ocorre overflow; limpa por hardware quando se
salta para a rotina de atendimento)
– TRx: controlo de estado (activo / parado) do T/C x
(controlado por software para activar / parar o T/C x)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 82
O registo TMOD (end. SFR
89H) – endereçável ao bit
• Existem quatro bits por cada T/C:
TM.7 TM.6 TM.5 TM.4 TM.3 TM.2 TM.1 TM.0
Gate C-/T M1
M0 Gate C-/T M1
M0
– Gate: Em conjunto com TRx, controla o estado (activo /
parado) do C/T (ver esquemas que descrevem os modos
de funcionamento)
– C-/T: Define a função (0: temporizador; 1: contador)
– M1,M0: Definem o modo de funcionamento (0 a 3)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 83
Exemplo (KEIL):
Funcionamento do T/C 1
; exemplo para ilustrar o funcionamento dos T/C com interrupções
; T/C 1 funciona como contador de 8 bits com auto-reload
; deve complementar-se P1.0 quando forem contados três impulsos exteriores
inicio:
tc1int:
cseg
at
0
mov
mov
mov
mov
setb
jmp
tmod,#60H
ie,#88H
tl1,#0fdh
th1,#0fdh
tr1
$
cseg
at
cpl
reti
p1.0
;
;
;
;
;
;
contador, modo 2 (quando TR1=1 e T1 desce)
permite interrupções do T/C 1
para contar apenas três vezes
para recarregar o TL1
permite início da contagem
apenas para ficar aqui parado
001bh
; complementa o bit P1.0
end
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 84
T/C 1: Visualização no
dScope
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 85
A porta de comunicação
série no 80C51
• Pode transmitir e receber em simultâneo (é do tipo
“full duplex”)
• Os registos de recepção e transmissão são ambos
acedidos através do SBUF (SFR c/ end. 99H):
– A escrita no SBUF carrega o registo de transmissão
– A leitura do SBUF acede ao registo de recepção
(fisicamente diferente)
• A porta série tem quatro modos de funcionamento
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 86
Porta série: Modos de
funcionamento 0 e 1
• Modo 0 - Transmissão em 8 bits (LSB primeiro), com
taxa de transmissão (baud rate) de 1/12 da
frequência de relógio. Os dados entram e saem via
RxD, estando o relógio de transmissão em TxD.
• Modo 1 - Transmissão em 10 bits: Start bit (0), bits de
dados (LSB primeiro) e um Stop bit (1), com baud
rate variável. Envio por TxD e recepção por RxD.
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 87
Porta série: Modos de
funcionamento 2 e 3
• Modo 2 - Transmissão em 11 bits: Start bit (0), bits de
dados (LSB primeiro), um nono bit programável (e.g.
o bit de paridade no registo PSW) e um Stop bit (1). O
baud rate pode ser 1/32 ou 1/64 da frequência do
relógio. Envio por TxD e recepção por RxD.
• Modo 3 - Como no modo 2, mas agora com baud rate
variável.
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 88
Taxas de transmissão
(baud rate)
• No modo 0, o baud rate é fixo e igual a 1/12 da
frequência de relógio
• No modo 2, o baud rate depende do bit SMOD no
registo PCON (SFR c/ end. 87H), sendo dado por
(2SMOD / 64) x (frequência) (1/64 ou 1/32, portanto)
• Nos modos 1 e 3, o baud rate é variável e
determinado pelo T/C 1 (e também depende do bit
SMOD)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 89
Uso do T/C 1 para
determinar o baud rate
• Nos modos 1 e 3 o baud rate é determinado pela
seguinte expressão:
(2SMOD / 32) x (ritmo de overflow do T/C 1)
– As interrupções através deste T/C devem estar inibidas
– O T/C 1 pode funcionar como temporizador ou como
contador, em qualquer modo de funcionamento, excepto o
modo 3 (recorde-se que neste modo o T/C 1 está parado)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 90
Geração do baud rate via
T/C 1: Forma habitual
• No caso mais comum, o T/C é usado no seu modo 2
(modo 2 do T/C 1)
(como temporizador com auto-reload)
• O baud rate da porta série, nos seus modos 1 e 3, é
(modos 1 e 3 da porta série)
então dado por
(2SMOD / 32) x (frequência / (12 x (256-(TH1))))
– (TH1): Conteúdo do T/C 1, oito bits mais significativos
– Para uma frequência de 11,0592 MHz, quais os valores de
SMOD e (TH1), para resultar um baud rate de 19.200 bps?
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 91
O registo SCON (end. SFR
98H) – endereçável ao bit
• Bits SM0, SM1 e SM2:
SC.7 SC.6 SC.5 SC.4 SC.3 SC.2 SC.1 SC.0
SM0 SM1 SM2 REN TB8 RB8
TI
RI
– SM0 e SM1: Definem o modo de funcionamento (0 a 3).
– SM2: Habilita a capacidade de comunicação em sistemas
do tipo multiprocessador, nos modos 2 e 3. Neste caso, o
nono bit em 1 dá origem a um pedido de interrupção, para
indicar que chegou um endereço de nó.
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 92
SCON (end. SFR 98H) –
endereçável ao bit (2)
• Bits REN, TB8 e RB8:
SC.7 SC.6 SC.5 SC.4 SC.3 SC.2 SC.1 SC.0
SM0 SM1 SM2 REN TB8 RB8
TI
RI
– REN: Controlado por software para permitir (1) ou inibir (0)
a recepção.
– TB8: Nono bit a transmitir nos modos 2 e 3 (controlado por
software).
– RB8: Nos modos 2 e 3, é o nono bit recebido. No modo 1,
se SM2=0, é o stop bit recebido. No modo 0, não é usado.
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 93
SCON (end. SFR 98H) –
endereçável ao bit (3)
• Bits TI e RI:
SC.7 SC.6 SC.5 SC.4 SC.3 SC.2 SC.1 SC.0
SM0 SM1 SM2 REN TB8 RB8
TI
RI
– TI: Flag de interrupção por envio. Activada por hardware no
final do oitavo bit em modo 0, ou no início do Stop bit nos
restantes modos. Deve ser limpa por software.
– RI: Flag de interrupção por recepção. Activada por
hardware no final do oitavo bit em modo 0, ou a meio do
Stop bit nos restantes modos. Deve ser limpa por software.
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 94
Exemplo (KEIL): Escreve
em P1 o byte recebido
; segmento de código para ilustrar a recepção série no 80C51
; cada byte recebido é escrito na porta 1
cseg
at
0
salta:
jmp
inicio
cseg
at
0023h
int_psr:
clr
ri
; limpa a flag que indica interrupção por recepção
mov
p1,sbuf
; copia para a porta 1 o byte que acabou de chegar
reti
cseg
at
0030h
inicio:
mov
scon,#70h
; porta série em modo 1 (SM0,SM1)=(0,1), recepção habilitada (REN=1)
; activa RI quando lê o Stop bit (SM2=1)
mov
tmod,#20h
; T/C 1 como temporizador (C/T=0) em modo 2 (M1,M0)=(1,0)
mov
tl1,#0fdh
mov
th1,#0fdh
; com SMOD em 0 por omissão, resulta um baud rate de 9.600 bps
mov
ie,#90h
; habilita apenas as interrupções da porta série
setb
tr1
; activa o funcionamento do T/C 1
jmp
$
Introdução ao Projecto
com Sistemas Digitais e Microcontroladores
end
A família 80C51 - 95
Porta série: Visualização no
dScope
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 96
Outro exemplo: Recepção
de uma tabela de valores
• Requisitos (assuma-se a frequência de 11,0592 MHz):
– Baud rate de 19.200 bps (gerados pelo T/C 1), palavras de
10 bits (start bit, dados, stop bit)
– Armazena os bytes recebidos em MD interna, a começar
em 30H
– Termina quando receber a sequência ASCII “FIM”: 46H49H-4DH
– Quando terminar, reinicializa apontador para a tabela e
salta para 2000H
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 97
Conclusão
• Objectivo principal do capítulo: Apresentar a
arquitectura em que se baseia a família de
microcontroladores 80C51
• Pistas para a continuação do estudo:
– Evolução da arquitectura 80C51 (e.g. arquitectura XA)
– Outros microcontroladores (e.g. Motorola 68HCXX e
Microchip PIC)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
A família 80C51 - 98
Download

A Família 80C51