Você está na página 1de 31

MICROCONTROLADOR 8051

Alessandro de Souza Lima


Vagner Santos da Rosa
NOTA IMORTANT!" !sta do#umenta$%o est& em 'ro#esso de re(is%o) !stamos
tra*al+ando duro 'ara assegurar ,ue todas as in-orma$.es #ontidas neste do#umento
este/am #orretas) N%o nos res'onsa*ilizamos 'or ,ual,uer dano ou 'erda 'ro(o#ado 'elo
uso deste material)
1 - Introduo aos Microcontroladores
Ini#ialmente0 1 im'ortante -risarmos tr2s #on#eitos"
a3 Mi#ro'ro#essador" #+i' res'ons&(el 'elo 'ro#essamento em um mi#ro#om'utador) 4
um elemento #om'le5o0 #ontendo0 entre outras #oisas0 uma unidade l6gi#a e aritm1ti#a
78LA3 e di(ersos registros 7registradores3 es'e#iais)
*3 Mi#ro#om'utador9de9um9s69#+i'" #omo o nome indi#a0 re:ne no mesmo #+i' os
di(ersos elementos de um mi#ro#om'utador" mi#ro'ro#essador0 RAM0 ROM0
tem'orizadores0 #ontadores0 #anal de #omuni#a$%o serial e 'ortas de I;O)
#3 Mi#ro#ontrolador" mi#ro#om'utador9de9um9s69#+i' ,ue 'ode ainda #onter elementos
'ara uso industrial0 tais #omo #on(ersores A;D e D;A0 LL0 <M0 et#)
1.1 Motivao para o Estudo de um Microcontrolador
O mi#ro#ontrolador0 +o/e em dia0 1 um elemento indis'ens&(el 'ara o engen+eiro el1tri#o0
eletr=ni#o ou ainda 'ara o t1#ni#o de n>(el m1dio da &rea0 em -un$%o de sua (ersatilidade
e da enorme a'li#a$%o) !ntre algumas das a'li#a$.es de um mi#ro#ontrolador 'odemos
#itar automa$%o industrial0 tele-ones #elulares0 auto9r&dios0 -ornos de mi#roondas e
(ideo#assetes) Al1m disso0 a tend2n#ia da eletr=ni#a digital 1 de se resumir a
mi#ro#ontroladores e a #+i's ,ue #on#entram grandes #ir#uitos l6gi#os0 #omo os LDs
7rogramma*le Logi# De(i#es3) ara sistemas dedi#ados0 o mi#ro#ontrolador a'resenta9
se #omo a solu$%o mais a#ess>(el0 em -un$%o do *ai5o #usto e -a#ilidade de uso)
1.2 O 8051
O 80510 da Intel0 10 sem d:(ida0 o mi#ro#ontrolador mais 'o'ular atualmente) O
dis'ositi(o em si 1 um mi#ro#ontrolador de 8 *its relati(amente sim'les0 mas #om am'la
a'li#a$%o) or1m0 o mais im'ortante 1 ,ue n%o e5iste somente o CI 80510 mais sim uma
-am>lia de mi#ro#ontroladores *aseada no mesmo) !ntende9se -am>lia #omo sendo um
#on/unto de dis'ositi(os ,ue #om'artil+a os mesmos elementos *&si#os0 tendo tam*1m
um mesmo #on/unto *&si#o de instru$.es)
2 - Sistemas Microprocessados
Sistemas mi#ro'ro#essados s%o a,ueles ,ue t2m 'or elemento #entral um
mi#ro'ro#essador) O mi#ro'ro#essador -un#iona #omo um sistema se,?en#ial s>n#rono0
onde a #ada 'ulso0 ou gru'os de 'ulsos de #lo#@0 uma instru$%o 1 e5e#utada) !ntre os
mi#ro'ro#essadores mais #on+e#idos 'odemos #itar o 8080 e 80850 A9800 80880 808B0
80C8B0 B80000 80D8B e su'eriores)
!m*ora /& e5istam mi#ro'ro#essadores ,ue tra*al+em a #entenas de MEz0 o 8051 utiliza
ti'i#amente um #lo#@ de 1C MEz0 #om tem'os de e5e#u$%o de #ada instru$%o (ariando
entre 1s e Fs)
2.1 ia!rama em "locos de um Sistema #en$rico com Microprocessador


Al1m do mi#ro'ro#essador0 um sistema *&si#o #omo este tem os seguintes elementos"
Interru'$.es" s%o entradas a 'artir de um sinal e5terno ,ue -azem #om ,ue o
'ro#essamento se/a interrom'ido e se/a ini#iada uma su*rotina es'e#>-i#a) 7O*s)" o 8051
tem interru'$.es #om estrutura nesting0 onde uma interru'$%o 'ode interrom'er outra ,ue
est& sendo atendida0 desde ,ue ten+a maior 'rioridade3)
Gerador de Reset" res'ons&(el 'or ini#ializar o sistema ao ligar ou ,uando a#ionado)
Gerador de Clo#@" gera os 'ulsos ne#ess&rios ao sin#ronismo do sistema)
Mem6ria de rograma" mem6ria onde o mi#ro'ro#essador (ai 'ro#urar as instru$.es a
e5e#utar) !m sistemas dedi#ados #ostumam9se utilizar mem6rias ROM0 em*ora em
alguns #asos mem6rias RAM tam*1m se/am utilizadas)
Mem6ria de Dados" mem6ria onde o mi#ro'ro#essador l2 e es#re(e dados durante a
o'era$%o normal) Geralmente 1 do ti'o (ol&til0 em*ora mem6rias n%o9(ol&teis 'ossam ser
utilizadas)
Sele$%o de !ndere$os" l6gi#a 'ara es#ol+er ,ual mem6ria ou 'eri-1ri#o o
mi#ro'ro#essador (ai utilizar)
ortas de I;O" sua -un$%o 1 a #omuni#a$%o #om o mundo e5terno) Atra(1s delas
dis'ositi(os #omo te#lados0 im'ressoras0 dis'laHs0 entre outros0 #omuni#am9se #om o
sistema)
% - &ard'are
Como /& -oi #itado0 o 8051 1 um mi#ro#ontrolador de am'la utiliza$%o) O mesmo tem dois
modos *&si#os de -un#ionamento"
a3 modo m>nimo0 onde somente re#ursos internos s%o utilizados 'ela C8) Neste modo0
est%o dis'on>(eis F IJ de ROM 'ara mem6ria de 'rograma e 1C8 *Htes de RAM 'ara
mem6ria de dados) O modo m>nimo 'ossui a (antagem 7al1m da e#onomia de
#om'onentes e es'a$o ->si#o3 de 'oder utilizar as F 'ortas de 8 *its #ada 'ara #ontrole
7I;O3K
*3 modo e5'andido) Neste modo0 a mem6ria de 'rograma 7ROM30 a mem6ria de dados
7RAM3 ou am*as 'odem ser e5'andidas 'ara BF @J0 atra(1s do uso de CIs e5ternos) No
entanto0 a'resenta a des(antagem de L'erderL duas das F 'ortas 'ara #omuni#a$%o #om
as mem6rias e5ternas)
A 'inagem 'ara o 80510 1 mostrada a*ai5o na -igura D)1"
Migura D)1
8m e5em'lo de utiliza$%o do modo e5'andido 1 mostrado na -igura D)C) No #aso0 est%o
sendo utilizadas e5ternamente tanto mem6ria de 'rograma #omo mem6ria de dados0 mas
1 'oss>(el a utiliza$%o de a'enas uma delas 7somente a ROM3)
Migura D)C 9 !5'andindo RAM e ROM
Como 'ode ser (isto na -igura D)C0 al1m das mem6rias -az9se ne#ess&rio a utiliza$%o de
um outro CI 7no #aso o NFDND3 'ara a multi'le5a$%o de dados e endere$os) O#orre da
seguinte -orma" no 'rimeiro #i#lo de m&,uina0 o 8051 #olo#a nos 'inos AD0 a ADN o *Hte
menos signi-i#ati(o do endere$o e5terno e le(a o 'ino AL! 7Address Lat#+ !na*le 9
Ea*ilitador da Tra(a de !ndere$os3 a n>(el alto0 de modo ,ue o NFDND 7oito Lat#+es ti'o
D3 #olo,ue em suas sa>das essa in-orma$%o0 e logo em seguida 'assa este 'ino 'ara
n>(el *ai5o0 'ara ,ue esse *Hte -i,ue retido no NFDND) A'6s isso0 os 'inos AD0 a ADN
estar%o li(res 'ara o trans'orte dos dados)
O 8051 'ode0 no modo e5'andido0 utilizar toda a mem6ria de 'rograma e5terna 7#om
n>(el l6gi#o 0 a'li#ado ao 'ino D1 9 !5ternal Address NOT3 ou ainda utilizar os 'rimeiros F
@J internos e o restante e5terno 7#om 1 em !A3)
O CI 80D1 1 a (ers%o sem ROM interna do 8051) O mesmo 1 muito utilizado em -ase de
desen(ol(imento ou ,uando se ,uer 'roduzir em 'e,uenas ,uantidades) Como o 80D1
tem a mesma 'inagem ,ue o 80510 o mesmo 'ossui o 'ino !A0 ,ue de(er& sem're ser
utilizado em n>(el l6gi#o *ai5o)
Retornando a -igura D)C0 nela estamos utilizando 8@J de RAM e5terna0 al1m dos C5B
*Htes de RAM interna) Al1m disso0 temos um total de 8@J de mem6ria ROM ,ue0 no #aso
do 80510 'ode estar sendo utilizado a'enas no CI e5terno ou #om os F0OB *Htes menos
signi-i#ati(os em mem6ria interna e os F0OB *Htes mais signi-i#ati(os na mem6ria e5terna)
Ainda em rela$%o P -igura D)C0 'ara -azer uma leitura na ROM e5terna0 o 'ino S!N ser&
le(ado a n>(el *ai5o0 'ara -azer uma leitura na RAM e5terna0 o 'ino RD ser& le(ado a
n>(el *ai5o e0 'ara -azer uma es#rita na RAM e5terna0 o 'ino <R ser& le(ado a n>(el
*ai5o)
( - ) Or!ani*ao da Mem+ria
As -iguras F)1 e F)C ilustram0 res'e#ti(amente0 a organiza$%o da mem6ria de 'rograma e
da mem6ria de dados do 8051)

4 im'ortante salientar ,ue0 di-erentemente de outros sistemas *aseados em
mi#ro'ro#essador0 onde #ada endere$o de mem6ria identi-i#a uma :ni#a 'osi$%o ->si#a0
no 8051 o mesmo endere$o +e5ade#imal 'ode identi-i#ar D 'osi$.es ->si#as di-erentes 7e
at1 F0 no #aso do 805C0 ,ue tem C5B *Htes de RAM interna3) or e5em'lo0 temos o
endere$o CDE na RAM interna0 o endere$o CDE na RAM e5terna e o endere$o CDE na
ROM e5terna) Mesmo #om esses endere$os LiguaisL0 n%o +& ris#o de #on-us%o0 'ois as
instru$.es e o modo de endere$amento s%o di-erentes) ara dei5ar mais #laro0 (amos
su'or ,ue ,ueiramos #arregar no a#umulador o #onte:do de #ada uma das 'osi$.es CDE)
Ve/a os e5em'los a*ai5o"
a3 da RAM interna
MOV A0CDE Kend)direto
*3 da RAM e5terna
MOVQ R00RCDE Kimediato
KR0 #omo 'onteiro
MOVQ A0SR0 Kindireto
#3 da ROM e5terna
CLR A
MOV DTR0R00CDE
MOVC A0SATDTR
A -igura F)D mostra em detal+es a di(is%o da RAM interna do 8051) Note a 'resen$a dos F
*an#os de registradores au5iliares0 #ada um #ontendo 8 registradores 7R00 R10 RC0 RD0
RF0 R50 RB0 RN3) !stes registradores s%o utilizados 'ara endere$amento indireto) A'esar
de e5istirem F *an#os de registradores0 somente um est& ati(o 'or (ez 'ara uso #omo
>ndi#e) A sele$%o do *an#o ati(o 1 -eita no registro de -un$%o es'e#ial S<0 ,ue ser&
(isto em *re(e)
Como 'ode ser (isto 'ela -igura0 os *Htes C0 a CM da RAM interna tem *its endere$&(eis
indi(idualmente) odemos0 #om os mesmos0 e5e#utar (&rias instru$.es de *its) or
e5em'lo0 a instru$%o S!TJ DCE #olo#a em n>(el alto o *it DC ou se/a0 o *it F da 'osi$%o
de mem6ria CN E da RAM interna)
5 - Os ,e!istros de -uno Especial
Os Registros de Mun$%o !s'e#ial 7SMRs 9 S'e#ial Mun#tion Registers3 s%o res'ons&(eis
'ela maior 'arte do #ontrole do 8051) Os mesmos s%o mostrados na -igura 5)10 sendo ,ue
alguns deles 'ossuem *its endere$&(eis) Note ,ue alguns dos *its endere$&(eis 'ossuem
in#lusi(e um nome mnem=ni#o0 'ara maior -a#ilidade de desen(ol(imento de so-tUare em
#om'iladores)
Migura 5)1
A -un$%o *&si#a de #ada registro es'e#ial 1 des#rita a*ai5o) Ao lado do registro est& seu
endere$o na RAM)
0 780E30 1 7O0E30 C 7A0E3 e D 7J03" S%o as 'osi$.es na RAM ,ue #ont1m os dados
das F 'ortas de I;O do mi#ro#ontrolador0 #aso as mesmas se/am utilizadas #om esse -im)
Se -or -eita uma es#rita em um desses registros0 o #onte:do nos 'inos #orres'ondentes P
'orta ser& automati#amente alterado) V& uma leitura dos mesmos (eri-i#a o estado dos
'inos)
S 781E3" 4 o a'ontador de 'il+a 7Sta#@ ointer30 ,ue a'onta 'ara o alto da 'il+a)
DL 78CE3 e DE 78DE3" !m #on/unto -ormam o DTR0 utilizado 'ara endere$amento
indireto de 1B *its)
CON 78NE3" O registro CON 7oUer Control3 'ermite ada'tar o mi#ro#ontrolador 'ara
redu$%o de #onsumo #om seguran$a)
TCON 788E3 e TMOD 78OE3" Registros dos Tem'orizadores;Contadores) ermitem a
'rograma$%o dos mesmos)
TL0 78AE30 TE0 78CE30 TL1 78JE3 e TE1 78DE3" S%o os registros dos dados dos dois
Tem'orizadores;Contadores 7T0 e T13)
SCON 7O8E3 e SJ8M 7OOE3" Registros 'ara uso da 'orta de #omuni#a$%o serial)
I! 7A8E3 e I 7J8E3" Registro 'ara 'rograma$%o 7+a*ilita$%o;desa*ilita$%o0 'rioridade
et#)3 das interru'$.es)
S< 7D0E3" O S< 7rogram Status <ord 9 'ala(ra de status do 'rograma3 1 o registro
dos Mlags do 8051
ACC 7!0E3" 4 o a#umulador)
J 7 M0E3" Registro au5iliar J)
A seguir0 s%o mostrados #om mais detal+es alguns dos registros de -un$%o es'e#ial)
5.1 .alavra de Status de .ro!rama / . S 0 1
A 'ala(ra de status de 'rograma 7 S< 3 #ont1m (&rios *its de status ,ue re-letem o
estado #orrente da C8)
O registro S< 1 a#essado 'elo endere$o D0+ e tam*1m 1 *it endere$a(el)
A -igura a*ai5o a'resenta a estrutura do registro S<0 ,ue reside no es'a$o de
endere$amento de registros de -un$%o es'e#ial)

