Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila8051 PDF
Apostila8051 PDF
ro
ontroladores 8051
Prof. Eduardo G. Bertonha (M.S
.)
26 de junho de 2007
Departamento de Eletrni a
Pgina Web:
pessoal. efetpr.br/ebertogna
email: ebertonhautfpr.edu.br
2
Sumrio
1 Introduo 6
1.1.2 Mi ro ontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.7.3 Ativao das Interrupes Externas por Borda ou Nvel - Bits IT0
2.8 Temporizadores/Contadores 0 e 1 . . . . . . . . . . . . . . . . . . . . . . . 23
(TH0/TL0 e TH1/TL1) . . . . . . . . . . . . . . . . . . . . . . . . 24
3
Sumrio
8 bits em TL0 . . . . . . . . . . . . . . . . . . . . . . . . . 26
Endereamento Direto . . . . . . . . . . . . . . . . . . . . . . . . . 32
Endereamento Indireto . . . . . . . . . . . . . . . . . . . . . . . . 32
Constante Imediata . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Endereamento Indexado . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.4 Booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.5 Desvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 Exemplos de Apli ao 38
4
Sumrio
Programa Proposto 5: . . . . . . . . . . . . . . . . . . . . . . . . . 74
Programa Proposto 6: . . . . . . . . . . . . . . . . . . . . . . . . . 74
5
1 Introduo
1.1 Con
eitos Importantes
O diagrama em blo
os da gura 1.1, abaixo ilustra um sistema mnimo mi
ropro
essado,
instrues podem estar rela ionadas om operaes lgi as, aritmti as, de a esso
Memria de Programa: nesta memria do tipo no voltil (ou seja do tipo ROM,
EPROM, ou FLASH) que o programa a ser exe utado pelo mi ropro essador a ar-
Memria de Dados: nesta memria do tipo voltil (RAM) que os dados a serem
6
1 Introduo
entes das portas de entrada, por exemplo um te lado, ou ento podem ser gerados
para que a CPU possa ini ializar seus registros internos, e omear a exe utar as
instrues do rmware.
Cir uito de Seleo: Responsvel pelo forne imento dos sinais de seleo, e habili-
rias, perifri os, e ao ir uito de seleo, e a CPU sempre forne e sinais de ontrole,
1.1.2 Mi ro ontroladores
o que o torna de dif il implementao, om muitas inter onexes entre os vrios blo os
ontrolar uma mquina, por exemplo: uma mquina de lavar roupa, um sistema mnimo
omo o mostrado a ima se mostra mximo, gerando pla as de ir uito impresso grandes e
problema existe uma outra lasse de dispositivos que substitui o sistema mnimo anterior,
grande de dispositivos, o que ara teriza uma famlia de dispositivos, alguns deles sendo
7
1 Introduo
E/S, e perifri os, outros porm, in orporam perifri os sosti ados, e j no podem ser
Existem vrias famlias de mi ro ontroladores omer iais, entre eles os mais importantes
so:
a implementao de sistemas das mais variadas apli aes, omo sistemas de ontrole
Esta fa ilidade se baseia, omo j dissemos, no fato de muitos ir uitos ne essrios para
trolador, simpli ando em muito a onstruo do sistema nal, e liberando tempo para o
Vamos estudar aqui os mi ro ontroladores da famlia 8051, por ser o mais popular, e por
de dispositivos no mer ado na ional, e obviamente o usto atrativo. Alm disto, existe
uma grande profuso de informaes a respeito desta famlia na internet, e muitos ttulos
8
2 A Famlia 8051 de
Mi
ro
ontroladores
2.1 Cara
tersti
as Gerais
A famlia 8051
onstituda de uma srie grande de dispositivos, de vrios fabri
antes im-
CPU de 8 bits;
Memria EEPROM;
2 Interrupes externas;
32 Pinos de E/S, ou seja: 4 Portas de 8 bits de entrada e sada (P0, P1, P2, P3);
1 Interfa e serial;
et , et ...
Alm disto a maioria deles pode enderear at 64KB de RAM externa e at 64KB de
modo de baixo onsumo (Power Down), alm de serem base para muitos outros disposi-
tivos om re ursos espe iais omo interfa es CAN, SPI, USB, e Ethernet.
Na tabela 2.1 a seguir esto sumarizados alguns dispositivos populares da famlia 8051,
9
2 A Famlia 8051 de Mi
ro
ontroladores
AT89S51 128B de RAM, 2 Timer/Counter, 1 Serial, 4KB de Flash ISP, 32 Pinos de E/S,
AT89S52 256B de RAM, 3 Timer/Counter, 1 Serial, 8KB de Flash ISP, 32 Pinos de E/S,
AT89S53 256B de RAM, 3Timer/Counter, 1Serial, 12KB Flash ISP, 32 Pinos de E/S,
AT89S8252 256B de RAM, 3 Timer/Counter, 1 Serial, 8KB de Flash ISP, 2KB de EEPROM,
lia 8051. Neste diagrama, que mostra uma arquitetura bastante simples, se observa
nal serial. No apare em neste diagrama o os ilador interno, ir uito de Reset, e blo os
adi ionais presentes em alguns modelos mais sosti ados, omo memria EEPROM, SPI,
10
2 A Famlia 8051 de Mi
ro
ontroladores
seguir.
11
2 A Famlia 8051 de Mi
ro
ontroladores
V
- Tenso de Alimentao
GND - Refern
ia de Terra
PO.0...P0.7 - Porta de 8 bits bidire
ional de entrada e sada, em dreno aberto. Quanto 1's
so es
ritos nestes pinos estes estaro em tri-state e podero ser usados
omo entradas em
alta impedn
ia. Alm disto a porta 0 tem a funo alternativa de multiplexar dados
om
o byte inferior de endereos durante o a
esso memria externa de dados ou programa.
RESET - Entrada de Reset ativo em alto, devendo permane
er em pelo menos 2
i
los de
mquina (24
i
los de
lo
k). Para um Reset de Ini
ializao (Power-On Reset) este pino
poder ter apenas um
apa
itor externo de 10uF ligado a V
j que possui um resistor
interno ligado a GND.
12
2 A Famlia 8051 de Mi
ro
ontroladores
zer uso de alguma memria externa as portas P0 e P2 estaro exer endo a segunda
funo asso iada a elas, qual seja o interfa eamento om estas memrias RAM e ROM
Neste aso a porta P0 ser usada omo barramento de dados / endereos multiplexados,
e seus pinos sero designados agora omo AD0-AD7, transferindo dados e forne endo, de
forma multiplexada om estes, o byte inferior de endereo. A porta P2, por sua vez,
inferior pela porta P0. Os sinais de ontrole de leitura e es rita RD\ e WR\, so forne idos
por dois pinos da porta P3, e o sinal que permite ao hardware sele ionar a memria ROM
Enable). Outro sinal do 8051 envolvido no a esso memria externa o sinal ALE
(Address Lat h Enable) que responsvel pelo travamento do byte A0-A7 de endereo no
lat h olo ado entre a porta P0 e as linhas de endereos da memria, pro esso este que
13
2 A Famlia 8051 de Mi
ro
ontroladores
tem apa idades variadas de memria do tipo OTPROM, EPROM, ou Flash, que vo
desde 4KB at 32KB em alguns elementos, mas na maioria dos dispositivos esta ser de
Considerando a ondio a ima, esta memria ser a essada aso o pino EA\ (External
A ess) esteja em nvel lgi o alto, ou seja desativado. Caso se deseje, alm destes 4KB
64KB, os 60KB adi ionais sero a essados da memria de programa externa. A exe uo
interna, e esta ex lusivamente externa. Neste aso deve-se olo ar o pino EA\=0, ou
seja ativado, indi ando que o a esso memria de programa ser sempre externo. Mesmo
14
2 A Famlia 8051 de Mi
ro
ontroladores
sua presena ser ignorada, sendo a exe uo do programa ini iada na posio zero da
ROM externa.
Na gura a seguir est ilustrado a memria de dados externa, eviden iando-se o a esso
15
2 A Famlia 8051 de Mi
ro
ontroladores
sendo este o diferen ial entre os dois tipos de a essos. Por exemplo a instruo MOV
usada para leitura/es rita da SRAM interna, enquanto a instruo MOVX a ontrapar-
tida relativa a memria SRAM externa, maiores detalhes destas instrues sero vistas
Os a essos SRAM interna do 8051 podem ter diferentes ara tersti as dependendo da
regio desta que est sendo a essada. Na regio da SRAM interna ompreendida entre
os endereos 0 e 127, est a rea dos Registros de Uso Geral e Pilha, enquanto a rea de
128 a 255 onde esto lo alizados os Registros de Funes Espe iais, ver gura 2.7 a seguir.
A rea da SRAM interna denominada de Registros de Uso Geral e Pilha, uja funo
identi ados na gura 2.8. Como pode ser notado desta gura, as regies ompreendem
os quatro ban os de registros: ban o 0 a ban o 3, regio bit e byte enderevel, e regio
somente byte enderevel. Cada uma destas regies ofere em re ursos diferentes onforme
Cada um dos 4 ban o de registro possui 8 registros denominados de R0 a R7, sendo que
a seleo do ban o feita atravs dos bits RS0 e RS1 do registro PSW (Program Status
O uso destes registros (R0...R7) nas instrues prov uma instruo om um byte a
16
2 A Famlia 8051 de Mi
ro
ontroladores
A outra faixa de endereos de 20H a 7FH (32 a 127) se ara teriza por a esso via
espe i ao do endereo, ou seja sem o uso dos registros R0...R7, sendo que o endereo
na SRAM diretamente olo ado na instruo. Cabe ainda ressaltar que a regio entre
os endereos 20H e 2FH tem omo ara tersti a espe ial a possibilidade de se enderear
Os a essos RAM interna do 8051 na faixa de 128 a 255, a essam os registros de funes
espe iais, que esto asso iados aos diversos registros asso iados aos vrios re ursos do
O onhe imento da estrutura de ada um destes registro de suma importn ia, visto
que permite programar os vrios perifri os omo anal serial, temporizadores/ ontadores,
ontrolar ara tersti as da CPU omo modos de baixo onsumo, interrupes, e a essar as
17
2 A Famlia 8051 de Mi
ro
ontroladores
portas de entrada e sada. Assim aps apresentar a lista de registros de funes espe iais,
Este registro de 8 bits indi a o Status do pro essador, ou seja, indi a a o orrn ia de
a seguir:
CY AC F0 RS1 RS0 OV P
18
2 A Famlia 8051 de Mi
ro
ontroladores
sinalizados
seguir:
Observa-se desta gura que os pinos das portas so onstituidos basi amente de um
lat h (ip-op tipo D), dois buers tri-state, e um driver de sada. Para se levar um
pino de sada de uma porta a nvel lgi o 1 ou 0, as instrues exe utam uma es rita no
lat h, que ontrola o fet do driver de sada atravs do sinal de sada Q omplementada,
obviamente que quando o fet de sada est em ON o pino apresentar nvel lgi o 0 na
Constata-se da gura que a leitura de um bit de uma porta de E/S apresenta um de-
talhe adi ional: existem dois sinais de leitura. Um destes sinais omanda a leitura do
estado do pino, atravs do buer inferior na gura, o outro omanda a leitura do lat h,
atravs do buer superior da gura. Con lui-se ento, que existem instrues que no
lem o pino, mas ao invs disto lem a sada do lat h, e um uidado adi ional deve ser
tomado quando se usar tais instrues. Como regra as instrues que exe utam a sequn-
ia L-Modi a-Es reve, so aquelas que lem o lat h ao invs do pino, exemplos de tais
isntrues so:
19
2 A Famlia 8051 de Mi
ro
ontroladores
ANL ; E lgi o, ex: ANL P1,A SETB Pn.i ; Seta Pn.i, ex: SETB P2.3
ORL ; OU lgi o, ex: ORL P1,A CLR Pn.i ; Reseta Pn.i, ex: CLR P3.0
XRL ; OU Ex l., ex: XRL P1,A MOV Pn.i,C ; Move ag C p/ Pn.i,
O onjunto ompleto das instrues do 8051 ser visto no aptulo 3, portanto o leitor
A razo de existir instrues que lem o pino da porta, enquanto outras lem o lat h,
para que no haja uma falsa interpretao da tenso presente no pino. Como exemplo,
neste pino, o transistor saturado, porm, se efetuada uma leitura posterior neste pino o
mesmo apresentar a tenso de base do transistor saturado, o que ser interpretado omo
nvel lgi o 0.
Todas as 4 portas de 8 bits do 8051, P0, P1, P2, e P3, podem ter seus pinos individu-
almente usados omo entrada ou sada, one tados, por exemplo, dispositivos simples
omo haves e leds, omo tambm podem ser usadas omo barramentos de 8 bits, e inter-
fa ear dispositivos perifri os omo displays inteligentes, onversores A/D, e D/A. Deve-se
seus pinos dotados de funes alternativas, ento ertos pinos podero estar indisponveis
Uma parti ularidade que a porta P0 apresenta sua sada ongurada omo dreno
aberto, ao ontrrio demais portas que apresentam o pull-up interno. Esta ara tersti a
faz om que a porta tenha seus pinos utuando quando em aberto. Como onsequn ia
deste fato, a porta P0 poder drenar at 8 argas TTL, ao ontrrio das demais portas
Quando se deseja que os pinos das portas P1, P2, ou P3, atuem omo entradas, o estado
do lat h interno dever estar em 1, o que deixa o driver de sada em OFF, ento o estado
do pino ar em a1 pelo pull-up interno, podendo ser levado a 0 por uma fonte externa.
Como visto antes ada uma das portas est mapeada na regio dos Registros de Funes
Espe iais da memria SRAM interna, om endereos espe os que podem ser referidos
nas instrues (ver tabela 2.2), porm mais onveninte se referir ao nome da porta
nestas instrues, o que assegura uma maior legibilidade ao digo fonte. Por exemplo a
instruo:
Cabe tambm lembrar, que os bits das portas tem endereos espe os, uma vez que
esto em uma regio de memria bit enderevel. Portanto, quando se deseja a essar um
20
2 A Famlia 8051 de Mi
ro
ontroladores
bit de uma porta, pode-se referir ao endereo deste bit, ou usar a notao Porta.Bit, omo
no exemplo abaixo onde o ag de arry (C) re ebe o estado do bit 0 da porta 1 (P1.0):
pinos INT0 e INT1 da porta 3, e trs internas, geradas pelos temporizadores/ ontadores
INT1 Interrupo externa gerada pelo pino P3.3 da porta P3, ativo baixo. 0013H
Serial Canal Serial. A interrupo o orre quando o buer do anal serial 0023H
a seguinte:
atravs deste registro de 8 bits que se pode sele ionar a habilitar/desabilitar as inter-
bit EA: Setado permite habilitar as fontes de interrupo que forem individualmente
sele ionadas atravs dos bits ES, ET1, EX1, ET0, e EX0. Resetado desabilita toda
bit ES: Setado permite sele ionar a interrupo da interfa e serial para ser usada
21
2 A Famlia 8051 de Mi
ro
ontroladores
bit ET1: Setado permite sele ionar a interrupo do temporizador/ ontador1 para
bit EX1: Setado permite sele ionar a interrupo externa 1 para ser usada quando
EA for setado;
bit ET0: Setado permite sele ionar a interrupo do temporizador/ ontador0 para
bit EX0: Setado permite sele ionar a interrupo externa 0 para ser usada quando
EA for setado.
deveria ter os bits EX0, EX1, e EA setados, assim a instruo a seguir poderia ser usado
para tal:
Ou ainda, as trs linhas de programa podem ser usadas, desde que os demais bits do
SETB EX0
SETB EX1
SETB EA
bit PS: Setado permite que a interrupo do anal serial tenha a mais alta priori-
bit PT1: Setado permite sele ionar a interrupo do temporizador/ ontador1 para
bit PX1: Setado permite sele ionar a interrupo externa 1 para ser a de mais alta
externa 1 inalterada;
22
2 A Famlia 8051 de Mi
ro
ontroladores
bit PT0: Setado permite sele ionar a interrupo do temporizador/ ontador0 para
bit PX0: Setado permite sele ionar a interrupo externa 0 para ser a de mais alta
externa 0 inalterada.
As interrupes externas INT0 e INT1 podem ser ativadas tanto por nvel quanto por
borda de des ida, e esta seleo pode ser feita atravs de 4 dos 8 bits do registro TCON.
bit IE1: Setado por hardware quando o pino INT1 vai de alto para baixo. Resetado
bit IT1: Setado permite sele ionar a ativao da interrupo externa 1 por borda
de des ida do sinal presente no pino INT1. Resetado sele iona a ativao de INT1
por nvel;
bit IE0: Setado por hardware quando o pino INT0 vai de alto para baixo. Resetado
bit IT0: Setado permite sele ionar a ativao da interrupo externa 0 por borda
de des ida do sinal presente no pino INT0. Resetado sele iona a ativao de INT0
por nvel.
2.8 Temporizadores/Contadores 0 e 1
A seguir ilustra-se a arquitetura dos
ontadores/temporizadores (T/C's) do 8051, eviden-
23
2 A Famlia 8051 de Mi
ro
ontroladores
Observa-se que no diagrama em blo os da arquitetura dos T/C's, alguns registros tais
para que se possa ompreender o fun ionamento geral dos T/C. A seguir estes vrios
registros so detalhados:
(TH0/TL0 e TH1/TL1)
Estes dois registros de 8 bits, TH0 e TL0, ou TH1 e TL1, so usados para a arga
dos valores ini iais de ontagem dos T/C's, sendo sempre de forma res ente at o valor
mximo, que pode ser de 8 ou 16 bits, onforme THn e TLn sejam usados separados omo
ontadores de 8 bits ou aos pares omo um registro de 16 bits. Aps este valor mximo de
ontagem ter sido atingido o sinalizador TF0 ou TF1 setado indi ando esta o orrn ia,
e aso a interrupo asso iada ao T/C em questo esteja habilitada, uma interrupo
gerada.
Este registro de 8 bits, mostrado abaixo, usado para ontrolar a operao dos T/C's,
e para isto somente os 4 bits mais signi ativos so usados para esta funo, ver gura
24
2 A Famlia 8051 de Mi
ro
ontroladores
bit TF1 ou TF0: Setado por hardware sempre que o T/C em questo atingiu o valor
bit TR1 ou TR0: Setado por software sempre que se deseja ini iar a ontagem pelo
Este registro de 8 bits, mostrado abaixo, usado para sele ionar os modos de operao
bit G0 ou G1: Usado para sele ionar o tipo de ontrole de disparo do T/C, ou seja,
se este ontrolado apenas atravs do bit TRn (Gn - Resetado), ou atravs do bit
bit T/C0 ou T/C1: Usado para sele ionar a operao do T/C omo temporizador
bits M0-0/M1-0 ou M0-1/M1-1: Estes dois bits tem omo funo sele ionar um
Neste modo o T/C0 ou T/C1 fun iona em 8 bits, sendo que esta ontagem o orre no
registro TL0 ou TL1, tendo portanto, um mximo valor de ontagem de 255. O registro
TH0 ou TH1, neste modo forne e uma pr diviso (pres aler) do lo k do ontador de at
Neste modo o T/C0 ou T/C1 fun iona em 16 bits, ou seja os dois registros TH0 e TL0, ou
25
2 A Famlia 8051 de Mi
ro
ontroladores
Neste modo o T/C0 ou T/C1 fun iona em 8 bits, sendo TL0 ou TL1 o registro onde
o orre a ontagem, e TH0 ou TH1 o registro onde o valor ini ial de ontagem, ou neste
aso o valor de re arga est espe i ado. Sempre que o valor mximo de ontagem o orre
(255 ou FFH) o valor de re arga automati amente arregado quando TF0 ou TF1
resetado.
TL0
Neste modo o T/C0, e somente este, pode fun ionar omo temporizador ou ontador de
8 bits, usando o registro TH0, e ativando aso seja ne essrio a interrupo do T/C1. O
outro registro do T/C0, o TL0 poder fun ionar omo um temporizador adi ional de 8
sn rona, assn rona, om taxas de transmisso xa, ou varivel. Os registros asso iados
Uma transmisso serial sempre se ini ia quando um byte es rito no registro SBUF,
assim este byte serializado e enviado pelo pino TXD da porta P3.
A re epo para ser habilitada dever ter o bit REN - Re epo Habilitada, do registro
de ontrole SCON, setado e os bits quando re ebidos pelo pino RXD da porta P3 sero
Este registro de 8 bits, mostrado abaixo, usado para sele ionar os modos de operao
bits TI e RI: Requisio de transmisso/re epo setado por hardware sempre que
bits TB8 e RB8: So usados para insero de bits de ontrole pelo usurio, tais
26
2 A Famlia 8051 de Mi
ro
ontroladores
bits SM0 / SM1: Estes dois bits tem omo funo sele ionar um dentre quatro
Neste modo o anal serial olo ado no modo Registrador de Deslo amento (Shift Regis-
ter) no qual os dados entram e saem serialmente atravs do pino RXD, e no pino TXD o
lo k enviado. Neste aso, os termos RXD e TXD no tem mais o signi ado original,
uma vez que o pino RXD transmite e re ebe dados seriais, e o pino TXD nada tem a ver
SBUF. E a re epo quando o bit REN do registro SCON setado, e o ag de re epo
RI resetado.
Neste modo o anal serial olo ado no modo Re eptor/Transmissor Universal Assn rono
(UART), onde o dado om 8 bits seriais so pre edidos por um start bit em nvel baixo,
e seguido por um stop bit em nvel alto. O stop bit opiado no bit RB8 do SCON na
re epo que tem in io quando o start bit re ebido no pino RXD sendo sensvel a borda
27
2 A Famlia 8051 de Mi
ro
ontroladores
Neste modo o anal serial olo ado no modo UART de 9 bits seriais, que omo no modo
anterior so pre edidos por um start bit em nvel baixo, e seguido por um stop bit em
nvel alto. Quando da re epo o bit RB8 do SCON reservado para re eber o nono bit
da palavra de dado, ao invs de re eber o stop bit omo no modo 1. Na transmisso o bit
TB8 re ebe o nono bit que pode ser um bit de paridade, por exemplo.
Neste modo o anal serial olo ado no modo UART de 9 bits seriais exatamente omo
no modo anterior, ex eto que a taxa de transmisso programada pelo timer 1, omo no
modo 1.
A tabela a seguir poder ser usada na programao do Canal Serial para a gerao de
taxas de transmisso (Baud Rate) tpi as omo aquelas nela apresentadas. Para tanto o
Timer/Counter 1 deve ser usado omo temporizador no modo 2, ou seja modo autoreload,
tabela.
28
2 A Famlia 8051 de Mi
ro
ontroladores
letras de 'a' at 'z' so enviadas onse utivamente e de forma ontnua para um mi ro-
omputador PC.
gia, por exemplo, no aso de equipamentos portteis e alimentados por baterias, pode-se
ontar om os dispositivos da famlia 8051 om te nologia CMOS, que ofere em dois mo-
pelos bits de ontrole IDL e PD, do registro de ontrole de potn ia PCON, mostrado a
seguir.
Este registro de 8 bits, mostrado abaixo, usado para sele ionar os modos de operao de
serial SMOD, j dis utido no item 2.9, alm de dois bits de sinalizao de uso geral GF0
bits PD e IDL: Estes dois bits tem omo funo sele ionar o modo de operao em
Neste modo de operao, que pode ser ativado setando-se o bit de ontrole IDL, lo alizado
Quando o mi ro ontrolador entra no modo Idle, aps a instruo que seta o bit IDL, o
status da UCP mantido omo estava antes da exe uo desta instruo, e os registros
de status PSW, o ontador de programa PC, apontador de pilha SP, alm do a umulador
A, e demais registros se mantero inalterados. Alm disto o estado dos pinos das portas
Para que o mi ro ontrolador possa sair do modo Idle, existem dois me anismos: atravs
29
2 A Famlia 8051 de Mi
ro
ontroladores
No primeiro aso, onde uma interrupo gerada, o bit IDL automati amente resetado
quando do atendimento da interrupo, e aps a rotina ter sido exe utada, retornando
atravs de uma instruo RETI, o programa segue o uxo exe utando a instruo que
mantido por pelo menos 24 i los de lo k, e assim a exe uo pela UCP, da mesma forma
que no aso anterior, segue o uxo exe utando a instruo que vem logo aps aquela que
algoritmo de reset interno, este tempo deve ser o upado por 3 instrues NOP para evitar
Neste outro modo de baixo onsumo, ativado quando se leva o bit de ontrole PD, tambm
30
3 Programao em Assembly do
8051
3.1 Conjunto de Instrues do 8051
A ttulo de estudo, as instrues do 8051 podem ser
lassi
adas em 5 tipos diferentes,
onforme abaixo:
Transfern ia de Dados
Aritmti as
Lgi as
Booleanas
Desvio
Os tipos de instrues listados a ima sero estudados em detalhes no item 3.2, porm
na famlia 8051.
O modo omo dados so a essados nas instrues do 8051, o que se hama de modo de
endereamento, e so os seguintes:
Endereamento Direto
Endereamento Indireto
Endereamento Indexado
31
3 Programao em Assembly do 8051
Endereamento Direto
Endereamento Indireto
Constante Imediata
exemplo a seguir:
Endereamento Indexado
Neste tipo de endereamento o dado a essado na posio de memria espe i ada omo
em A. Neste endereo assim onstitudo o registro A pode ser variado para fazer indexa-
es. Pode-se apli ar tal modo de endereamento no a esso memria de digo, para
32
3 Programao em Assembly do 8051
So basi amente as instrues de move, ujos mnemni os existentes so: mov, movx, e
mov , alm das instrues de operao om a pilha: push e pop, e de tro a ex hange,
mov <destino>,<origem>
MOV Rn, direto Move byte direto p/ Registro MOV R3, 7FH 2 24
MOV direto, Ri Move RAM indireto p/ byte direto MOV 7FH, R0 2 24
MOV Ri, direto Move byte direto p/ RAM indireto MOV R5, 20H 2 24
MOV Ri, #dado Move dado imediato p/ RAM indireto MOV R0, #0FH 2 12
* Bytes da Instruo
33
3 Programao em Assembly do 8051
todas as variantes dos modos de endereamento, alm da instruo de ajuste de imal para
* Bytes da Instruo
tes ofere idas pelos modos de endereamento, alm de CLR, resetar todos bits, e CPL,
omplemento.
34
3 Programao em Assembly do 8051
ANL direto, #dado AND de byte direto om dado imediato ANL 40H, #7FH 3 24
ORL direto, #dado OR de byte direto om dado imediato ORL 40H, #7FH 3 24
XRL direto, #dado XOR de byte direto om dado imediato XRL 40H, #7FH 3 24
* Bytes da Instruo
3.2.4 Booleanas
So as instrues que operam sobre bits, lembrando que a RAM interna possui 128 bits
endereveis, e que no espao da RAM interna destinada aos registros de funes espe iais
existem mais 128 bits endereveis, a essados portanto atravs de instrues booleanas.
35
3 Programao em Assembly do 8051
MOV C, bit Move bit direto para o ag de arry MOV C, P1.0 2 12
JBC bit, relativo Desvia se bit direto setado e reseta bit JBC TF0, L1 3 24
* Bytes da Instruo
3.2.5 Desvio
Chamada de rotinas
Retorno de rotina
36
3 Programao em Assembly do 8051
se 6=byte direto
CJNE A,#dado,relativo Compara dado
/ A e desvia CJNE A,#10,REP 3 24
se 6= dado
CJNE Rn,#dado,relativo Compara reg.
/ indireto e desvia CJNE R2,#20,L0 3 24
se 6= dado
CJNE Rn,#dado,relativo Compara dado
/ indireto e desvia CJNE R1,#100,S2 3 24
se 6= dado
DJNZ Rn, relativo De
rementa registro e desvia se6= 0 DJNZ Rn, REPETE 2 24
se 6= 0
NOP Sem operao NOP 1 12
* Bytes da Instruo
37
4 Exemplos de Apli
ao
A seguir sero apresentados exemplos de apli
aes,
om solues de hardware e software,
desde programas muito simples ilustrando o uso das Portas de E/S, Interrupes Externas,
fa es entre o 8051 e perifri os tais omo: displays de ristal lquido inteligentes (LCD),
passo.
Muitos dos exemplos aqui apresentados sero teis em projetos de sistemas mi ro on-
trolados baseados no 8051, onde tais programas podem ser onvertidos em rotinas e usados
Para tanto, ser utilizado o T/C0 fun ionando omo temporizador no modo 2, ou seja:
om um lo k de 1us, uma vez que internamente o T/C divide o lo k do sistema por 12.
ne essrio para a gerao da onda quadrada de 10KHz que tem um perodo de 50us, ver
Para se gerar a onda quadrada a ada 50us ser gerada uma interrupo pelo T/C0 e o
pino P1.0 ser omplementado na rotina de interrupo usando-se a instruo CPL, indo
de 0 a 1 ou de 1 a 0.
38
4 Exemplos de Apli
ao
utilizando para isto dois sensores de temperatura one tados aos pinos de interrupo
externa INT0 e INT1. Quando INT0 re eber o sinal de ativao do sensor de 120?C, o
forno deve ser desligado, uma vez que a temperatura atingiu o valor mximo. Da mesma
forma quando a interrupo INT1 for ativada pelo sensor de 100C, o forno dever ser
ligado por estar na temperatura limite inferior, ver gura 4.2, a seguir.
O digo do programa resultante muito simples, omo pode ser onstatado na lista-
gem a seguir:
39
4 Exemplos de Apli
ao
JB INT0, LOOP
o
; VERIFICA SE O SENSOR DE 120 C EST ATIVO
sem o uso do re urso de interrupes. Para isto, os bits sinalizadores de ativao dos
pinos de interrupo, IE0 e IE1, lo alizados no registro TCON (ver item 2.7.3), podero
ser monitorados, e aso alguns destes pinos INT0/INT1 for de 1 para 0, o sinalizador
Embora o digo gerado usando este enfoque seja mais simple que o anterior que utili-
zava interrupes, este no apresenta a mesma exibilidade que o primeiro, uma vez que
no permite que outras tarefas possam ser realizadas em paralelo ao monitoramento dos
pinos de interrupo. Veri a-se que no aso do uso de interrupes, onde o programa
nada de til, plenamente possvel embutir algum digo no lugar deste loop innito, e
40
4 Exemplos de Apli
ao
JB INT0, LOOP
o
; VERIFICA SE O SENSOR DE 120 C EST ATIVO
JB IE1, DESLIGA
o
; VERIFICA SE O SENSOR DE 100 C EST ATIVO
Como a onda de 10KHz possui um perodo de 100us, pela mesma razo apresentada
mi ro ontrolador.
A apa idade de gerar tempo dos T/C's no modo 2 de no mximo 256us, ou 0,256mS,
e pelo fato da onda de 1KHz possuir um perodo de 1ms, o que ex ede esta apa idade o
sero habilitadas e ento geradas para atuar nos pinos P1.6 e P1.7 onde o estado destes
41
4 Exemplos de Apli
ao
digitais utilizar um onversor A/D do tipo R2R. A gura 4.4, ilustra omo se imple-
Para se efetuar a onverso da tenso de entrada analgi a para uma palavra digital,
neste exemplo se utilizou uma rede R2R om resoluo de 7 bits, o que resulta em um
es esta resoluo pode ser pobre, porm para a maioria das apli aes em ontrole de
42
4 Exemplos de Apli
ao
pro essos tal resoluo mais que su inte. De qualquer forma, aso seja ne essrio uma
resoluo maior, pode-se utilizar um onversor A/D omer ial de 8, 10, ou 12bits. No item
4.5, um destes onversores A/D omer ial, o ADC0804, mostrado sendo interfa eado
om um 8051.
segundo, pelo pino P3.0 do 8051. Este sinal em P3.0 (STARTADC) sempre que for de
alto para baixo ini ia uma nova onverso. Aps o nal da onverso, o onversor envia
um sinal pelo seu pino INTR que est one tado ao pino INT0 do 8051. A rotina da
interrupo externa INT0 por sua vez pro ede a leitura do ADC0804 enviando o valor
43
4 Exemplos de Apli
ao
A gura 4.4, a seguir ilustra a onexo entre os pinos de dados e ontrole do ADC0804
om o 8051.
A seguir apresentada a listagem do programa expli ado a ima, sem a rotina do buer
ir ular implementada. Tal rotina deve ser es rita de a ordo om as restries de memria
do sistema implementado.
44
4 Exemplos de Apli
ao
uma das formas mais efetivas de prover uma interfa e homem-mquina de baixo usto
ara teres ada. Estes omponentes ontm um ir uito ontrolador (HD44780) que ge-
ren ia a es rita das mensagens no display, sendo apenas ne essrio que o mi ro ontrolador
1 GND Terra
2 V
Alimentao de +5V
3 Pot Terminal
entral do trimpot
4 RS Register Sele
t - Seleo de Registro
5 RW Read/Write - Sinal de Leitura e Es
rita
6 EN Enable - Sinal de Habilitao
7 D0 Sinal de dados D0 (LSB)
8 D1 Sinal de dados D1
9 D2 Sinal de dados D2
10 D3 Sinal de dados D3
11 D4 Sinal de dados D4
12 D5 Sinal de dados D5
13 D6 Sinal de dados D6
14 D7 Sinal de dados D7 (MSB)
45
4 Exemplos de Apli
ao
ontrole prprias, que permitem ongurar vrias ara tersti as deste, tais omo:
Ligar o LCD/Cursor
Desligar o LCD/Cursor
Pis ar ursor.
Para se pro eder a programao do LCD os sinais RS e RW devem sele ionar a es rita no
registro de ontrole, e o sinal de habilitao deve ser ativado. Ento palavras de ontrole
adequadas devem ser es ritas neste registro, para se programar o modo omo o LCD ir
fun ionar. Dentre estes modos de operao esto os modos de interfa e em 4 ou 8 bits de
Para maiores detalhes de operao dos LCD's padro Hita h, onsultar do umentao
A seguir ser apresentado um programa para es rita da mensagem Hello World no LCD,
na gura 4.5.
46
4 Exemplos de Apli
ao
47
4 Exemplos de Apli
ao
;*********ATRASO DE 5MILISEG******************************************************
;*********FINAL DE PROGRAMA****************************************************
Nesta outra verso do exemplo anterior, o LCD interfa eado om o 8051 atravs de 4
Somente os pinos de P1.4 a P1.7 so one tados aos pinos de dados mais sigi ativos
38H.
48
4 Exemplos de Apli
ao
DADO EQU P1
49
4 Exemplos de Apli
ao
50
4 Exemplos de Apli
ao
;*********ATRASO DE 1MILISEGUNDO**********************************************
51
4 Exemplos de Apli
ao
;*********FIM DE PROGRAMA*****************************************************
END
ne essita de pinos ad ionais, pode-se re orrer expanso das linhas de sada atravs do
uso de um Registrador de Deslo amento (shift register) do tipo 74HC164, omo visto na
gura 4.7, a seguir, onde um LCD inteligente one tado atravs deste a um 8051.
52
4 Exemplos de Apli
ao
Como visto na gura 4.7, atravs de 2 linhas da porta P1, so forne idos os bits de
dados serializados, e o sinal de lo k para o registrador de deslo amento, que aps ter
A seguir ser apresentado o digo que possibilita o 8051 ontrolar o LCD atravs da
40us e 5ms, no sero apresentadas por se tratarem das mesmas dos digos do item 4.6.
; ************DEFINIES P/ O LCD*************************************************
53
4 Exemplos de Apli
ao
54
4 Exemplos de Apli
ao
;***********FINAL DE PROGRAMA**************************************************
END
Memria, o que pode ser onveninte quando se tem muitos perifri os no sistema, situao
onde os pinos de E/S do mi ro ontrolador se tornam insu intes para interfa ear todos
perifri os.
tabela a seguir:
tado na gura 4.8, onde se veri a uma lgi a que onstitui o ir uito de seleo ne essrio
para a gerao do sinal de habilitao do LCD om base nos endereos da tabela anterior.
55
4 Exemplos de Apli
ao
Uma restrio ao uso desta t ni a est nos tempos de a esso ao LCD que so mais
uma vez que permite a programao das taxas de transfern ia padro da omuni ao
serial.
A seguir o
digo assembly para o programa Hello World, na verso em que o LCD
usa mapeamento em memria.
;*********DEFINIES DO LCD**********************************************************
56
4 Exemplos de Apli
ao
57
4 Exemplos de Apli
ao
;*********ATRASO DE 5MILIGEG*****************************************************
;***********FINAL DO PROGRAMA***************************************************
END
item ser apresentado uma das muitas maneiras de implementar tal interfa e.
Na gura 4.9, a seguir, pode-se observar que o te lado em questo tem 12 te las or-
ganizadas em uma matriz de 3 olunas e 4 linhas. A matriz est organizada tal que na
Em seguida pro ede-se a leitura das 4 linhas do te lado, one tadas aos pinos P1.3
Passa-se para a oluna 2, levando o pino P1.1 a 0, ou seja enviando a palavra binria
te lado.
58
4 Exemplos de Apli
ao
4.9, para fazer a leitura de um digo numri o de 6 digitos, atravs do te lado matri ial
3x4. A mensagem ENTRE COD: ar presente na primeira linha do LCD, e para ada
um dos 6 dgitos re ebidos via te lado um '*' ser olo ado aps a mensagem. Ao nal,
;*********DEFINIES DO LCD*******************************************************
;*********DEFINIES DO TECLADO*************************************************
59
4 Exemplos de Apli
ao
60
4 Exemplos de Apli
ao
61
4 Exemplos de Apli
ao
62
4 Exemplos de Apli
ao
63
4 Exemplos de Apli
ao
64
4 Exemplos de Apli
ao
;***********FINAL DO PROGRAMA****************************************************
END
utilizar o ir uito integrado ULN2003, bastante popular para este tipo de interfa e. Este
C.I. tem 6 pinos de entrada de sinais lgi os que so usados para o omando de 6 haves
baseadas em transistores darlington. Cada um destes transistores tem uma apa idade
de orrente de 500mA por perodos urtos, e podero ser usados para a ionar as argas
indutivas, a ada sada darlington est asso iada um diodo de roda-livre, sendo portanto
A gura 4.10 mostra omo se pode one tar um motor de passo unipolar a um ULN2003,
e este aos pinos P1.0 a P1.3 da porta P1 do 8051, e assim ontrolar este motor de passo
energizando-se as suas bobinas atravs do ULN2003 one tado a uma fonte de 12V om
65
4 Exemplos de Apli
ao
Para que o motor de passo gire no sentido horrio ne essrio que as bobinas (B1...B4)
B4 B2 B3 B1
P1.3 P1.2 P1.1 P1.0
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
O tre ho de programa a seguir ilustra omo se pode fazer o motor de passo girar no
sentido horrio:
66
4 Exemplos de Apli
ao
;***********FINAL DO PROGRAMA***********************************************
END
software no qual alm dos pinos INT0 e INT1 pode-se usar os pinos T0, T1, e RXD para
as rotinas de interrupo dos T/C0 e T/C1, alm do Canal Serial para tratar os sinais
apli ados aos pinos T0, T1, e RXD omo pinos de interrupo externa.
Com relao ao Canal Serial, este deve ser olo ado no modo 2, e sua interrupo
habilitada;
Quando houver uma transio de alto para baixo no pino RXD, este desvia o pro-
re epo RI deve ser resetado, e ser dado tratamento ao perifri o omo sendo
A seguir a listagem ne
essria para o esquema expli
ado a
ima, onde as instrues NOP
devero ser tro
adas por instrues espe
as do programa que se deseja exe
utar.:
67
4 Exemplos de Apli
ao
;***********FINAL DO PROGRAMA*********************************************
END
68
4 Exemplos de Apli
ao
uma interrupo externa disparada, pode ser til em um grande nmero de apli aes,
da ser apresentada neste exemplo. Mais uma vez o T/C1 ser usado no modo 1, uma vez
que o perodo da onda de 440Hz esta na faixa dos miligegundos (2,5ms), e somente uma
O T/C0 aqui tambm estar no modo 1 de 16 bits, uma vez que o tempo de ativao
do tom de 440Hz ser de 1 segundo, o que pode ser gerado por um tempo de 50ms
multipli ado por 20 (50ms x 20 = 1 s). Ento o T/C0 dever gerar 20 interrupes a ada
69
4 Exemplos de Apli
ao
;*****************FINAL DO PROGRAMA******************************
END
70
4 Exemplos de Apli
ao
ontrolado simples.
A gura 4.9, a seguir, apresenta o ir uito do dimmer, onde se observa que 4 haves
push-button sele ionam as potn ias de 100%, 75%, 50% e 0% entregue arga. Como
pode ser visto na gura, este projeto tem omo base o mi ro ontrolador AT89C2051 om
pinagem de 20 pinos, e 15 linhas de E/S, o su inte para a presente apli ao.
A idia bsi a usar um dos T/C's para gerar os tempos de atraso ne essrios gerao
dos ngulos de disparo do TRIAC orrespondendo s potn ias de 100%, 75%, 50%, e
Os valores das onstantes de arga dos registros de ontagem TH0 e TL0 sero bus ados
dos registros R1 e R2, sempre que for ser gerado o atraso de tempo para o disparo, e os
pressionada.
Os valores de atraso de tempo para o disparo foram feitos em 500us para 100% de
potn ia, 2,25ms para 75%, 4,50ms para 50%, e 6,80ms para 25% de potn ia.
Para que os pulsos de disparo do TRIAC sejam sin ronizados om a rede CA, um
forne e os pulsos que orrespondem ao ruzamento da tenso da rede por 0V, sendo estes
71
4 Exemplos de Apli
ao
72
4 Exemplos de Apli
ao
Implemente um sistema de aquisio de dados que armazene os valores forne idos por um
sensor de temperatura one tado a um onversor A/D tipo R/2R, omo o do exemplo
uma memria externa do tipo 6264. A memria externa deve ser implementada omo um
buer ir ular, no qual aps as 8192 amostras terem sidos armazenadas, volta-se ao in io
Programa Proposto 2:
73
4 Exemplos de Apli
ao
Programa Proposto 3:
Elabore um sistema baseado nos exemplos propostos anteriores que registre os valores
mximos e mnimos provenientes do onversor A/D tipo ADC0804 one tado ao sensor
Programa Proposto 4:
Com base no exer io proposto anterior elabore um sistema que apresente ontinuamente
Programa Proposto 5:
Modique o exemplo de apli ao 4.5 para que ao invs de se armazenar os dados em uma
memria SRAM, estes sejam transmitidos serialmente a uma taxa de 9600bps para um
mi ro omputador PC.
Programa Proposto 6:
No exemplo 4.4 foi mostrado um sistema de aquisio de dados baseado em um ADC tipo
R/2R de 7 bits de resoluo, porm se deseja uma resoluo de 8 bits de forma a melhorar
a qualidade dos dados. Faa um novo esquema eltri o e es reva um novo digo para
74
5 IDE KEIL uVision2
Compilador C
Assembler
Linker
Debugger
Sendo um dos melhores e mais difundidos IDE's para a plataforma 8051, disponveis no
mer ado, possui uma verso de avaliao que pode ser baixada gratuitamente da internet,
programa em linguagem assembly, ujo digo fonte o arquivo onda10k.asm, o qual foi
apresentado no item 3.3.2. O programa tem omo funo gerar uma onda quadrada de
Observa-se da tela da gura 4.1, que o fun ionamento dos perifri os utilizados no
podem ser a ompanhados na simulao, atravs de janelas representando estes perifri os,
erro de lgi a.
75
5 IDE KEIL uVision2
para o 8051 usando o uVision2, ser usado o exemplo da gerao de uma onda quadrada
Simulao ou Debug
76
5 IDE KEIL uVision2
Na barra de ferramentas sele ione a opo Proje t, e sub-opo New, omo mostrado
na gura 4.3.
A janela Create New Proje t se abre, e nesta deve-se atribuir um nome ao projeto,
77
5 IDE KEIL uVision2
Na janela seguinte de ttulo: 'Sele t Devi e for Target Target1', uma lista de fabri antes
A gura 4.6. mostra a es olha de um fabri ante/dispositivo da famlia 8051 que ser
alvo do desenvolvimento.
78
5 IDE KEIL uVision2
Aps a es olha do dispositivo alvo para o desenvolvimento, ser apresentada uma aixa
es olher a opo No, e assim deixar o digo mais inxuto, gura 4.7.
O passo seguinte a edio do digo fonte, e para isso a barra de ferramentas sele ione
79
5 IDE KEIL uVision2
Na gura 4.10, pode-se ver um digo fonte editado e pronto para ser salvo atravs da
opo Save As do menu File. Al um nome om extenso asm deve ser espe i ado.
80
5 IDE KEIL uVision2
Cdigo fonte em linguagem assembly, aps salvo deve ser adi ionado ao projeto. Cli-
ando duas vezes no one Target1, da janela Proje t Workspa e, o one Sour e Group1
81
5 IDE KEIL uVision2
Na janela de seleo de arquivo deve-se sele ionar o arquivo fonte que se deseja in luir
no projeto, aso haja mais de um arquivo fonte deve-se repetir a operao, aso ontrrio
O(s) arquivo(s) fonte in luido(s) apare ero na lista referente ao one Sour e Group1,
82
5 IDE KEIL uVision2
Com o projeto riado, pode-se exe utar os programas assembler e linker, invo ados no
83
5 IDE KEIL uVision2
Para isso deve-se no menu Debug es olher a opo Start/Stop Debugging, ver gura 4.17.
84
5 IDE KEIL uVision2
primeira instruo do programa indi ando a posio do ontador de programa, ver gura
4.19.
Ao se exe utar o programa passo a passo, atravs da opo Step Into do menu Debug,
85
5 IDE KEIL uVision2
interrupes pode ser olo ada no ambinte de trabalho, atravs do menu Peripherals,
86
5 IDE KEIL uVision2
A gura 4.24 apresenta a rea de trabalhho om a janela que simula a porta 1 possibi-
87
5 IDE KEIL uVision2
isto sele ione no menu Peripherals, a opo Timers, sub-opo Timer0, ver gura 4.24.
88
5 IDE KEIL uVision2
89
Refern
ias Bibliogr
as
[1 80C51-Based 8-Bit Mi
ro
ontrollers - Databook, Philips Semi
ondu
tors, Julho de
1994;
[2 Appli ation Notes for 80C51-Based 8-Bit Mi ro ontrollers - Databook, Philips Semi-
[3 Apli aes Prti as do Mi ro ontrolador 8051, Silva Jnior, Vidal Pereira da. Editora
ri a, 2003.
2002.
90