Escolar Documentos
Profissional Documentos
Cultura Documentos
Microcontroladores
Família MCS51
1.1.2 Mi ro ontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.7.3 Ativação das Interrupções Externas por Borda ou Nível - Bits IT0
2.8 Temporizadores/Contadores 0 e 1 . . . . . . . . . . . . . . . . . . . . . . . 23
(TH0/TL0 e TH1/TL1) . . . . . . . . . . . . . . . . . . . . . . . . 24
3
Sumário
8 bits em TL0 . . . . . . . . . . . . . . . . . . . . . . . . . 26
Endereçamento Direto . . . . . . . . . . . . . . . . . . . . . . . . . 32
Endereçamento Indireto . . . . . . . . . . . . . . . . . . . . . . . . 32
Constante Imediata . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Endereçamento Indexado . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.4 Booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.5 Desvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4
Sumário
Programa Proposto 5: . . . . . . . . . . . . . . . . . . . . . . . . . 74
Programa Proposto 6: . . . . . . . . . . . . . . . . . . . . . . . . . 74
5
1 Introdução
1.1 Con
eitos Importantes
O diagrama em blo
os da gura 1.1, abaixo ilustra um sistema mínimo mi
ropro
essado,
instruções podem estar rela ionadas om operações lógi as, aritméti as, de a esso
• Memória de Programa: é nesta memória do tipo não volátil (ou seja do tipo ROM,
EPROM, ou FLASH) que o programa a ser exe utado pelo mi ropro essador a ar-
• Memória de Dados: é nesta memória do tipo volátil (RAM) que os dados a serem
6
1 Introdução
entes das portas de entrada, por exemplo um te lado, ou então podem ser gerados
para que a CPU possa ini ializar seus registros internos, e omeçar a exe utar as
instruções do rmware.
• Cir uito de Seleção: Responsável pelo forne imento dos sinais de seleção, e habili-
entrada e saída, e as memórias. Este onjunto de linhas são bidire ionais, e a CPU
rias, periféri os, e ao ir uito de seleção, e a CPU sempre forne e sinais de ontrole,
1.1.2 Mi ro ontroladores
Em um sistema mínimo, omo mostrado na gura 1.1, muitos ir uitos são ne essários,
o que o torna de difí il implementação, om muitas inter onexões entre os vários blo os
omplexo não há maneira de evitar estas di uldades, e o usto benefí io é razoável.
ontrolar uma máquina, por exemplo: uma máquina de lavar roupa, um sistema mínimo
omo o mostrado a ima se mostra máximo, gerando pla as de ir uito impresso grandes e
om muitos omponentes, in ompatível om a apli ação destinada. Para solu ionar este
problema existe uma outra lasse de dispositivos que substitui o sistema mínimo anterior,
úni o ir uito integrado. Eles são produzidos de forma a ofere er uma variedade muito
grande de dispositivos, o que ara teriza uma família de dispositivos, alguns deles sendo
7
1 Introdução
E/S, e periféri os, outros porém, in orporam periféri os sosti ados, e já não podem ser
Existem várias famílias de mi ro ontroladores omer iais, entre eles os mais importantes
são:
a implementação de sistemas das mais variadas apli ações, omo sistemas de ontrole
Esta fa ilidade se baseia, omo já dissemos, no fato de muitos ir uitos ne essários para
trolador, simpli ando em muito a onstrução do sistema nal, e liberando tempo para o
Vamos estudar aqui os mi ro ontroladores da família 8051, por ser o mais popular, e por
de dispositivos no mer ado na ional, e obviamente o usto atrativo. Além disto, existe
uma grande profusão de informações a respeito desta família na internet, e muitos títulos
8
2 A Família 8051 de
Mi
ro
ontroladores
2.1 Cara
terísti
as Gerais
A família 8051 é
onstituída de uma série grande de dispositivos, de vários fabri
antes im-
• CPU de 8 bits;
• Memória EEPROM;
• 2 Interrupções externas;
• 32 Pinos de E/S, ou seja: 4 Portas de 8 bits de entrada e saída (P0, P1, P2, P3);
• 1 Interfa e serial;
• et , et ...
Além disto a maioria deles pode endereçar até 64KB de RAM externa e até 64KB de
modo de baixo onsumo (Power Down), além 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 estão sumarizados alguns dispositivos populares da família 8051,
9
2 A Família 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. Não 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 memória EEPROM, SPI,
10
2 A Família 8051 de Mi
ro
ontroladores
seguir.
11
2 A Família 8051 de Mi
ro
ontroladores
• V
- Tensão de Alimentação
• GND - Referên
ia de Terra
• PO.0...P0.7 - Porta de 8 bits bidire
ional de entrada e saída, em dreno aberto. Quanto 1's
são es
ritos nestes pinos estes estarão em tri-state e poderão ser usados
omo entradas em
alta impedân
ia. Além disto a porta 0 tem a função alternativa de multiplexar dados
om
o byte inferior de endereços durante o a
esso à memória externa de dados ou programa.
• RESET - Entrada de Reset ativo em alto, devendo permane
er em pelo menos 2
i
los de
máquina (24
i
los de
lo
k). Para um Reset de Ini
ialização (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 Família 8051 de Mi
ro
ontroladores
zer uso de alguma memória externa as portas P0 e P2 estarão exer endo a segunda
função asso iada a elas, qual seja o interfa eamento om estas memórias RAM e ROM
Neste aso a porta P0 será usada omo barramento de dados / endereços multiplexados,
e seus pinos serão designados agora omo AD0-AD7, transferindo dados e forne endo, de
forma multiplexada om estes, o byte inferior de endereço. A porta P2, por sua vez,
forne erá o byte superior de endereços A8-A15, simultâneamente ao forne imento do byte
inferior pela porta P0. Os sinais de ontrole de leitura e es rita RD\ e WR\, são forne idos
por dois pinos da porta P3, e o sinal que permite ao hardware sele ionar a memória ROM
Enable). Outro sinal do 8051 envolvido no a esso à memória externa é o sinal ALE
(Address Lat h Enable) que é responsável pelo travamento do byte A0-A7 de endereço no
lat h olo ado entre a porta P0 e as linhas de endereços da memória, pro esso este que
13
2 A Família 8051 de Mi
ro
ontroladores
tem apa idades variadas de memória do tipo OTPROM, EPROM, ou Flash, que vão
desde 4KB até 32KB em alguns elementos, mas na maioria dos dispositivos esta será de
Considerando a ondição a ima, esta memória será a essada aso o pino EA\ (External
A ess) esteja em nível lógi o alto, ou seja desativado. Caso se deseje, além destes 4KB
64KB, os 60KB adi ionais serão a essados da memória de programa externa. A exe ução
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 à memória de programa será sempre externo. Mesmo
que o mi ro ontrolador possua memória de programa interna esta não será a essada, e
14
2 A Família 8051 de Mi
ro
ontroladores
sua presença será ignorada, sendo a exe ução do programa ini iada na posição zero da
ROM externa.
128 ou 256 bytes, e SRAM externa de até 64KB, esta quando existente.
Na gura a seguir está ilustrado a memória de dados externa, eviden iando-se o a esso
15
2 A Família 8051 de Mi
ro
ontroladores
sendo este o diferen ial entre os dois tipos de a essos. Por exemplo a instrução MOV é
usada para leitura/es rita da SRAM interna, enquanto a instrução MOVX é a ontrapar-
tida relativa a memória SRAM externa, maiores detalhes destas instruções serão vistas
Os a essos à SRAM interna do 8051 podem ter diferentes ara terísti as dependendo da
região desta que está sendo a essada. Na região da SRAM interna ompreendida entre
os endereços 0 e 127, está a área dos Registros de Uso Geral e Pilha, enquanto a área de
128 a 255 é onde estão lo alizados os Registros de Funções Espe iais, ver gura 2.7 a seguir.
A área da SRAM interna denominada de Registros de Uso Geral e Pilha, uja função é
identi ados na gura 2.8. Como pode ser notado desta gura, as regiões ompreendem
os quatro ban os de registros: ban o 0 a ban o 3, região bit e byte endereçável, e região
somente byte endereçável. Cada uma destas regiões 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 seleção do ban o é feita através dos bits RS0 e RS1 do registro PSW (Program Status
O uso destes registros (R0...R7) nas instruções provê uma instrução om um byte a
16
2 A Família 8051 de Mi
ro
ontroladores
Além disto em algumas instruções o registro poderá onter o endereço do dado, daí
A outra faixa de endereços de 20H a 7FH (32 a 127) se ara teriza por a esso via
espe i ação do endereço, ou seja sem o uso dos registros R0...R7, sendo que o endereço
na SRAM é diretamente olo ado na instrução. Cabe ainda ressaltar que a região entre
os endereços 20H e 2FH tem omo ara terísti a espe ial a possibilidade de se endereçar
Os a essos à RAM interna do 8051 na faixa de 128 a 255, a essam os registros de funções
espe iais, que estão asso iados aos diversos registros asso iados aos vários re ursos do
O onhe imento da estrutura de ada um destes registro é de suma importân ia, visto
que permite programar os vários periféri os omo anal serial, temporizadores/ ontadores,
ontrolar ara terísti as da CPU omo modos de baixo onsumo, interrupções, e a essar as
17
2 A Família 8051 de Mi
ro
ontroladores
portas de entrada e saída. Assim após apresentar a lista de registros de funções espe iais,
Este registro de 8 bits indi a o Status do pro essador, ou seja, indi a a o orrên ia de
a seguir:
CY AC F0 RS1 RS0 OV P
18
2 A Família 8051 de Mi
ro
ontroladores
sinalizados
seguir:
Observa-se desta gura que os pinos das portas são onstituidos basi amente de um
lat h (ip-op tipo D), dois buers tri-state, e um driver de saída. Para se levar um
pino de saída de uma porta a nível lógi o 1 ou 0, as instruções exe utam uma es rita no
lat h, que ontrola o fet do driver de saída através do sinal de saída Q omplementada,
obviamente que quando o fet de saída está em ON o pino apresentará nível lógi 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, através do buer inferior na gura, o outro omanda a leitura do lat h,
através do buer superior da gura. Con lui-se então, que existem instruções que não
lêem o pino, mas ao invés disto lêem a saída do lat h, e um uidado adi ional deve ser
tomado quando se usar tais instruções. Como regra as instruções que exe utam a sequên-
ia Lê-Modi a-Es reve, são aquelas que lêem o lat h ao invés do pino, exemplos de tais
isntruções são:
19
2 A Família 8051 de Mi
ro
ontroladores
ANL ; E lógi o, ex: ANL P1,A SETB Pn.i ; Seta Pn.i, ex: SETB P2.3
ORL ; OU lógi 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 instruções do 8051 será visto no apítulo 3, portanto o leitor
A razão de existir instruções que lêem o pino da porta, enquanto outras lêem o lat h,
é para que não haja uma falsa interpretação da tensão presente no pino. Como exemplo,
neste pino, o transistor é saturado, porém, se efetuada uma leitura posterior neste pino o
mesmo apresentará a tensão de base do transistor saturado, o que será interpretado omo
nível lógi 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 saída, one tados, por exemplo, à dispositivos simples
omo haves e leds, omo também podem ser usadas omo barramentos de 8 bits, e inter-
fa ear dispositivos periféri os omo displays inteligentes, onversores A/D, e D/A. Deve-se
seus pinos dotados de funções alternativas, então ertos pinos poderão estar indisponíveis
Uma parti ularidade que a porta P0 apresenta é sua saída ongurada omo dreno
aberto, ao ontrário demais portas que apresentam o pull-up interno. Esta ara terísti a
faz om que a porta tenha seus pinos utuando quando em aberto. Como onsequên ia
deste fato, a porta P0 poderá drenar até 8 argas TTL, ao ontrário 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 saída em OFF, então 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 região dos Registros de Funções
Espe iais da memória SRAM interna, om endereços espe í os que podem ser referidos
nas instruções (ver tabela 2.2), porém é mais onveniênte se referir ao nome da porta
nestas instruções, o que assegura uma maior legibilidade ao ódigo fonte. Por exemplo a
instrução:
Cabe também lembrar, que os bits das portas tem endereços espe í os, uma vez que
estão em uma região de memória bit endereçável. Portanto, quando se deseja a essar um
20
2 A Família 8051 de Mi
ro
ontroladores
bit de uma porta, pode-se referir ao endereço deste bit, ou usar a notação 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 três internas, geradas pelos temporizadores/ ontadores
INT1 Interrupção externa gerada pelo pino P3.3 da porta P3, ativo baixo. 0013H
Serial Canal Serial. A interrupção o orre quando o buer do anal serial 0023H
é a seguinte:
É através deste registro de 8 bits que se pode sele ionar a habilitar/desabilitar as inter-
• bit EA: Setado permite habilitar as fontes de interrupção que forem individualmente
sele ionadas através dos bits ES, ET1, EX1, ET0, e EX0. Resetado desabilita toda
• bit ES: Setado permite sele ionar a interrupção da interfa e serial para ser usada
21
2 A Família 8051 de Mi
ro
ontroladores
• bit ET1: Setado permite sele ionar a interrupção do temporizador/ ontador1 para
• bit EX1: Setado permite sele ionar a interrupção externa 1 para ser usada quando
EA for setado;
• bit ET0: Setado permite sele ionar a interrupção do temporizador/ ontador0 para
• bit EX0: Setado permite sele ionar a interrupção externa 0 para ser usada quando
EA for setado.
deveria ter os bits EX0, EX1, e EA setados, assim a instrução a seguir poderia ser usado
para tal:
Ou ainda, as três linhas de programa podem ser usadas, desde que os demais bits do
SETB EX0
SETB EX1
SETB EA
• bit PS: Setado permite que a interrupção do anal serial tenha a mais alta priori-
• bit PT1: Setado permite sele ionar a interrupção do temporizador/ ontador1 para
• bit PX1: Setado permite sele ionar a interrupção externa 1 para ser a de mais alta
externa 1 inalterada;
22
2 A Família 8051 de Mi
ro
ontroladores
• bit PT0: Setado permite sele ionar a interrupção do temporizador/ ontador0 para
• bit PX0: Setado permite sele ionar a interrupção externa 0 para ser a de mais alta
externa 0 inalterada.
As interrupções externas INT0 e INT1 podem ser ativadas tanto por nível quanto por
borda de des ida, e esta seleção pode ser feita através 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 ativação da interrupção externa 1 por borda
de des ida do sinal presente no pino INT1. Resetado sele iona a ativação de INT1
por nível;
• bit IE0: Setado por hardware quando o pino INT0 vai de alto para baixo. Resetado
• bit IT0: Setado permite sele ionar a ativação da interrupção externa 0 por borda
de des ida do sinal presente no pino INT0. Resetado sele iona a ativação de INT0
por nível.
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 Família 8051 de Mi
ro
ontroladores
Observa-se que no diagrama em blo os da arquitetura dos T/C's, alguns registros tais
omo: TL0/1, TH0/1, TCON e TMOD são referidos em pontos haves do diagrama.
para que se possa ompreender o fun ionamento geral dos T/C. A seguir estes vários
(TH0/TL0 e TH1/TL1)
Estes dois registros de 8 bits, TH0 e TL0, ou TH1 e TL1, são usados para a arga
dos valores ini iais de ontagem dos T/C's, sendo sempre de forma res ente até o valor
máximo, 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. Após este valor máximo de
ontagem ter sido atingido o sinalizador TF0 ou TF1 é setado indi ando esta o orrên ia,
e aso a interrupção asso iada ao T/C em questão esteja habilitada, uma interrupção é
gerada.
Este registro de 8 bits, mostrado abaixo, é usado para ontrolar a operação dos T/C's,
e para isto somente os 4 bits mais signi ativos são usados para esta função, ver gura
24
2 A Família 8051 de Mi
ro
ontroladores
• bit TF1 ou TF0: Setado por hardware sempre que o T/C em questão 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 operação
• bit G0 ou G1: Usado para sele ionar o tipo de ontrole de disparo do T/C, ou seja,
se este é ontrolado apenas através do bit TRn (Gn - Resetado), ou através do bit
• bit T/C0 ou T/C1: Usado para sele ionar a operação do T/C omo temporizador
• bits M0-0/M1-0 ou M0-1/M1-1: Estes dois bits tem omo função 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 máximo valor de ontagem de 255. O registro
TH0 ou TH1, neste modo forne e uma pré divisão (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
TH1 e TL1 são vistos omo um úni o registro de 16 bits, sendo a ontagem implementada
25
2 A Família 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 máximo 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 essário a interrupção do T/C1. O
outro registro do T/C0, o TL0 poderá fun ionar omo um temporizador adi ional de 8
sín rona, assín rona, om taxas de transmissão xa, ou variável. Os registros asso iados
a programação do anal serial são os seguintes: SBUF - Buer do Canal Serial, e SCON
- Controle do Canal Serial. Estes registros são des ritos mais a diante.
Uma transmissão 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 epção para ser habilitada deverá ter o bit REN - Re epção Habilitada, do registro
de ontrole SCON, setado e os bits quando re ebidos pelo pino RXD da porta P3 serão
Este registro de 8 bits, mostrado abaixo, é usado para sele ionar os modos de operação
• bits TI e RI: Requisição de transmissão/re epção setado por hardware sempre que
• bits TB8 e RB8: São usados para inserção de bits de ontrole pelo usuário, tais
26
2 A Família 8051 de Mi
ro
ontroladores
• bits SM0 / SM1: Estes dois bits tem omo função sele ionar um dentre quatro
• bit SM2: Habilita Comuni
ação Mutipro
essador, nos modos 2 e 3. RI não será
◦
ativado se o 9 bit é zero.
Neste modo o anal serial é olo ado no modo Registrador de Deslo amento (Shift Regis-
ter) no qual os dados entram e saem serialmente através do pino RXD, e no pino TXD o
lo k é enviado. Neste aso, os termos RXD e TXD não 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 epção quando o bit REN do registro SCON é setado, e o ag de re epção
RI é resetado.
Neste modo o anal serial é olo ado no modo Re eptor/Transmissor Universal Assín rono
(UART), onde o dado om 8 bits seriais são pre edidos por um start bit em nível baixo,
e seguido por um stop bit em nível alto. O stop bit é opiado no bit RB8 do SCON na
re epção que tem iní io quando o start bit é re ebido no pino RXD sendo sensível a borda
27
2 A Família 8051 de Mi
ro
ontroladores
Neste modo o anal serial é olo ado no modo UART de 9 bits seriais, que omo no modo
anterior são pre edidos por um start bit em nível baixo, e seguido por um stop bit em
nível alto. Quando da re epção o bit RB8 do SCON é reservado para re eber o nono bit
da palavra de dado, ao invés de re eber o stop bit omo no modo 1. Na transmissão 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 transmissão é programada pelo timer 1, omo no
modo 1.
A tabela a seguir poderá ser usada na programação do Canal Serial para a geração de
taxas de transmissão (Baud Rate) típi as omo aquelas nela apresentadas. Para tanto o
Timer/Counter 1 deve ser usado omo temporizador no modo 2, ou seja modo autoreload,
e os valores de ontagem ini iais em TH1 são aqueles mostrados na última oluna da
tabela.
28
2 A Família 8051 de Mi
ro
ontroladores
O exemplo de apli ação 4.10 ilustra a programação do anal serial em 9600bps onde as
letras de 'a' até 'z' são enviadas onse utivamente e de forma ontínua para um mi ro-
omputador PC.
gia, por exemplo, no aso de equipamentos portáteis e alimentados por baterias, pode-se
ontar om os dispositivos da família 8051 om te nologia CMOS, que ofere em dois mo-
pelos bits de ontrole IDL e PD, do registro de ontrole de potên ia PCON, mostrado a
seguir.
Este registro de 8 bits, mostrado abaixo, é usado para sele ionar os modos de operação de
serial SMOD, já dis utido no item 2.9, além de dois bits de sinalização de uso geral GF0
• bits PD e IDL: Estes dois bits tem omo função sele ionar o modo de operação em
Neste modo de operação, que pode ser ativado setando-se o bit de ontrole IDL, lo alizado
Quando o mi ro ontrolador entra no modo Idle, após a instrução que seta o bit IDL, o
status da UCP é mantido omo estava antes da exe ução desta instrução, e os registros
de status PSW, o ontador de programa PC, apontador de pilha SP, além do a umulador
A, e demais registros se manterão inalterados. Além disto o estado dos pinos das portas
Para que o mi ro ontrolador possa sair do modo Idle, existem dois me anismos: através
29
2 A Família 8051 de Mi
ro
ontroladores
No primeiro aso, onde uma interrupção é gerada, o bit IDL é automati amente resetado
quando do atendimento da interrupção, e após a rotina ter sido exe utada, retornando
através de uma instrução RETI, o programa segue o uxo exe utando a instrução que
mantido por pelo menos 24 i los de lo k, e assim a exe ução pela UCP, da mesma forma
que no aso anterior, segue o uxo exe utando a instrução que vem logo após aquela que
para o mi ro ontrolador sair do modo Idle, o que orresponde ao tempo de exe ução do
algoritmo de reset interno, este tempo deve ser o upado por 3 instruções NOP para evitar
Neste outro modo de baixo onsumo, ativado quando se leva o bit de ontrole PD, também
30
3 Programação em Assembly do
8051
3.1 Conjunto de Instruções do 8051
A título de estudo, as instruções do 8051 podem ser
lassi
adas em 5 tipos diferentes,
onforme abaixo:
• Transferên ia de Dados
• Aritméti as
• Lógi as
• Booleanas
• Desvio
Os tipos de instruções listados a ima serão estudados em detalhes no item 3.2, porém
na família 8051.
O modo omo dados são a essados nas instruções do 8051, é o que se hama de modo de
• Endereçamento Direto
• Endereçamento Indireto
• Endereçamento Indexado
31
3 Programação em Assembly do 8051
Endereçamento Direto
Endereçamento Indireto
Constante Imediata
exemplo a seguir:
Endereçamento Indexado
Neste tipo de endereçamento o dado é a essado na posição de memória espe i ada omo
em A. Neste endereço assim onstituído o registro A pode ser variado para fazer indexa-
ções. Pode-se apli ar tal modo de endereçamento no a esso à memória de ódigo, para
32
3 Programação em Assembly do 8051
São basi amente as instruções de move, ujos mnemni os existentes são: mov, movx, e
mov , além das instruções de operação 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 Instrução
33
3 Programação em Assembly do 8051
todas as variantes dos modos de endereçamento, além da instrução de ajuste de imal para
* Bytes da Instrução
tes ofere idas pelos modos de endereçamento, além de CLR, resetar todos bits, e CPL,
omplemento.
34
3 Programação 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 Instrução
3.2.4 Booleanas
São as instruções que operam sobre bits, lembrando que a RAM interna possui 128 bits
endereçáveis, e que no espaço da RAM interna destinada aos registros de funções espe iais
existem mais 128 bits endereçáveis, a essados portanto através de instruções booleanas.
35
3 Programação em Assembly do 8051
MOV C, bit Move bit direto para o ag de arry MOV C, P1.0 2 12
JNB bit, relativo Desvia se bit direto não setado JNB DESVIO 2 24
JBC bit, relativo Desvia se bit direto setado e reseta bit JBC TF0, L1 3 24
* Bytes da Instrução
3.2.5 Desvio
• Chamada de rotinas
• Retorno de rotina
36
3 Programação 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 operação NOP 1 12
* Bytes da Instrução
37
4 Exemplos de Apli
ação
A seguir serão apresentados exemplos de apli
ações,
om soluções de hardware e software,
desde programas muito simples ilustrando o uso das Portas de E/S, Interrupções Externas,
fa es entre o 8051 e periféri os tais omo: displays de ristal líquido inteligentes (LCD),
passo.
Muitos dos exemplos aqui apresentados serão ú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.
A ontagem em 8 bits do T/C0 pode gerar tempos de até 256us, superior portanto ao
ne essário para a geração da onda quadrada de 10KHz que tem um período de 50us, ver
Para se gerar a onda quadrada a ada 50us será gerada uma interrupção pelo T/C0 e o
pino P1.0 será omplementado na rotina de interrupção usando-se a instrução CPL, indo
de 0 a 1 ou de 1 a 0.
38
4 Exemplos de Apli
ação
utilizando para isto dois sensores de temperatura one tados aos pinos de interrupção
externa INT0 e INT1. Quando INT0 re eber o sinal de ativação do sensor de 120?C, o
forno deve ser desligado, uma vez que a temperatura atingiu o valor máximo. Da mesma
forma quando a interrupção 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
ação
JB INT0, LOOP
o
; VERIFICA SE O SENSOR DE 120 C ESTÁ ATIVO
sem o uso do re urso de interrupções. Para isto, os bits sinalizadores de ativação dos
pinos de interrupção, IE0 e IE1, lo alizados no registro TCON (ver item 2.7.3), poderão
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 interrupções, este não apresenta a mesma exibilidade que o primeiro, uma vez que
não permite que outras tarefas possam ser realizadas em paralelo ao monitoramento dos
pinos de interrupção. Veri a-se que no aso do uso de interrupções, onde o programa
nada de útil, é plenamente possível embutir algum ódigo no lugar deste loop innito, e
40
4 Exemplos de Apli
ação
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 período de 100us, pela mesma razão apresentada
mi ro ontrolador.
A apa idade de gerar tempo dos T/C's no modo 2 é de no máximo 256us, ou 0,256mS,
e pelo fato da onda de 1KHz possuir um período de 1ms, o que ex ede esta apa idade o
serão habilitadas e então geradas para atuar nos pinos P1.6 e P1.7 onde o estado destes
41
4 Exemplos de Apli
ação
digitais é utilizar um onversor A/D do tipo R2R. A gura 4.4, ilustra omo se imple-
Para se efetuar a onversão da tensão de entrada analógi a para uma palavra digital,
neste exemplo se utilizou uma rede R2R om resolução de 7 bits, o que resulta em um
ções esta resolução pode ser pobre, porém para a maioria das apli ações em ontrole de
42
4 Exemplos de Apli
ação
pro essos tal resolução é mais que su iênte. De qualquer forma, aso seja ne essário uma
resolução 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 onversão. Após o nal da onversão, o onversor envia
um sinal pelo seu pino INTR que está one tado ao pino INT0 do 8051. A rotina da
interrupção externa INT0 por sua vez pro ede a leitura do ADC0804 enviando o valor
43
4 Exemplos de Apli
ação
A gura 4.4, a seguir ilustra a onexão 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 restrições de memória
do sistema implementado.
44
4 Exemplos de Apli
ação
é uma das formas mais efetivas de prover uma interfa e homem-máquina de baixo usto
ara teres ada. Estes omponentes ontém um ir uito ontrolador (HD44780) que ge-
ren ia a es rita das mensagens no display, sendo apenas ne essário que o mi ro ontrolador
1 GND Terra
2 V
Alimentação de +5V
3 Pot Terminal
entral do trimpot
4 RS Register Sele
t - Seleção de Registro
5 RW Read/Write - Sinal de Leitura e Es
rita
6 EN Enable - Sinal de Habilitação
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
ação
ontrole próprias, que permitem ongurar várias ara terísti as deste, tais omo:
• Ligar o LCD/Cursor
• Desligar o LCD/Cursor
• Pis ar ursor.
Para se pro eder a programação do LCD os sinais RS e RW devem sele ionar a es rita no
registro de ontrole, e o sinal de habilitação deve ser ativado. Então 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 operação estão os modos de interfa e em 4 ou 8 bits de
Para maiores detalhes de operação dos LCD's padrão Hita h, onsultar do umentação
A seguir será apresentado um programa para es rita da mensagem Hello World no LCD,
na gura 4.5.
46
4 Exemplos de Apli
ação
47
4 Exemplos de Apli
ação
;*********ATRASO DE 5MILISEG******************************************************
;*********FINAL DE PROGRAMA****************************************************
Nesta outra versão do exemplo anterior, o LCD é interfa eado om o 8051 através de 4
Somente os pinos de P1.4 a P1.7 são one tados aos pinos de dados mais sigi ativos
38H.
48
4 Exemplos de Apli
ação
DADO EQU P1
49
4 Exemplos de Apli
ação
50
4 Exemplos de Apli
ação
;*********ATRASO DE 1MILISEGUNDO**********************************************
51
4 Exemplos de Apli
ação
;*********FIM DE PROGRAMA*****************************************************
END
ne essita de pinos ad ionais, pode-se re orrer à expansão das linhas de saída através 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 através deste a um 8051.
52
4 Exemplos de Apli
ação
Como visto na gura 4.7, através de 2 linhas da porta P1, são forne idos os bits de
dados serializados, e o sinal de lo k para o registrador de deslo amento, que após ter
A seguir será apresentado o ódigo que possibilita o 8051 ontrolar o LCD através da
40us e 5ms, não serão apresentadas por se tratarem das mesmas dos ódigos do item 4.6.
; ************DEFINIÇÕES P/ O LCD*************************************************
53
4 Exemplos de Apli
ação
54
4 Exemplos de Apli
ação
;***********FINAL DE PROGRAMA**************************************************
END
Memória, o que pode ser onveniênte quando se tem muitos periféri os no sistema, situação
onde os pinos de E/S do mi ro ontrolador se tornam insu iêntes para interfa ear todos
periféri os.
tabela a seguir:
tado na gura 4.8, onde se veri a uma lógi a que onstitui o ir uito de seleção ne essário
para a geração do sinal de habilitação do LCD om base nos endereços da tabela anterior.
55
4 Exemplos de Apli
ação
Uma restrição ao uso desta té ni a está nos tempos de a esso ao LCD que são mais
lentos que o máximo lo k do 8051, então a frequên ia de lo k máxima do 8051 não deverá
uma vez que permite a programação das taxas de transferên ia padrão da omuni ação
serial.
A seguir o
ódigo assembly para o programa Hello World, na versão em que o LCD
usa mapeamento em memória.
;*********DEFINIÇÕES DO LCD**********************************************************
56
4 Exemplos de Apli
ação
57
4 Exemplos de Apli
ação
;*********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 questão 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 binária
te lado.
58
4 Exemplos de Apli
ação
4.9, para fazer a leitura de um ódigo numéri o de 6 digitos, através do te lado matri ial
3x4. A mensagem ENTRE COD: ará presente na primeira linha do LCD, e para ada
um dos 6 dígitos re ebidos via te lado um '*' será olo ado após a mensagem. Ao nal,
;*********DEFINIÇÕES DO LCD*******************************************************
;*********DEFINIÇÕES DO TECLADO*************************************************
59
4 Exemplos de Apli
ação
60
4 Exemplos de Apli
ação
61
4 Exemplos de Apli
ação
62
4 Exemplos de Apli
ação
63
4 Exemplos de Apli
ação
64
4 Exemplos de Apli
ação
;***********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 lógi os que são usados para o omando de 6 haves
baseadas em transistores darlington. Cada um destes transistores tem uma apa idade
de orrente de 500mA por períodos urtos, e poderão ser usados para a ionar as argas
indutivas, a ada saída 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 através do ULN2003 one tado a uma fonte de 12V om
65
4 Exemplos de Apli
ação
Para que o motor de passo gire no sentido horário é ne essário 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 horário:
66
4 Exemplos de Apli
ação
;***********FINAL DO PROGRAMA***********************************************
END
software no qual além dos pinos INT0 e INT1 pode-se usar os pinos T0, T1, e RXD para
as rotinas de interrupção dos T/C0 e T/C1, além do Canal Serial para tratar os sinais
apli ados aos pinos T0, T1, e RXD omo pinos de interrupção externa.
• Com relação ao Canal Serial, este deve ser olo ado no modo 2, e sua interrupção
habilitada;
• Quando houver uma transição de alto para baixo no pino RXD, este desvia o pro-
re epção RI deve ser resetado, e será dado tratamento ao periféri o omo sendo
A seguir a listagem ne
essária para o esquema expli
ado a
ima, onde as instruções NOP
deverão ser tro
adas por instruções espe
í
as do programa que se deseja exe
utar.:
67
4 Exemplos de Apli
ação
;***********FINAL DO PROGRAMA*********************************************
END
68
4 Exemplos de Apli
ação
uma interrupção externa é disparada, pode ser útil em um grande número de apli ações,
daí ser apresentada neste exemplo. Mais uma vez o T/C1 será usado no modo 1, uma vez
que o período da onda de 440Hz esta na faixa dos miligegundos (2,5ms), e somente uma
O T/C0 aqui também estará no modo 1 de 16 bits, uma vez que o tempo de ativação
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). Então o T/C0 deverá gerar 20 interrupções a ada
69
4 Exemplos de Apli
ação
;*****************FINAL DO PROGRAMA******************************
END
70
4 Exemplos de Apli
ação
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 potên 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 iênte para a presente apli ação.
A idéia bási a é usar um dos T/C's para gerar os tempos de atraso ne essários à geração
dos ângulos de disparo do TRIAC orrespondendo às potên ias de 100%, 75%, 50%, e
Os valores das onstantes de arga dos registros de ontagem TH0 e TL0 serão 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
potên ia, 2,25ms para 75%, 4,50ms para 50%, e 6,80ms para 25% de potên 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 tensão da rede por 0V, sendo estes
71
4 Exemplos de Apli
ação
72
4 Exemplos de Apli
ação
Implemente um sistema de aquisição 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 memória externa do tipo 6264. A memória externa deve ser implementada omo um
buer ir ular, no qual após as 8192 amostras terem sidos armazenadas, volta-se ao iní io
Programa Proposto 2:
73
4 Exemplos de Apli
ação
Programa Proposto 3:
Elabore um sistema baseado nos exemplos propostos anteriores que registre os valores
máximos e mínimos 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 ação 4.5 para que ao invés de se armazenar os dados em uma
memória 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 aquisição de dados baseado em um ADC tipo
R/2R de 7 bits de resolução, porém se deseja uma resolução de 8 bits de forma a melhorar
a qualidade dos dados. Faça um novo esquema elétri 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, disponíveis no
mer ado, possui uma versão de avaliação 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 função gerar uma onda quadrada de
Observa-se da tela da gura 4.1, que o fun ionamento dos periféri os utilizados no
podem ser a ompanhados na simulação, através de janelas representando estes periféri os,
possibilitando assim veri ar om pre isão a exe ução do programa, e deteção de qualquer
erro de lógi a.
75
5 IDE KEIL uVision2
para o 8051 usando o uVision2, será usado o exemplo da geração de uma onda quadrada
• Simulação ou Debug
76
5 IDE KEIL uVision2
Na barra de ferramentas sele ione a opção Proje t, e sub-opção 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 título: '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 família 8051 que será
alvo do desenvolvimento.
78
5 IDE KEIL uVision2
Após a es olha do dispositivo alvo para o desenvolvimento, será apresentada uma aixa
de mensagem para a es olha da in lusão ou não do ódigo de Start-Up, neste ponto deve-se
es olher a opção No, e assim deixar o ódigo mais inxuto, gura 4.7.
O passo seguinte é a edição 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 através da
opção Save As do menu File. Alí um nome om extensão asm deve ser espe i ado.
80
5 IDE KEIL uVision2
Código fonte em linguagem assembly, após 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 seleção 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 operação, aso ontrário
O(s) arquivo(s) fonte in luido(s) apare erão 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
Caso o programa fonte ontenha erros/avisos, estes são apresentados na janela Output
83
5 IDE KEIL uVision2
Para isso deve-se no menu Debug es olher a opção Start/Stop Debugging, ver gura 4.17.
84
5 IDE KEIL uVision2
primeira instrução do programa indi ando a posição do ontador de programa, ver gura
4.19.
Ao se exe utar o programa passo a passo, através da opção Step Into do menu Debug,
85
5 IDE KEIL uVision2
interrupções pode ser olo ada no ambiênte de trabalho, através 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 opção Timers, sub-opção Timer0, ver gura 4.24.
88
5 IDE KEIL uVision2
89
Referên
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 ações Práti as do Mi ro ontrolador 8051, Silva Júnior, Vidal Pereira da. Editora
Éri a, 2003.
2002.
90