DN+ DB+ D5+ DF+ DD+ DC+ D1+ D0+
CW AC M0 RS1 RS0 OV 9
S<)N S<)
B
S<)
5
S<)
F
S<)
D
S<)
C
<S)
1
S<)0
S<)N 9 Mlag de #arrH 'ara *it N da AL8K
S<)B 9 Mlag de #arrH au5iliar 'ara *it D da AL8 7 'ara o'era$.es JCD 3K
S<)5 9 Mlag 0 9 Mlag de status de 'ro'6sito geral 7 de-inido 'elo usu&rio 3K
S<)F 9 Jit 1 de sele$%o de *an#o
S<)D 9 Jit 0 de sele$%o de *an#o
S<)C 9 Mlag de o(er-loU 'ara o'era$.es aritm1ti#asK
S<)1 9
S<)0 9 Mlag de 'aridade do a#umulador 7 1X>m'ar0 0X'ar 3)

!ste registro #ont1m o *it de #arrH0 #arrH au5iliar0 'ara o'era$.es JCD0 dois *its de
sele$%o de *an#o de registros0 -lag de o(er-loU0 *it de 'aridade e dois -lags de status
de-inidos 'elo usu&rio)
O *it de #arrH 1 usado em o'era$.es aritm1ti#as e0 tam*1m0 ser(e #omo La#umuladorL
'ara o'era$.es *ooleanas)
Os *its RS0 e RS1 s%o usados 'ara sele#ionar um dos ,uatro *an#os de registros
mostrado na -igura F)D 7'g)B3) As instru$.es re-erem9se a estas lo#aliza$.es de RAM
#omo registros de R0 a RN) A sele$%o de ,ual dos ,uatro *an#os estar& sendo utilizado 1
-eita #om *ase aos #onte:dos de RS0 e RS10 durante o tem'o de e5e#u$%o do 'rograma)

RS1 RS0 JANCO !ndrere$o na RAM interna
0 0 0 00 + 9 0N +
0 1 1 08 + 9 0M +
1 0 C 10 + 9 1N +
1 1 D 18 + 9 1M +

O *it de 'aridade re-lete o n:mero de 1Ys do a#umulador) X 1 se o a#umulador ti(er um
n:mero >m'ar de 1Ys e X 00 se ti(er um n:mero 'ar) Assim o n:mero de 1Ys do
a#umulador mais ser& sem're 'ar)
O -lag de o(er-loU 1 a-etado 'or o'era$.es aritm1ti#as)
Al1m do -lags usuais0 #omo CW0 AC 0 OV0 0 tem dois -lags de 'ro'6sito geral ,ue n%o
est%o asso#iados #om ,ual,uer estado ou -un$%o da C8) O *it S<)5 7 M0 3 e S<)1
7 sem nome 3) O 'rogramador 'ode usar M0 7 S<)5 3 #omo um *it -lag 'ara a'li#a$%o
de-inida 'elo usu&rio) ode ser setado ou ressetado 'elo 'rograma #omo uma -un$%o de
alguma #ondi$%o es'e#ial ou ser lido de um 'ino de alguma 'orta) Do#umentos da INT!L
indi#am ,ue S<)1 esta reser(ado 'ara uma utiliza$%o -utura e 1 re#omendado ,ue n%o
se/a utilizado em 'rogramas
Note ,ue o S< n%o tem -lag A!RO0 mas isto n%o 1 'ro*lema 'or,ue o 8051 tem
instru$%o es'e#>-i#as 'ara testar se o a#umulador 1 zero)
!5em'los" VA rel) 9 des(ia se o a#umulador -or zero
VNA rel 9 des(ia se o a#umlador n%o -or zero
Z rel) X indi#a um *Hte sinalizado #om #om'lemento de dois0 usado 'ara deslo#amento
relati(o na -ai5a de [1CN a T1C8)
5.2 ,e!istro )pontador de .il2a / S. 1
O registro S 1 um registro de taman+o 8 *its) !ste ser& in#rementado antes ,ue um
dado se/a armazenado na 'il+a0 durante a e5e#u$%o de uma instru$%o 8SE0 ou CALL)
Assim0 a regi%o de 'il+a 7 sta#@ 3 ir& residir no es'a$o de RAM interna do 8051) O S 1
ini#ializado #om o (alor 0N E a'6s o#orrer o R!S!T) Isto -az #om ,ue a 'il+a ini#ie na
lo#aliza$%o 08 E) Caso se/am usados os *an#os de resgistradores 10 C e;ou D0 e se/a
utilizada a 'il+a0 o S de(er& ser alterado 'ara ini#iar a 'il+a em outra regi%o da RAM ,ue
n%o #ause 'ro*lemas) A intru$%o MOV I!0Rno(o endere$o de(er& a'are#er no 'rograma0
're-eren#ialmente no in>#io)
!ste 1 a#essado 'elo endere$o 81 E e 'ortanto n%o 1 *it endere$&(el)
5.% ,e!istro )pontador e ados / .3, 1
O registro a'ontador de dados 1 -ormado 'or um *Hte alto 7 DE 3 a#essado 'elo
endere$o 8D E e 'or um *Hte *ai5o 7 DL 30 a#essado 'elo endere$o 8C E) !ste registro
'ode ser mani'ulado #omo um registro de 1B *its 7 DTR 30 ou #omo dois registros
inde'endentes de 8 *its)
A sua -un$%o 1 de manter um endere$o de 1B *its0 usado 'ara a#essar mem6rias
e5ternas)
4 - MOOS E E5E,E6)ME53O
Como o #on/unto de instru$.es da -am>lia 8051 -oi otimizado 'ara a'li#a$%o de #ontrole
em 8 *its) Cont1m uma (ariedade de r&'idos modos de endere$amento 'ara a#essar a
RAM interna0 -a#ilitando o'era$.es de *Hte em 'e,uenas estruturas de dados)
4.1. Modo de endereamento I,E3O
Neste modo o o'erando 1 es'e#i-i#ado na instru$%o 'or um #am'o de endere$o de 8 *its)
Somente a RAM de dados interna e os registros de -un$%o es'e#ial 7 'rimeiras C5B
'osi$.es de mem6ria 3 1 ,ue 'oder%o ser endere$ados diretamente)
!5em'lo B)1)a " MOV A0 C5+
A 7 C5+ 3
!5em'lo B)1)* " ADD A0 NM+
A A T 7 NM 3
!5em'lo B)1)# " MOV O0+0 A O*s)" O0+ X 'orta 1
7 O0+ 3 A
4.2 Modo de endereamento de re!istro ou modo ,E#IS3,)O,
Os *an#os de registros0 #ontendo de R0 a RN0 ser%o a#essados 'or #ertas instru$.es
onde a es'e#i-i#a$%o do registro ser& -eita 'or tr2s *its do 'r6'rio o'#ode) As instru$.es
de a#esso aos registros s%o e-i#ientes0 (isto ,ue nen+um endere$o ser& ne#ess&rio)
\uando o instru$%o -or e5e#utada0 um dos oito registros do *an#o sele#ionado ser&
a#essado) 8m dos ,uatro *an#os de registro ser& sele#ionado 'elos *its de sele$%o de
*an#os do registro S< 7 *its RS1 e RS0 3)
!5em'lo B)C)a " MOV R50 A
R5 A
!5em'lo B)C)* " ADD A0 R0
A A T R0
4.% Modo de endereamento I5I,E3O
Neste modo a instru$%o es'e#i-i#a ,ue o registro #ont1m o endere$o do o'erando) Tanto
a mem6ria interna ,uanto a e5terna 'oder%o ser endere$adas indiretamente)
O registro de endere$amento usado 'ara endere$os de 8 *its de(er& ser o registro R0 ou
R1 do *an#o sele#ionado e 'ara endere$os de 1B *its ser& somente o registro a'ontador
de dados 7 DTR 3)
!5em'lo B)D)a " MOV S R10 15+
7 R1 3 7 15+ 3
!5em'lo B)D)* " ADD A0 S R0
A A T 7 R0 3
!5em'lo B)D)# " MOVQ S DTR0 A
7 DTR 3 A
O*s)" S 1 utilizado 'ara indi#ar endere$amento indireto)
S X endere$ado 'elo #onte:do de )))
4.( Modo de endereamento de re!istros espec78icos ou ES.E9:-I9O ) ,E#IS3,O
Algumas instru$.es re-erem9se a #ertos registros) or e5em'lo algumas instru$.es
o'eram o a#umulador0 o registro DTR0 et#)0 assim nen+um *Hte de endere$o ser&
ne#ess&rio0 o o'#ode /& de-ine ,ual o registro ,ue ser& a-etado)
!5em'lo B)F)a " DA A
Maz o a/uste de#imal do a#umulador
!5em'lo B)F)* " CLR A
A 00+ 7 zera o a#umulador 3
!5em'lo B)F)# " INC DTR
DTR DTR T 1
4.5 Modo de endereamento IMEI)3O ou 9O5S3)53E IMEI)3)
Neste modo de endere$amento o o'#ode 1 seguido de um (alor de uma #onstante ,ue
ser& o'erada) Na linguagem assem*lH0 este modo 1 indi#ado atra(1s do sim*olo R)
!5em'lo B)5)a " MOV J0 RC5C
J MC+
!5em'lo B)5)* " MOV A0 R100
A BF+
!5em'lo B)5)# " MOV DTR0 R05M!+
DTR 05M!+
O*s)" R indi#a (alor #onstanteK
\uando a'6s a #onstante a'are#er um LEL0 o (alor da #onstante 1 +e5ade#imal0 ,uando
ti(er um LJL 1 *in&rio0 e ,uando a letra -or omitida ou a'are#er um LDL o (alor ser&
de#imal)
4.4 Modo de endereamento I5E;)O
Somente a mem6ria de 'rograma 7 ROM 3 'oder& ser a#essada #om endere$amento
inde5ado e somente 'oder& ser lida)
O endere$o e-eti(o 1 a soma do a#umulador e um registro de 1B *its 7 DTR ou C 3)
!ste modo 1 usado 'ara leituras de ta*elas #olo#adas na mem6ria de 'rograma 7 ROM 3)
or e5em'lo ta*elas de #on(ers%o0 ou de mensagens)
8m registro *ase de 1B *its0 tal #omo o registro DTR0 ou #ontador de 'rograma 7 C 30
a'onta 'ara a *ase da ta*ela e o a#umulador re#e*e o deslo#amento dentro da ta*ela)
Assim o endere$o de entrada da ta*ela ser& -ormado #om a soma do #onte:do do
a#umulador e o registro *ase)
!5em'lo B)B)a " MOVC A0 S A T DTR
A 7 ATDTR 3 da ROM
!5em'lo B)B)* " MOVC A0 S A T C
A 7 A T C 3 da ROM
Outro ti'o de endere$amento inde5ado 1 usado nas instru$.es de L#ase /um'L) Neste
#aso o endere$o destino do salto 7/um'3 1 #al#ulado #om a soma do #onte:do do
a#umulador e do #onte:do do a'ontador *ase)
Assim o (alor *ase do endere$o do salto ser& #arregado no a'ontador *ase 7 DTR 3 e o
(alor de inde5a$%o do salto ,ue realiza a #ondi$%o 7#ase3 ser& #arregado no a#umulador)
!5em'lo " VM S A T DTR
Maz um salto 'ara o endere$o dador 'or A T DTR
C A T DTR
< - ,ESE3 5O 8051
O R!S!T 1 #onseguido mantendo9se n>(el alto no 'ino O 7 RST 3 'or 'elo menos dois
#i#los de m&,uina 7 CF 'ulsos de #lo#@ 3)
ara a (ers%o CMOS 7 80C51 3 o resistor se torna desne#ess&rio) Se e5istir n%o inter-ere
em nada)
O R!S!T a-etar& os registros de -un$%o es'e#ial da seguinte -orma"
R!GISTRO VALOR

R!GISTRO VALOR
C 0000 E

TMOD 00 E
ACC 00 E

TCON 00 E
J 00 E

TE0 00 E
S< 00E

TL0 00 E
S 0N E

TE1 00 E
DTR 0000 E

TL1 00 E
0 a D MM E ou

SCON 00 E

11111111 J

SJ8M indeterminado
I 0QQ00000 J

CON
7NMOS3
0QQQQQQQ J
I! 00 E

CON
7CMOS3
0QQQ0000 J
A RAM n%o 1 a-etada 'or R!S!T -or$ado) !m #aso de R!S!T 'or ini#ializa$%o o seu
(alor ser& aleat6rio)
8 - 9=O9>
Mre,?2n#ia de #lo#@ m>nima X D05 MEz
Mre,?2n#ia de #lo#@ m&5ima X DD MEz 7algumas (ers.es3 e 1C MEz 7mais #omum3

? - I53E,,@.6AES 5O 8051
O 8051 'ode ser interrom'ido de 5 maneiras"
9 'ela interru'$%o e5terna 0 7 INT0] 9 'ino D)C 3K
9 'ela interru'$%o e5terna 1 7 INT1] 9 'ino D)D 3K
9 'elo #ontador;tem'orizador 0K
9 'elo #ontador;tem'orizador 1K
9 'elo #anal de #omuni#a$%o serial)
As interru'$.es do 8051 s%o V!TORADAS0 ou se/a0 tem um endere$o de in>#io da rotina
de tratamento da interru'$%o -i5o)
Os (etores das interru'$.es s%o os seguintes"
INT!RR8^_O !ndere$o no 8051 !ndere$o no @it
INT 0 000D + FCD0 +
C;T 0 000J + FCF0 +
INT 1 001D + FC50 +
C;T 1 001J + FCB0 +
S!RIAL 00CD + FCN0 +
\uando atende uma interru'$%o0 o C 1 sal(o no Sta#@ 7'il+a3) O a#umulador0 S< e
demais registros n%o s%o sal(os)
As interru'$.es no 8051 s%o MASCARADAS 0 ou se/a0 'odem ser desa*ilitadas 'elo
so-tUare) O registro res'ons&(el 'elas +a*ilita$.es da interru'$.es 1 o I! 7 Interru't
!na*le 3)

AM+ A!+ AD+ AC+ A*+ AA+ AO+ A8+ A8 E
!A 5 5 !S !T1 !Q1 !T0 !Q0 I!
*it N *it B *it 5 *it F *it D *it C *it 1 *it 0

9 !A 7 !na*le All 3 9 em L0L desa*ilita todas as interru'$.esK
em L1L 'ermite ,ue #ada interu'$%o se/a +a*ilitada indi(idualmente)
9 !S 7 !na*le Serial 3 9 Ea*ilita ou desa*ilita a interru'$%o 'edida 'elo #anal de serialK
L0L desa*ilita e L1L +a*ilita se !A X 1K
9 !T1 7 !na*le Timer 1 3 9 Ea*ilita ou desa*ilita a interru'$%o 'edida 'elo tem'orizador 1K
L0L desa*ilita e L1L +a*ilita se !A X 1K
9 !Q1 7 !na*le !5ternal 1 3 9 Ea*ilita ou desa*ilita a interru'$%o e5terna 1K
L0L desa*ilita e L1L +a*ilita se !A X 1K
9 !T0 7 !na*le Timer 0 3 9 Ea*ilita ou desa*ilita a interru'$%o 'edida 'elo tem'orizador 0K
L0L desa*ilita e L1L +a*ilita se !A X 1K
9 !Q0 7 !na*le !5ternal 0 3 9 Ea*ilita ou desa*ilita a interru'$%o e5terna 0K
L0L desa*ilita e L1L +a*ilita se !A X 1K
Cada interru'$%o no 8051 'oder& ser indi(idualmente 'rogramada 'ara um dos dois
n>(eis de 'rioridade 7 0 ou 1 3) Isto 1 -eito atra(1s dos *its do registro I 7 Interru't
rioritH 3)
JM+ J!+ JD+ JC+ JJ+ JA+ JO+ J8+ J8 E
5 5 5 S T1 Q1 T0 QO I
*it N *it B *it 5 *it F *it D *it C *it 1 *it 0

L0L rioridade JAIQA ; L1L rioridade ALTA
9 S 7 rioritH Serial 3 9 N>(el de 'rioridade 'ara o #anal serialK
9 T1 7 rioritH Timer 1 3 9 N>(el de 'rioridade 'ara o tem'orizador 1K
9 Q1 7 rioritH !5ternal 1 3 9 N>(el de 'rioridade 'ara a interru'$%o e5terna 1K
9 T0 7 rioritH Timer 0 3 9 N>(el de 'rioridade 'ara o tem'orizador 0K
9 Q0 7 rioritH !5ternal 0 3 9 N>(el de 'rioridade 'ara a interru'$%o e5terna 0K
8ma interru'$%o de n>(el *ai5o 'oder& ser interrom'ida 'or outra de n>(el alto0 mas n%o
'or outra de n>(el *ai5o) 8ma interru'$%o de n>(el alto n%o 'oder& ser interrom'ida 'or
,ual,uer outra -onte de interru'$%o)
Se o#orrerem dois 'edidos de interru'$.es simultaneamente 7 ,uase im'oss>(el 30 e
am*as -orem de mesma 'rioridade0 o#orrer& uma outra sele$%o interna0 ,ue es#ol+er&
,ual interru'$%o ser& atendida 'rimeiro)
INT!RR8^_O RIORIDAD!
INT!RNA
!5terna 0 MAIOR
Tem'orizador 0

!5terna 1

Tem'orizador 1

Serial M!NOR
As interru'$.es !QT!RNAS no 8051 'odem ser ati(adas 'or transi$%o 1 'ara 0 7 *orda
de des#ida 3 ou 'or n>(el 7 n>(el l6gi#o *ai5o 3)
O a/uste da -orma de ati(ar as interru'$.es e5ternas est%o no registro TCON 7 Controle
do Tem'orizador 3)
8M+ 8!+ 8D+ 8C+ 8J+ 8A+ 8O+ 88+ 88 E
TM1 TR1 TM0 TRO I!1 IT1 I!0 IT0 TCON
*it N *it B *it 5 *it F *it D *it C *it 1 *it 0

IT 0 X L0L 9 ati(a a interru'$%o #om n>(el l6gi#o *ai5o no 'ino INT0] 7 'ino D)C 3K
X L1L 9 ati(a a interru'$%o #om *orda de des#ida no 'ino INT0]K
9 IT 1 X L0L 9 ati(a a interru'$%o #om n>(el l6gi#o *ai5o no 'ino INT1] 7 'ino D)D 3K
X L1L 9 ati(a a interru'$%o #om *orda de des#ida no 'ino INT1]K
9 I! 5 9 -i#a em L1L,uando -or dete#tado uma *orda de des#ida 7 'edido de interru'$%o 3)
4 resetado a'6s o atendimento da rotina de tratamento da interru'$%o)
OJS)" Caso a interru'$%o se/a ati(ada 'or n>(el l6gi#o *ai5o0 o 'ino INT5] 'oder&
'ermane#er em L0L durante a e5e#u$%o da rotina de tratamento da interru'$%o0 s6 ,ue
de(e estar em L1L antes do t1rmino da RTI 'ara e(itar um no(o 'edido de interru'$%o)
10 - 3EM.O,IB)O,ES E 9O53)O,ES no 8051
O 8051 'ossui internamente C Contadores;Tem'orizadores denominados #omo
T!MORIAADOR 0 ! T!MORIAADOR 1) Am*os 'odem ser #on-igurados 'ara o'erar
#omo tem'orizador ou #ontador de e(entos0 indi(idualmente) odem ter a o'era$%o
+a*ilitada 'or so-tUare ou +ardUare)
Na -un$%o de tem'orizador0 um registro ser& in#rementado a #ada #i#lo de m&,uina)
Considerando ,ue #ada #i#lo de m&,uina #onsiste em 1C 'er>odos do #lo#@0 a ta5a de
#ontagem ser& de 1;1C da -re,?2n#ia do #lo#@)
Na -un$%o de #ontador0 um registro ser& in#rementado em res'osta a uma transi$%o de
L1L 'ara L0L 7*orda de des#ida3 de seu #orres'ondente 'ino de entrada e5terna0 T0 7D)F3
e T1 7D)53)
Nesta -un$%o0 os 'inos e5ternos 7T0 e T13 s%o amostrados a #ada #i#lo de m&,uina)
\uando uma amostragem indi#ar um n>(el alto em um #i#lo de m&,uina e um n>(el *ai5o
no 'r65imo #i#lo0 o #ontador ser& in#rementado)
A m&5ima ta5a de #ontagem ser& de 1;CF da -re,?2n#ia do #lo#@0 (isto ,ue s%o
ne#ess&rias dois #i#lo de m&,uina 'ara o re#on+e#imento de uma transi$%o de L1L 'ara
L0L)
A o'era$%o dos Contadores;Tem'orizadores ter%o ,uatro modos 'oss>(eis)
A sele$%o de Tem'orizador ou Contador0 1 realizada atra(1s do registro de -un$%o
es'e#ial TMOD 7Modo do Tem'orizador3)
O registro TMOD 1 di(idido em duas 'artes iguais ,ue #ontrolam o T!MORIAADOR 1 e
T!MORIAADOR 0) O registro TMOD 1 a#essado 'elo endere$o 8O+ e n%o 1 *it
endere$&(el)
TMOD 1 o registro de #ontrole de modo Tem'orizador ; Contador0 1 neste registro ,ue 1
-eita a sele$%o de -un$%o Tem'orizador ou Contador e a sele$%o do modo de o'era$%o
7 modo 00 10 C ou D 3)
O registro TMOD 1 mostrado a*ai5o0 assim #omo a -un$%o de #ada *it)
GAT!)1 C;T)1 M1)1 M0)1 GAT!)0 C;T)O M1)0 M0)0 8OE
*it N *it B *it 5 *it F *it D *it C *it 1 *it 0

Controle do C;T 1 Controle do C;T 0

C;T)5 Sele#iona a -un$%o0 T!MORIAADOR 7timer3 ou CONTADOR) Ser& sele#ionado
#omo T!MORIAADOR se este *it esti(er em L0L) Se em L1L a o'era$%o ser& #omo
CONTADOR)
GAT!)5 \uando GAT!)5 X 1 e TR5 X 10 o tem'orizador ir& o'erar somente en,uanto o
'ino INT5 X 1 7#ontrole 'or #ir#uito3) \uando GAT!)5 X 00 o tem'orizador ir& o'erar
somente ,uando TR5 X 1 7#ontrole 'or so-tUare3)
O*s)" TR5 1 um *it de TCON 7'ala(ra de #ontrole do Contador;Tem'orizador3 ,ue ser&
(ista a seguir)
M1)5 e M0)5 Jits de sele$%o de modo de o'era$%o)
O registro TCON 7Timer Control [ Controle do Tem'orizador3 1 mostrado a*ai5o)
TCON 1 um registro a#essado 'elo endere$o 88E e 1 *it endere$&(el)
8M+ 8!+ 8D+ 8C+ 8J+ 8A+ 8O+ 88+ TCON
TM1 TR1 TM0 TR0 I!1 IT1 I!0 IT0
88H
TCON)N TCON)B TCON)5 TCON)F TCON)D TCON)C TCON)1 TCON)0

9 TM5 Jit de o(er-loU do tem'orizador) 4 ati(ado 7 setado 3 'elo #ir#uito ,uando o#orrer
um o(er-loU no tem'orizador0 gerando um 'edido de interru'$%o) 4 ressetado 'elo
+ardUare a'6s o terminada a rotina de interru'$%o)
9 TR5 Jit de #ontrole de o'era$%o do tem'orizador) 4 o *it ,ue liga e desliga o C;T)
ara ligar o tem'orizador0 o so-tUare de(er& setar este *it0 e 'ara desligar de(er& resset&9
lo)
10.1 - Modos de Operao dos 9ontadores C 3empori*adores

M 1)5 M 0)5 Modo de o'era$%o Cara#ter>sti#a
0 0 Modo 0 C;T de 1D *its
0 1 Modo 1 C;T de 1B *its
1 0 Modo C C;T de 8 *its #om re#arga autom&ti#a
1 1 Modo D 1 C;T de 8 *its e 1 Tem'orizador

10.1.1 MOO 0 9ontador C 3empori*ador de 8 Dits com divisor de 8reEFGncia de at$ %2
ve*es
Neste modo o registro do tem'orizador ser& #on-igurado #omo um registro de 1D *its)
\uando o registro 7TE1 ou TE03 mudar de MM+ 'ara 00+ ele +a*ilita a soli#ita$%o de
interru'$%o do tem'orizador0 atra(1s de o *it TM1 ou TM00 do registro de -un$%o es'e#ial
TCON 788+3)
O registro de 1D *its 1 #om'osto 'or todos os *its de TE1 ou TE00 e 'elos 5 *its menos
signi-i#ati(os de TL1 ou TL0) !stes 5 *its 'ossi*ilitam a di(is%o 'or DC) Os D *its mais
signi-i#ati(os de TL1 e TL0 s%o indeterminados e de(em ser ignorados em #aso de leitura)
A +a*ilita$%o de o'era$%o do tem'orizador atra(1s de TR5 n%o lim'a estes registros)
Os registros TE10 TE00 TL1 e TL0 est%o lo#alizados na regi%o dos registros de -un$%o
es'e#ial e s%o a#essados 'elos endere$os 8D+ 7TE130 8C+ 7TE030 8J+ 7TL13 e 8A+ 7TL03)
!stes registros n%o s%o *it endere$&(eis)
No modo 0 a o'era$%o do tem'orizador 'oder& ser #ontrolador 'or 'rograma$%o
7so-tUare3 ou 'or #ir#uito e5terno 7+ardUare3)
O #ontrole 'or #ir#uito e5terno ser& realizado #olo#ando9se o *it TR5 em L1L0 o *it GAT!)5
em L1L e a entrada ;INT5 em L1L) Desta maneira0 ser& 'oss>(el ,ue a tem'oriza$%o se/a
#ontrolada e5ternamente 'or ;INT5) Isto 'ossi*ilita a medi$%o de largura de 'ulsos0 'ois o
tem'orizador somente o'era en,uanto o 'ino ;INT5 esti(er em n>(el alto)
O #ontrole 'or 'rograma$%o ser& realizado #olo#ando9se o *it GAT!)5 em L0Le
#olo#ando9se TR5 em L1L) Neste #aso o *it TR5 atua #omo +a*ilitador de o'era$%o do
tem'orizador0 ,ue ser& #ontrolado 'or 'rograma$%o)
ara -azermos um tem'oriza$%o0 o registro TE5 re#e*er& o (alor ini#ial da #ontagem0 e
dessa -orma 'odemos #ontar at1 MM0 #om o (alor ini#ial es#rito 'or so-tUare) Ao o#orrer
o(er-loU nesse registro 7'assar de MM 'ara 0030 o C;T em ,uest%o -ar& um 'edido de
interru'$%o0 ,ue ser& ou n%o a#eito 'ela C8) O (alor deste registro 'oder& ser lido a
,ual,uer momento 'elo so-tUare)
O sinal de #ontagem 7#lo#@ interno ou e5terno3 ser& di(idido 'elo (alor *in&rio 'resente
nos 5 *its menos signi-i#ati(os de TL5)
Desta maneira0 'ara ,ue o registro TE5 se/a in#rementado0 de(er& ter o#orrido um
n:mero de 'ulsos igual ao (alor da #ontagem a/ustada em TL5)
\uando o#orrer o(er-loU 7na tro#a de TE5 de MM+ 'ara 00+3 um 'edido de interru'$%o
ser& -eito) Caso a interru'$%o este/a +a*ilitada0 e dese/a9se -azer uma no(a tem'oriza$%o
ou #ontagem0 os registros TE5 e TL5 de(er%o ser no(amente #arregados)
Como 'odemos di(idir a -re,?2n#ia no m&5imo 'or DC0 e #ontar no m&5imo at1 C5B0 este
modo 'ermite9nos #ontar 81OC 7C5B5DC3)
10.1.2 MOO 1 9ontador C 3empori*ador de 14 Dits
Neste modo de o'era$%o0 o Contador;Tem'orizador ser& de 1B *its0 sendo utilizado os
registros TE1 e TL1 ou TE0 e TL0 'ara -ormar estes 1B *its) Desta -orma 'odemos #ontar
de 0000+ at1 MMMM+ 7B55DB #ontagens3)
O (alor ini#ial da #ontagem de(er& ser 'rogramado 'or so-tUare) \uando o#orrer o(er-loU
7'assar de MMMM+ 'ara 0000+3 ser& -eito um 'edido de interru'$%o) Assim #omo no modo
00 o (alor ini#ial de uma no(a #ontagem de(er& ser #arregado na rotina de interru'$%o)
10.1.% MOO 2 9ontador C 3empori*ador de 8 Dits com recar!a automHtica
Neste modo0 os registros TL1 e TL0 s%o res'ons&(eis 'ela #ontagem e TE1 e TE0 -i#am
#om o (alor a ser #arregado nos registros TL1 e TL00 ,uando o#orrer o(er-loU) Mesmo
#om a re#arga autom&ti#a do (alor da #ontagem0 os registros TE1 e TE0 'odem ser
alterados a ,ual,uer momento)
Neste modo de -un#ionamento0 temos um sistema no ,ual n%o 're#isamos rees#re(er 'or
so-tUare o (alor a ser #ontado) A,ui0 es#re(emos no registro TL50 o (alor ini#ial da
#ontagem0 e em TE5 o (alor ini#ial da 'r65ima #ontagem) Ao o#orrer o o(er-loU em TL50 o
sistema gera a interru'$%o e automati#amente re#arrega em TL5 o (alor #ontido em TE50
e 'rossegue in#rementando so* #omando do sinal e5terno 7#ontador3 ou interno
7tem'orizador3)
De(ido a re#arga autom&ti#a0 n%o 1 ne#ess&rio ,ue se/a -eita a #arga do (alor ini#ial na
rotina de interru'$%o)
10.1.( MOO % 1 9ontador ou 3empori*ador de 8Dits e 1 3empori*ador de 8 Dits
O modo D ter& #om'ortamentos di-erentes 'ara os dois tem'orizadores)
O tem'orizador 0 esta*ele#e ,ue TL0 e TE0 ser%o dois #ontadores se'arados)
TL0 usa os *its de #ontrole do tem'orizador 00 ou se/a0 usa os *its C;T)00 GAT!)00 TR00
TM0 e INT0 e 'ode o'erar #omo #ontador ou tem'orizador)
TE0 o'era somente #omo tem'orizador e usa os *its de #ontrole TR1 e TM1 do
tem'orizador 1) Assim TE0 #ontrola a interru'$%o do tem'orizador 1)
O tem'orizador 1 'ermane#e #om a sua #ontagem 7mant1m TE1 e TL13 ,uando no modo
D) Mi#a desligado0 ou se/a0 1 #omo se o TR1 esti(esse em L0L) \uando #on-igurado 'ara
outro modo -un#iona normalmente0 mas -i#a 'ermanentemente ligado0 ou se/a0 #omo se
TR1 X L1L)
O modo D atua #omo se e5istisse um tem'orizador e5tra de 8 *its) O tem'orizador 1
'oder& ser usado em a'li#a$.es ,ue n%o ne#essite de interru'$.es0 #omo 'or e5em'lo0
gera$%o de ta5a de transmiss%o 'ara a 'orta serial)
OJS)" ara ati(ar as interru'$.es dos Contadores;Tem'orizadores0 os *its
!A0 !T1 e !T0 do registro I! 7Interru't !na*le3 de(er%o ser a/ustados)
ara +a*ilitar a interru'$%o do C;T 10 al1m do *it !A X10 !T1 X 1 e 'ara o
C;T 00 !A X1 e !T0 X 1)
11 - O )SSEM"=E, O 8051
INSTR8^`!S DO MICROCONTROLADOR 8051
Z Rn Indi#a RegistroR0 a RN generi#amente0 de'endente de LnL)
Z Ri Indi#a RegistroR0 ou R10 de'endendo de LiL)
Z S Signi-i#a Lendere$ado 'elo (alor de ))))L
Z RDado Indi#a (alor #onstante de 8 *its)
Z RDado 1B Indi#a (alor #onstante de 1B *its)
Z Direto Indi#a um endere$o de mem6ria de 8 *its 7 C5B 'osi$.es internas 9 RAM
interna e Registros de Mun$%o !s'e#ial 3)
Z rel Indi#a ,ue endere$amento 1 relati(o)
Z a Indi#a ,ue o -lag indi#ado 1 a-etado 'ela instru$%o e de'ende do resultado)

11.1 - I5S3,@6AES E 3,)5S-E,I59I) E )OS
MOV A0Rn [ Mo(e o Registro n 'ara o A#umulador) 71 *Hte [ 1C 'ulsos3K
MOV A0Direto [ Mo(e o #onte:do da 'osi$%o de mem6ria 'ara o A#umulador) 7C *Htes [
1C 'ulsos3K
MOV A0SRi [ Mo(e o #onte:do da RAM interna endere$ada 'o Ri 'ara o A#umulador) 71
*Hte [ 1C 'ulsos3K
MOV A0RDado [ Mo(e o Dado 'ara o A#umulador) 7C *Htes [ 1C 'ulsos3K
MOV Rn0A [ Mo(e o #onte:do do A#umulador 'ara o Registro n) 71 *Hte [ 1C 'ulsos3K
MOV Rn0Direto [ Mo(e o #onte:do da mem6ria 'ara o Registro n) 7C *Htes [ CF 'ulsos3K
MOV Rn0RDado [ Mo(e o Dado 'ara o Registro n) 7C *Htes [ 1C 'ulsos3K
MOV Direto0A [ Mo(e o #onte:do do A#umulador 'ara a 'osi$%o de mem6ria) 7C *Htes [
1C 'ulsos3K
MOV Direto0Rn [ Mo(e o #onte:do do Registro n 'ara a 'osi$%o de mem6ria) 7C *Htes [
CF 'ulsos3K
MOV Direto10DiretoC [ Mo(e o #onte:do da 'osi$%o de mem6ria C 'ara a 'osi$%o de
mem6ria 1) 7D *Htes[ CF 'ulsos3K
MOV Direto0SRi [ Mo(e o #onte:do da 'osi$%o de mem6ria endere$ada 'or Ri 'ara a
'osi$%o de mem6ria) 7C *Htes [ CF 'ulsos3K
MOV Direto0RDado [ Mo(e o Dado 'ara a 'osi$%o de mem6ria) 7D *Htes[ CF 'ulsos3K
MOV SRi0A [ Mo(e o #onte:do do A#umulador 'ara a 'osi$%o de mem6ria endere$ada
'or Ri) 71 *Hte [ 1C 'ulsos3K
MOV SRi0Direto [ Mo(e o #onte:do da 'osi$%o de mem6ria 'ara a 'osi$%o de mem6ria
endere$ada 'or Ri) 7C *Htes [ CF 'ulsos3K
MOV SRi0RDado [ Mo(e o Dado 'ara a 'osi$%o de mem6ria endere$ada 'or Ri) 7C *Htes
[ 1C 'ulsos3K
MOV DTR0RDado 1B [ Mo(e o Dado de 1B *its 'ara o Registro DTR) 7D *Htes[ CF
'ulsos3K
MOVC A0SATDTR [ Mo(e o #onte:do da 'osi$%o de mem6ria da ROM endere$ada 'or
A T DTR) O endere$o ser& de 1B *its) 71 *Hte [ CF 'ulsos3K
MOVC A0SATC [ Mo(e o #onte:do da 'osi$%o de mem6ria da ROM endere$ada 'or A
T C) O endere$o ser& de 1B *its) 71 *Hte [ CF 'ulsos3K
MOVQ A0SRi [ Mo(e o #onte:do da 'osi$%o de mem6ria da RAM e5terna endere$ada
'or Ri 'ara o A#umulador) 71 *Hte [ CF 'ulsos3K
MOVQ A0SDTR [ Mo(e o #onte:do da 'osi$%o de mem6ria da RAM e5terna
endere$ada 'or DTR 'ara o A#umulador) 71 *Hte [ CF 'ulsos3K
MOVQ SRi0A [ Mo(e o #onte:do do A#umulador 'ara a 'osi$%o de mem6ria da RAM
e5terna endere$ada 'or Ri) 71 *Hte [ CF 'ulsos3K
MOVQ SDTR0A [ Mo(e o #onte:do do A#umulador 'ara a 'osi$%o de mem6ria da RAM
e5terna endere$ada 'or DTR) 71 *Hte [ CF 'ulsos3K
8SE Direto [ Colo#a na 'il+a o #onte:do da 'osi$%o de mem6ria) In#rementa o S
7Sta#@ ointer3 e es#re(e na 'il+a) 7C *Htes [ CF 'ulsos3K
O Direto [ Retira da 'il+a o Dado e #olo#a na 'osi$%o de mem6ria) 7C *Htes [ CF
'ulsos3K
QCE A0Rn [ Tro#a entre si os #onte:do do A#umulador e do Registro n) 71 *Hte [ 1C
'ulsos3K
QCE A0Direto [ Tro#a entre si os #onte:do do A#umulador e do Registro n) 7C *Htes [ 1C
'ulsos3K
QCE A0SRi [ Tro#a entre si os #onte:do do A#umulador e da 'osi$%o de mem6ria
endere$ada 'or Ri) 71 *Hte [ 1C 'ulsos3K
QCED A0SRi [ Tro#a os ni**les menos signi-i#ati(os do #onte:do do A#umulador e da
'osi$%o de mem6ria endere$ada 'or Ri) 71 *Hte [ 1C 'ulsos3)
11.2 - InstruJes para KariHveis "ooleanas
CLR C [ Aera o CarrH) 71 *Hte [ 1C 'ulsos3 7CWX03K
CLR Jit [ Aera o *it !ndere$ado) 7C *Htes [ 1C 'ulsos3K
S!TJ C [ Seta o CarrH) 71 *Hte [ 1C 'ulsos3 7CWX13K
S!TJ Jit [ Seta o *it endere$ado) 7C *Htes [ 1C 'ulsos3K
CL C [ Com'lementa o CarrH) 71 *Hte [ 1C 'ulsos3 7CWXa3K
CL Jit [ Com'lementa o *it endere$ado) 7C *Htes [ 1C 'ulsos3K
ANL C0Jit [ O'era$%o AND entre o CarrH e o *it endere$ado) 7C *Htes [ CF 'ulsos3
7CWXa3K
ANL C0;Jit [ O'era$%o AND entre o CarrH e o #om'lemento do *it endere$ado) 7C *Htes [
CF 'ulsos3 7CWXa3K
ORL C0Jit [ O'era$%o OR entre o CarrH e o *it endere$ado) 7C *Htes [ CF 'ulsos3 7CWXa3K
ORL C0;Jit [ O'era$%o OR entre o CarrH e o #om'lemento do *it endere$ado) 7C *Htes [
CF 'ulsos3 7CWXa3K
MOV C0Jit [ Mo(e o *it endere$ado 'ara o CarrH) 7C *Htes [ 1C 'ulsos3 7CWXa3
MOV Jit0C [ Mo(e o CarrH 'ara o *it endere$ado) 7C *Htes [ CF 'ulsos3K
VC rel [ Salta se o CarrH -or L1L) O /um' 1 relati(o) 7C *Htes [ CF 'ulsos3K
VNC rel [ Salta se o CarrH -or L0L) O /um' 1 relati(o) 7C *Htes [ CF 'ulsos3K
VJ Jit0 rel [ Salta se o *it endere$ado esti(er em L1L) 7D *Htes [ CF 'ulsos3K
VNJ Jit0rel [ Salta se o *it endere$ado esti(er em L0L) 7D *Htes [ CF 'ulsos3K
VJC Jit0rel [ Salta se o *it endere$ado esti(er em L1L de'ois zera o *it) 7D *Htes[ CF
'ulsos3)
11.% - InstruJes )ritm$ticas
ADD A0Rn [ Soma o #onte:do do Registro n ao A#umulador) 71 *Hte [ 1C 'ulsos3 7CWXa0
ACXa0 OVXa3K
ADD A0Direto [ Soma o #onte:do da 'osi$%o de mem6ria ao A#umulador) 7C *Htes [ 1C
'ulsos3 7CWXa0 ACXa0 OVXa3K
ADD A0SRi [ Soma o #onte:do da 'osi$%o de mem6ria endere$ada 'or Ri ao
A#umulador) 71 *Hte [ 1C 'ulsos3 7CWXa0 ACXa0 OVXa3K
ADD A0RDado [ Soma o Dado ao A#umulador) 7C *Htes [ 1C 'ulsos3 7CWXa0 ACXa0
OVXa3K
ADDC A0Rn [ Soma o #onte:do do Registro n e o CarrH ao A#umulador) 71 *Hte [ 1C
'ulsos3 7CWXa0 ACXa0 OVXa3K
ADDC A0Direto [ Soma o #onte:do da 'osi$%o de mem6ria e o CarrH ao A#umulador) 7C
*Htes [ 1C 'ulsos3 7CWXa0 ACXa0 OVXa3K
ADDC A0SRi [ Soma o #onte:do da 'osi$%o de mem6ria endere$ada 'or Ri e o CarrH ao
A#umulador) 71 *Hte [ 1C 'ulsos3 7CWXa0 ACXa0 OVXa3K
ADDC A0RDado [ Soma o Dado e o CarrH ao A#umulador) 7C *Htes [ 1C 'ulsos3 7CWXa0
ACXa0 OVXa3K
S8JJ A0Rn [ Su*trai o #onte:do do Registro n e o CarrH do A#umulador) 71 *Hte [ 1C
'ulsos3 7CWXa0 ACXa0 OVXa3K
S8JJ A0Direto [ Su*trai o #onte:do da 'osi$%o de mem6ria e o CarrH do A#umulador) 7C
*Htes [ 1C 'ulsos3 7CWXa0 ACXa0 OVXa3K
S8JJ A0SRi [ Su*trai o #onte:do da 'osi$%o de mem6ria endere$ada 'or Ri e o CarrH
do A#umulador) 71 *Htes [ 1C 'ulsos3 7CWXa0 ACXa0 OVXa3K
S8JJ A0RDado [ Su*trai o Dado e o CarrH do A#umulador) 71 *Hte [ 1C 'ulsos3 7CWXa0
ACXa0 OVXa3K
INC A [ In#rementa o A#umulador) 71 *Hte [ 1C 'ulsos3K
INC Rn [ In#rementa o Registro n) 71 *Hte [ 1C 'ulsos3K
INC Direto [ In#rementa o #onte:do da 'osi$%o de mem6ria) 7C *Htes [ 1C 'ulsos3K
INC SRi [ In#rementa o #onte:do da 'osi$%o de mem6ria endere$ada 'or Ri) 71 *Hte [
1C 'ulsos3K
D!C A [ De#rementa o A#umulador) 71 *Hte [ 1C 'ulsos3)
D!C Rn [ De#rementa o Registro n) 71 *Hte [ 1C 'ulsos3K
D!C Direto [ De#rementa o #onte:do da 'osi$%o de mem6ria) 7C *Htes [ 1C 'ulsos3K
D!C SRi [ De#rementa o #onte:do da 'osi$%o de mem6ria endere$ada 'or Ri) 71 *Hte [
1C 'ulsos3K
INC DTR [ In#rementa o DTR) 71 *Hte [ CF 'ulsos3K
M8L AJ [ Multi'li#a A e J) O resultado -i#a" 'arte mais signi-i#ati(a em J e menos
signi-i#ati(a em A#umulador) 71 *Hte [ F8 'ulsos3 7CWX00 OVXa3K
DIV AJ [ Di(ide A e J) O resultado -i#a" a 'arte inteira no A#umulador e o resto em J) 71
*Hte [ F8 'ulsos3 7CWX00 OVX0Z3 Z OVX1 #aso J ini#ialmente se/a 00EK
DA A [ Maz o a/uste de#imal do a#umulador) 71 *Hte [ 1C 'ulsos3 7CWXa0 ACXa3)
11.( - I5S3,@6AES E ESKIO
ACALL !nd 11 [ C+ama su*9rotina numa -ai5a de C I*Htes da atual 'osi$%o) 7C *Htes [
CF 'ulsos3K
LCALL !nd 1B [ C+ama su*9rotina em ,ual,uer 'osi$%o da mem6ria de 'rograma 7ROM3)
7D *Htes [ CF 'ulsos3K
R!T [ Retorno de su*9rotina) 71 *Hte [ CF 'ulsos3K
R!TI [ Retorno de rotina de interru'$%o) 71 *Hte [ CF 'ulsos3K
AVM !nd 11 [ Salta 'ara outro endere$o numa -ai5a de CI*Htes da atual) 7C *Htes [ CF
'ulsos3K
LVM !nd 1B [ Salta 'ara ,ual,uer 'osi$%o de mem6ria de 'rograma 7ROM3) 7D *Htes [
CF 'ulsos3K
SVM rel [ Salto #urto relati(o) Salta 1CN 'osi$.es 'ara -rente ou 1C8 'ara tr&s) 7C *Htes [
CF 'ulsos3K
VM SA0DTR [ Salta 'ara o endere$o A T DTR) 71 *Hte [ CF 'ulsos3K
VA rel [ Salta se o A#umulador -or zero) 7C *Htes [ CF 'ulsos3K
VNA rel [ Salta se o A#umulador n%o -or zero) 7C *Htes [ CF 'ulsos3K
CVN! A0 Direto0 rel [ Com'ara e salta se o A#umulador -or di-erente da mem6ria
endere$ada) 7D *Htes [ CF 'ulsos3 7CWXa3K
CVN! A0RDado0rel [ Com'ara e salta se o A#umulador -or di-erente do Dado) 7D *Htes [
CF 'ulsos3 7CWXa3K
CVN! Rn0RDado0rel [ Com'ara e salta se o Registro n -or di-erente do Dado) 7D *Htes [ CF
'ulsos3 7CWXa3K
CVN! SRi0RDado0rel [ Com'ara e salta se o #onte:do da RAM e5terna endere$ada -or
di-erente do Dado ) 7D *Htes [ CF 'ulsos3 7CWXa3K
DVNA Rn0rel [ De#rementa o Registro n e salta se -or di-erente de zero) 7C *Htes [ CF
'ulsos3K
DVNA Direto0rel [ De#rementa o #onte:do da 'osi$%o de mem6ria e salta se -or di-erente
de zero) 7D *Htes [ CF 'ulsos3K
NO [ Nen+uma o'era$%o) 71 *Hte [ 1C 'ulsos3)
11.5 - InstruJes =+!icas
ANL A0Rn [ !5e#uta a o'era$%o AND entre o Registro n e o A#umulador) 71 *Hte [ 1C
'ulsos3K
ANL A0Direto [ !5e#uta a o'era$%o And entre o #onte:do da 'osi$%o de mem6ria e o
A#umulador) 7C *Htes [ 1C 'ulsos3K
ANL A0SRi [ !5e#uta a o'era$%o AND entre o #onte:do da 'osi$%o de mem6ria
endere$ada 'or Ri) 71 *Hte [ 1C 'ulsos3K
ANL A0RDado [ !5e#uta a o'era$%o AND entre o Dado e o A#umulador) 7C *Htes [ 1C
'ulsos3K
ANL Direto0A [ !5e#uta a o'era$%o AND entre o #onte:do da 'osi$%o endere$ada e
A#umulador) 7C *Htes [ 1C 'ulsos3K
ANL Direto0RDado[ !5e#uta a o'era$%o AND entre a 'osi$%o de mem6ria endere$ada e
Dado) 7D *Htes [ CF 'ulsos3K
ORL A0Rn [ !5e#uta a o'era$%o OR entre o Registro n e o A#umulador) 71 *Hte [ 1C
'ulsos3K
ORL A0Direto [ !5e#uta a o'era$%o OR entre o #onte:do da 'osi$%o de mem6ria e o
A#umulador) 7C *Htes [ 1C 'ulsos3K
ORL A0S Ri [ !5e#uta a o'era$%o OR entre o #onte:do da 'osi$%o de mem6ria
endere$ada 'or Ri) 71 *Hte [ 1C 'ulsos3K
ORL A0RDado [ !5e#uta a o'era$%o OR entre o Dado e o A#umulador) 7C *Htes [ 1C
'ulsos3K
ORL Direto0A [ !5e#uta a o'era$%o OR entre o #onte:do da 'osi$%o endere$ada e
A#umulador) 7C *Htes [ 1C 'ulsos3K
ORL Direto0RDado [ !5e#uta a o'era$%o OR entre a 'osi$%o de mem6ria endere$ada e o
Dado) 7D *Htes [ CF 'ulsos3K
QRL A0Rn [ !5e#uta a o'era$%o LO8 !QCL8SIVOL entre o Registro n e o A#umulador) 71
*Hte [ 1C 'ulsos3K
QRL A0Direto [ !5e#uta a o'era$%o LO8 !QCL8SIVOL entre o #onte:do da 'osi$%o de
mem6ria e o A#umulador) O resultado -i#a no A#umulador) 7C *Htes [ 1C 'ulsos3K
QRL A0SRi [ !5e#uta a o'era$%o LO8 !QCL8SIVOL entre o #onte:do da 'osi$%o de
mem6ria endere$ada 'or Ri e o A#umulador) 71 *Hte [ 1C 'ulsos3K
QRL A0RDado [ !5e#uta a o'era$%o O8 !QCL8SIVOL entre o Dado e o A#umulador) 7C
*Htes [ 1C 'ulsos3K
QRL Direto0A [ !5e#uta a o'era$%o LO8 !QCL8SIVOL entre o #onte:do da 'osi$%o de
mem6ria e o A#umulador O resultado -i#a na 'osi$%o de mem6ria) 7C *Htes [ 1C 'ulsos3K
QRL Direto0RDado [ !5e#uta a o'era$%o LO8 !QCL8SIVOL entre o Dado e o #onte:do da
'osi$%o de mem6ria) O resultado -i#a na 'osi$%o de mem6ria) 7D *Htes [ CF 'ulsos3K
CLR A [ Aera o A#umulador) 71 *Hte [ 1C 'ulsos3K
CL A [ Com'lementa o A#umulador) 71 *Hte [ 1C 'ulsos3K
RL A [ Deslo#a o A#umulador P es,uerda) 71 *Hte [ 1C 'ulsos3K
RLC A [ Deslo#a o A#umulador P es,uerda atra(1s do CarrH) 71 *Hte [ 1C 'ulsos3 7CWXa3K
RR A [ Deslo#a o A#umulador P direita) 71 *Hte [ 1C 'ulsos3K
RRC A [ Deslo#a o A#umulador P direita atra(1s do CarrH) 71 *Hte [ 1C 'ulsos3 7CWXa3K
S<A A [ Tro#a o ni**le in-erior do A#umulador #om o su'erior) !,ui(ale a F (ezes RR A
ou RL A) 71 *Hte [ 1C 'ulsos3)

Você também pode gostar