MICROCONTROLADOR:
um circuito eletrnico que tem em um nico chip, uma Unidade Central de Processamento ou
CPU, elementos tais como memrias ROM e RAM, temporizadores, contadores, canais de
comunicao e conversores A/D e D/A. um componente eletrnico dedicado a certas tarefas
especficas.
MICROPROCESSADOR:
um circuito igual ao microcontrolador, porem utiliza vrios componentes externos para realizar
as suas funes. Devido utilizao destes perifricos, o microprocessador realiza mais tarefas
que o microcontrolador.
A figura 1 mostra o diagrama em blocos simplificado de um sistema microprocessado, onde pode
ser analisado seu princpio de funcionamento.
Barramento de dados
Power on
reset
Interrupes
Micro
processador
Memria
ROM
de programa
Memria
RAM
de dados
Barramento
de endereos e controle
Clock
Alimentao
Circuito de seleo
Portas
de entrada
e sada
Osmar
MEMRIA DE DADOS:
uma memria voltil que armazena os dados a serem processados, provenientes do programa do
usurio.
CIRCUITO DE CLOCK ou RELGIO:
responsvel pelo fornecimento de um sinal de onda quadrada que habilita as portas lgicas que
compem os circuitos do microprocessador e faz com que seus circuitos internos funcionem.
POWER ON RESET:
responsvel pela gerao de um sinal chamado reset que faz com que o microprocessador ao ser
energizado comece a funcionar sempre em uma condio pr estabelecida. Isto necessrio para se
ter uma organizao interna do microprocessador, pois se assim no o fosse o microprocessador
funcionaria aleatoriamente sem executar uma tarefa.
CIRCUITO DE SELEO:
responsvel pelo fornecimento dos sinais de seleo e habilitao da memria de dados,
memria de programa, das portas de entrada e sada, sempre em conformidade com as instrues
que esto sendo executadas pela CPU.
BARRAMENTO DE DADOS:
Representam as linhas que interligam a CPU s portas de entrada e sada, e s memrias. Este
conjunto de linhas bidirecional, e a CPU as utiliza para leitura ou escrita em dispositivos de
entrada e sada ou memrias.
BARRAMENTO DE ENDEREO:
Representam as linhas que interligam a CPU s memrias e ao circuito de seleo. Este conjunto
de linhas unidirecional. a CPU que fornece os endereos em resposta as instrues recebidos.
BARRAMENTO DE CONTROLE:
Representam as linhas que interligam a CPU s memrias, perifricos e ao circuito de seleo. A
CPU sempre fornece sinais de controle, em resposta s instrues recebidas.
Osmar
1- BUSCA A INSTRUO:
O contedo do PC colocado no barramento de endereo.
O microprocessador fornece um sinal chamado de leitura de memria que permitir a busca do
contedo deste endereo.
O microprocessador espera o dado vindo da memria e armazena-o em um registro interno,
chamado de registro de instruo.
O contedo do PC incrementado, ou seja, aponta para a prxima instruo.
2- DECODIFICA A INSTRUO:
Uma vez que o contedo do programa constitudo de escrita em cdigo binrio, o registro de
instruo fornece este sinal a um dos diversos circuitos internos do microprocessador para
que uma tarefa seja executada. No interior do microprocessador devem existir circuitos
lgicos tantos quantos for seu nmero de instrues.
3- EXECUTA A INSTRUO:
O circuito acionado na sada do decodificador de instruo executa a instruo.
O microprocessador no sair mais deste ciclo at o fim da execuo de um programa:
BUSCA A INSTRUO.
DECODIFICA A INSTRUO.
EXECUTA A INSTRUO.
PROGRAMA:
Sequncia de instrues que permite realizar uma determinada tarefa.
A velocidade de operao do microprocessador depende da freqncia do pulso de clock. Quanto
maior esta for, mais veloz ele ser. Porem toda estrutura ou hardware associada ao
microprocessador deve ter um desenvolvimento tecnolgico e ser compatvel com o equipamento
para conseguir responder maior freqncia do pulso de clock sem causar danos ao programa que
est sendo executado.
A figura 2 mostra a pinagem e a figura 3 o diagrama interno simplificado do microprocessador
80C51.
PORTAS DE ENTRADA/SAIDA:
Porta o conjunto de pontos que podem funcionar como meio de entrada ou sada de dados para o
microprocessador. Cada porta constituda de 8 pontos, cada ponto chamado de pino.
P0-0 a P0-7; P1-0 a P1-7; P2-0 a P2-7 e P3-0 a P3-7; so portas de 8 bits, bidirecionais, que
pem ser programadas como entrada ou sada.
Osmar
P0-0 a P0-7: estes pontos sendo programados com nvel lgico 1, fazem os pinos funcionarem com
entradas de alta impedncia. Alem disto esta porta tem a funo alternativa de multiplexar dados
com o byte inferior de endereos durante o acesso memria externa de dados ou programa.
P1-0 a P1-7: porta com resistor pull-up interno. A programao com nvel lgico 1 faz a porta
funcionar como entrada. Quando levados a 0, pelo dispositivo externo o pino fornecer corrente
atravs dos resistores pull-up.
Resistor pull-up: resistor ligado a +Vcc de um lado e quando o outro lado aterrado, promove
uma circulao de corrente para o circuito a ele ligado. Pull-up: puxa para cima.
P2-0 a P2-7: igual a P1-0 a P1-7.
Alem disto, a porta 2 tem a funo alternativa de fornecer o byte superior de endereos durante o
acesso memria externa de dados ou programa.
P3-0 a P3-7: igual a P2-0 a P2-7 e P1-0 a P1-7
Alem disto, os pinos desta porta podem ter as funes ilustradas na tabela 1:
RxD
TxD
INT0
INT1
T0
T1
Wr
Rd
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
AT 80C51
40
1
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
1
+Vcc
P0.0/AD0
P0.2/AD2
P0.1/AD1
P0.3/AD3
P0.4/AD7
P0.5/AD5
P0.6//AD6
P0.7/AD7
__
EA
ALE
_____
PSEN
P2.7/A15
P2.6/A14
P2.5/A13
P2.4/A12
P2.3/A11
P2.2/A10
P2.1/A9
P2.0/A8
Osmar
RAM
RAM ADDRESS
REGISTER
P0-0 P0-7
P2-0 P2-7
PORT 0
DRIVERS
PORT 2
DRIVERS
PORT 0
LATCH
PORT 2
LATCH
STACK
POINTER
ACC
B
REGISTER
TMP1
TMP2
ULA
EPROM
ROM
PSW
PROGRAM
ADDRESS
REGISTER
BUFER
PC
INCREMENTER
PROGRAM
COUNTER
INSTRUTION
REGISTER
DPTR
PORT 1
LATCH
PORT 3
LATCH
PORT 1
DRIVERS
P1-0 P1-7
P3-0 P3-7
TIMING
AND
CONTROL
PORT 3
DRIVERS
PSEN
ALE
EA
RST
OSCILADOR
Osmar
ROM
interna
4KB
_____
PSEN
__
EA
0000
Osmar
FFFF ou 65535
_____
PSEN
ROM
externa
64KB
__
EA
0000
FFFF ou 65535
__
Rd
RAM
Externa
64KB
___
Wr
0000
Osmar
Uso geral
e pilha
128 bytes
0000
P1
P1- 0 a P1 - 7
P3
P3- 0 a P3 - 7
P0
+5V
D/A
GND
11,0592
MHz
XTAL
A0 a A7
ROM
ALE
XTAL
33pF
A0 a A7
A0 a A7
LATCH
RST
33pF
D0 a D7
P2
_____
PSEN
___
RD
___
WE
RAM
LE
A
A8
___a A15
OE
A8 a A15
___
OE
___
WE
Osmar
A porta P0 ser usada como barramento de dados e endereos multiplexados, fornecendo a parte
baixa dos endereos da memria que se deseja acessar e servindo como ponto de entrada e sada dos
dados provenientes da memria RAM e como ponto de entrada dos dados provenientes da memria
ROM. Isto est representado na figura 8 como D para dados, Data; e A para endereo, Addres.
ALE:
A parte baixa do endereo fica armazenada em um latch externo chamado de Addres Latch
Enable, ALE ou latch inibidor de endereo. O microprocessador gera um sinal que permite a
escrita desta parte do endereo neste latch.
A porta P2 ser usada como barramento da parte alta do endereo e este permanecer neste
barramento durante a aquisio de dados. Na figura 8 isto est representado como P2 e A8 a A15.
REGISTROS DE USO GERAL ou REGISTRADORES DE USO GERAL e PILHA:
A rea interna da RAM utilizada pelo microprocessador divida em duas outras partes sendo uma
a de registros de uso geral e a outra a pilha. Os registros de uso geral so pequenos segmentos
desta memria, de oito bits cuja funo armazenar os dados que sero utilizados pelo programa.
A pilha tem a mesma finalidade, porem seu tamanho maior que a de um registro, pois nesta,
defini-se seu fundo e colocam-se dados em uma regio maior, em seqncia, como se estivessem
empilhados. A figura 9 representa os diversos tipos de registros existentes no 8051 e seus
respectivos endereos.
127 ou 7F
48 ou 30
47 ou 2F
Regio byte
enderevel
Regio Bit e
byte enderevel
32 ou 20
31 ou 1F
Banco 3
R0 a R7
24 ou 18
23 ou 17
16 ou 10
15 ou 0F
Banco 2
R0 a R7
b
Banco 1
R0 a R7
08 ou 08
07 ou 07
Banco 0
R0 a R7
00 ou 00
Osmar
Osmar
10
Osmar
11
REGISTRO B:
O registro B utilizado durante as operaes de multiplicao e diviso. Para outras instrues
este registro poder ser usado para fazer armazenagem temporria de dados.
REGISTRO APONTADOR DE DADOS, DPTR:
O registro apontador de dados formado por um byte alto, DPH, e por um byte baixo, DPL.
A sua funo de manter um endereo de 16 bits, usado para acessar memrias externas.
Portanto, este registro pode ser utilizado como um registro de 16 bits ou 2 registros
independentes de 8 bits.
REGISTROS DAS PORTAS 0 a 3, P0-P3:
Os registros P0, P1, P2 e P3 so latchs das portas 0, 1, 2 e 3, respectivamente, com a finalidade de
armazenar os dados que sero acessados pela porta.
REGISTRO DE BUFFER DE DADOS SERIAL, SBUF:
O registro de dado serial composto de 2 registros separados, sendo um registro buffer
transmissor e outro buffer receptor. nestes registros que ficam os dados a serem transmitidos ou
recebidos.
REGISTROS TEMPORIZADORES, TH:
So registros utilizados para fazer contadores/temporizadores no microprocessador.
O par de registros TH0,TL0 e TH1,TL1 , formam o registro contador para o temporizador/contador
do microprocessador, 0 e 1 respectivamente.
REGISTROS DE CONTROLE, IP, IE, TMOD, TCON, SCON e PCON:
Os registros de controle, IE, TMOD, TCON, SCON e PCON armazenam bits que permitem fazer
controle e verificar o status do sistema de interrupo, dos temporizadores/contadores e da porta
serial.
Osmar
12
INTERRUPES
As interrupes param a seqncia normal da execuo de um programa para atendimento imediato a eventos
internos ou externos de maior prioridade.
Para que uma interrupo seja atendida, a mesma dever estar devidamente habilitada pelo software e na
possibilidade de ocorrncia de mais de uma interrupo simultaneamente, existe uma hierarquia de prioridade
de atendimento.
Quando uma interrupo atendida, o valor do registro PC salvo na pilha, de forma a possibilitar o posterior
retorno do programa ao ponto em que havia parado.
Ao termino da execuo do evento que originou a interrupo encontra-se uma instruo de retorno que por sua
vez busca o dado apontado pela pilha e o coloca no PC.
As interrupes podem ser internas ou externas ao microprocessador.
No 8031, h 5 interrupes:
Interrupo INT0. Externa.
Interrupo INT1. Externa.
Temporizador/contador de eventos T0. Interna.
Temporizador/contador de eventos T1. Interna.
Interface serial. Interna.
PORT ou PORTA
So pontos de entrada do exterior para o interior do microprocessador ou de sada deste para o seu exterior.
Estas portas podem ser acessadas durante uma interrupo.
ESQUEMA SIMPLIFICADO DE UM BIT DE UMA PORTA DE ENTRADA/SADA:
Este esquema pode ser visto na figura 11:
leitura do latch
+Vcc
barramento de dados interno
escrita
CK
_
Q
pino
leitura do pino
Osmar
13
Para se ter no pino de sada de uma porta, nvel lgico 1 ou 0, as instrues executam uma escrita no latch, que
controla o FET do driver de sada atravs do sinal de sada Q complementado. Quando o FET de sada conduz, o
pino estar em nvel lgico 0.
Observa-se que a leitura de um bit de uma porta de E/S apresenta 2 sinais:
Um para comandar a leitura do estado do pino que ser o sinal de entrada, para dentro do microprocessador.
Outro comanda a leitura do latch cujo contedo ser o sinal que se deseja enviar para fora do microprocessador.
H ento, instrues que lem, modificam e escrevem a sada do latch, tais como:
ANL:
ORL:
XRL:
JBC:
CPL:
INC:
ANL P1,A
ORL P1,A
XRL P1,A
JBC P1,0
CPL P1,0
INC P1
SETB Pn.i:
CLR Pn.i:
MOV Pn.i,C
DJNZ
DEC:
SETB P2,3
CLR P3,0
MOV P2.0,C
DJNZ P3,rtulo
DEC P2
Cada uma das portas est mapeada na regio dos registros de funes especiais da memria SRAM interna, com
endereos especficos, portanto quando se deseja acessar uma porta, pode-se referir ao endereo desta, porem
mais conveniente se referir ao nome da porta associada a uma instruo:
A instruo MOV A, P1 por exemplo, l o contedo da porta P1 e guarda o valor desta no acumulador.
Da mesma forma cada um dos bits da porta tem endereo especfico, uma vez que esto em regio de memria
de bit enderevel. Portanto quando se deseja acessar um bit de uma porta, pode-se, referir ao endereo deste ou
usar a notao porta.bit, como por exemplo:
MOV C, P1.O. Esta instruo faz com que o flag C receba o estado do pino 0 da porta 1.
Todas as 4 portas de 8 bits do 8051, P0, P1, P2 e P3, podem ter seus pinos individualmente usados como entrada
ou sada, conectados, por exemplo, a dispositivos simples como chaves e leds, como tambm podem ser usadas
como barramentos de 8 bits e interfacear dispositivos perifricos como displays, conversores A/D e D/A.
Verifique nas figuras 2 e 3 por exemplo que as portas P0 e P2 ficam destinadas gerao de endereos A0 a A7
em P0 e A8 a A15 em P2, quando acessando memria externa, e a porta P3 apresenta seus pinos dotados de
funes alternativas.
Uma particularidade que a porta P0 apresenta a sua sada configurada como dreno aberto, ao contrrio das
demais portas que apresentam o resistor de pull-up interno. A porta P0 pode drenar at 8 cargas TTL, ao
contrrio das demais que podem drenar no mximo 4.
No port 3, ou porta 3 de entrada e sada, existem 4 terminais de interrupo:
P3.0
P3.1
P3.2
P3.3
Se forem usadas quaisquer das funes especiais do port 3, o mesmo dever ser acessado apenas atravs dos
seus bits individuais.
No 8051, pode-se habilitar individualmente cada interrupo, cada uma com dois nveis de prioridade definidos
por software. Existe um mecanismo interno de prioridade que define a seguinte ordem de atendimento, na
remota possibilidade de ocorrncia simultnea:
Osmar
14
maior prioridade.
menor prioridade.
Ao aplicar nvel lgico 1 nos bit de interrupo, habilita-se a interrupo que ter acesso ao endereo
indicado.
O processo de atendimento de uma interrupo feito por endereos vetoriais, ou seja, quando h uma
solicitao de interrupo vai-se sempre para um endereo vetorial que est na memria ROM onde h uma
instruo do tipo LJMP onde se coloca o endereo do incio da sub rotina da interrupo. Na tabela 1 onde se
tem endereo o primeiro de entrada, o segundo para onde o primeiro o conduz e onde deve ser colocado o
endereo da sub rotina a ser executada.
Portanto ao se utilizar uma destas interrupes, no endereo correspondente deve-se colocar uma instruo
LJMP para a posio inicial de servio de interrupo.
CIRCUITO DE INTERRUPO
O circuito equivalente de interrupo pode ser visto na figura 11. Neste circuito tem-se:
IE0 e IE1 sinalizam internamente os pedidos de interrupo externa.
1: h pedido.
0: no h pedido ou houve e j foi atendido.
ITO e IT1 determinam se o pedido de interrupo ser por nvel ou transio.
1: o pedido ser por transio, 1 para 0.
0: o pedido ser por nvel, 0.
No registro IP os bits que estiverem com nvel lgico 1 tero o pedido de interrupo atendido de acordo com as
seguintes regras:
Uma interrupo de nvel mais alto de prioridade ter preferncia sobre outra de nvel mais baixo. Uma
interrupo de nvel alto no poder ser interrompida por outra fonte de interrupo.
Se 2 requisies de diferentes nveis de prioridade forem recebidas simultaneamente, a de maior nvel ser
atendida primeiro.
Osmar
15
Registro IE
____
INT0
Registro IP
Interrupo de alta
prioridade
IT0
IE0
1
Seqncia
do nvel de
interrupo
T0
____
INT1
IT1
IE1
1
T1
R1
T1
Desabilitao individual.
Desabilitao geral.
Interrupo de baixa
Prioridade.
Se as requisies tiverem o mesmo nvel de prioridade, uma seleo interna determina qual requisio ser
atendido primeiro.
As chaves das requisies que aparecem no esquema da figura 11 so simblicas. Na verdade, estas so
eletrnicas e acionadas de acordo com os bits contidos nos seus respectivos registros.
No circuito da figura 11, estando as chaves do registro IP na posio indicada, os pedidos sero atendidos na
seqncia apontada pela seta. Se uma das chaves do registro IP for acionada para cima, a entrada a que ela
pertence passa a ter prioridade sobre as outras entradas de acordo com as regras estabelecidas. Isto feito por 3
bits mais significativos do registro IP, internamente, pelo microprocessador.
Osmar
16
IE.7
x
x
ES
IE.6
IE.5
IE.4
ET1
IE.3
EX1
IE.2
ET0
IE.1
EX0
IE.0
Funo.
Se EA = 0 desabilita toda e qualquer interrupo de ser gerada.
Se EA=1 permite habilitar as fontes de interrupo que forem individualmente
selecionadas atravs dos bits ES, ET1, EX1, ET0 e EX0.
No esta sendo utilizado.
No est sendo utilizado.
Habilita ou desabilita a interrupo da porta serial.
ES = 0 desabilita.
ES = 1 habilita.
Habilita ou desabilita a interrupo do temporizador/contador 1.
ET1 = 0 desabilita.
ET1 = 1 habilita.
Habilita ou desabilita a interrupo externa 1.
EX1 = 0 desabilita.
EX1 = 1 habilita.
Habilita ou desabilita a interrupo do temporizador/contador 0.
ET0 = 0 desabilita.
ET0 = 1 habilita.
Habilita ou desabilita a interrupo externa 0.
EX0 = 0 desabilita.
EX0 = 1 habilita.
Tabela 4: posio e funo de cada bit do registro IE.
Como exemplo, se fosse necessrio habilitar as duas interrupes externas, o registro IE deveria ter os bits EA,
EX1 e EX0 preenchidos com nvel lgico 1, os bits ES, ET1 e ET0 preenchidos com nvel lgico 0 e oestados
dos bits IE.6 e IE.5, irrelevantes, podendo ser 0. Assim ter-se-ia:
MOV IE, #10000101
x
x
x
PS PT1 PX1 PT0 PX0
IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0
Timer1
Timer0
Canal serial
INT1
INT0
Osmar
17
Smbolo. Posio.
Funo.
x
IP.7
No esta sendo utilizado.
x
IP.6
No esta sendo utilizado.
x
IP.5
No esta sendo utilizado.
PS = 1 permite que a interrupo do canal serial tenha a mais alta prioridade de
PS
IP.4
atendimento.
PS = 0 mantem a ordem de prioridade de atendimento da interrupo do canal serial
inalterada.
PT1 = 1 permite que a interrupo temporizador/contador 1 tenha a mais alta prioridade
PT1
IP.3
de atendimento.
PT1 = 0 mantem a ordem de prioridade de atendimento da interrupo
temporizador/contador 1 inalterada.
PX1 = 1 permite que a interrupo externa 1 tenha a mais alta prioridade de atendimento.
PX1
IP.2
PX1 = 0 mantem a ordem de prioridade de atendimento da interrupo externa 1
inalterada.
PT0 = 1 permite que a interrupo temporizador/contador 0 tenha a mais alta prioridade
PT0
IP.1
de atendimento.
PT0 = 0 mantem a ordem de prioridade de atendimento da interrupo do canal serial
inalterada.
PX0 = 1 permite que a interrupo externa 0 tenha a mais alta prioridade de atendimento.
PX0
IP.0
PX0 = 0 mantem a ordem de prioridade de atendimento da interrupo externa 0
inalterada.
Tabela 5: posio e funo de cada bit do registro IP.
Como exemplo, se fosse priorizar a interrupo externa 1 o registro IP poderia ter os bits IP7, IP6 e IP5
preenchidos com nveis lgicos irrelevantes, podendo ser 0, os bits PS, PT1, PT0 e PX0 devem ser preenchidos
com nvel lgico 0 e o bit PX1 ser preenchido com nvel lgico 1. Assim ter-se-ia:
MOV IP, #00000100
Osmar
18
x
x
x
x
IE1 IT1 IE0 IT0
TCON.7 TCON.5
TCON.3 TCON.1
TCON.6
TCON.4
TCON.2 TCON.0
Posio.
TCON.7
TCON.6
TCON.5
TCON.4
Funo.
No esta sendo utilizado para esta funo
No esta sendo utilizado para esta funo
No esta sendo utilizado para esta funo
No esta sendo utilizado para esta funo
Bit de interrupo externa 1. ativado por circuito externo, quando ocorre uma
TCON.3
____
transio de nvel alto para baixo for detectada no pino INT1. zerado por circuito,
quando, ao termino da interrupo.
TCON..2 Bit de controle do tipo de interrupo 1. ativado por programao para especificar
transio de descida do pulso ou nvel baixo para o sinal de interrupo externa.
Bit de interrupo externa 0. ativado por circuito externo, quando ocorre uma
TCON.1
_____
transio de nvel alto para baixo for detectada no pino INT0. zerado por circuito,
quando, ao termino da interrupo.
TCON.0 Bit de controle do tipo de interrupo 0. ativado por programao para especificar
transio de descida do pulso ou nvel baixo para o sinal de interrupo externa.
Tabela 6: posio e funo dos bits 3, 2, 1 e 0 do registro de controle TCON.
MNEMNICO
Exemplo: MOV IE, #81
MOV TCON, #01
DESCRIO NARRATIVA
habilita a interrupo interna.
ativa a interrupo INT0 ou INT1 por borda.
CDIGOS
75 A8 81
75 88 01
REGISTRO TEMPORIZADOR/CONTADOR:
Osmar
19
O par de registros TH0, TL0 e TH1, TL1 formam o registro contador para temporizador/contador 0 e 1
respectivamente. Estes registros podem ser configurados para operar como temporizador ou como contador.
Na funo de temporizador, o registro ser incrementado a cada ciclo de mquina. Desde que um ciclo de
mquina corresponde a 12 perodos do oscilador, a taxa de contagem ser de 1/12 de freqncia do oscilador.
Na funo contador, o registro ser incrementado em resposta a transio de 1 para 0 do seu correspondente
pino de entrada externa, T0 ou T1 da porta 3. Nesta funo os pinos externos sero amostrados durante o estado
5 da fase 2 de todos os ciclos de mquina. Assim, quando uma amostragem indicar um nvel alto em um ciclo e
um nvel baixo no prximo ciclo, o contador ser incrementado.
A mxima taxa de contagem ser de 1/24 da freqncia do oscilador, visto que so necessrios 2 ciclos de
mquinas para o reconhecimento de uma transio de 1 para 0.
No h nenhuma restrio quanto ao ciclo de trabalho do sinal externo, mas para garantir que o nvel lgico
amostrado seja correto, o mesmo dever ter uma durao de pelo menos um ciclo de mquina completo.
A operao como temporizador tem 4 modos possveis.
A seleo de temporizador ou contador, realizada atravs do registro de funo especial TMOD. Este registro
dividido em 2 partes iguais que controlam o temporizador 1 e o temporizador 0.
A figura 12 ilustra a arquitetura dos temporizadores/contadores, T/C, do microprocessador 8051, evidenciando
seus registros internos:
oscilador
12
Controle
C/T = 0
C/T = 1
TL0/1
5 bits
TH0/1
8 bits
TF0/1
do registro TCON
interrupo
Pino T1 da porta 3
Bit TR0/1 do registro TCON
Bit GATE do
registro TMOD
1
____
Pino INT1 da porta 1
&
Osmar
20
TCON.4
TCON.2 TCON.0
Posio.
Funo.
Bit de overflow do temporizador 1. Vai a 1 por hardware sempre que o T/C1 atingiu o
TCON.7 valor mximo de contagem e ocorreu um timer overflow. Vai a zero por software
sempre que se deseja reiniciar o T/C.
Bit de controle de operao do temporizador 1. preenchido por programao para
TCON.6 ligar ou desligar, a operao do temporizador/contador 1. Nvel lgico 1 inicia a
contagem. Nvel lgico 0 para a contagem.
Bit de overflow do temporizador 0. Vai a 1 por hardware sempre que o T/C0 atingiu o
TCON.5 valor mximo de contagem e ocorreu um timer overflow. Vai a zero por software
sempre que se deseja reiniciar o T/C.
Bit de controle de operao do temporizador 0. preenchido por programao para
TCON.4 ligar ou desligar, a operao do temporizador/contador 0. Nvel lgico 1 inicia a
contagem. Nvel lgico 0 para a contagem.
TCON.3 No esta sendo utilizado para esta funo
TCON..2 No esta sendo utilizado para esta funo
TCON.1 No esta sendo utilizado para esta funo
TCON.0 No esta sendo utilizado para esta funo
Tabela 7: posio e funo de cada bit do registro TCON.
TCON
BIT
G0
TM.3
Osmar
21
Smbolo
G1
G0
Posio
TM.7
TM3
Funo
Usado para selecionar o tipo de controle de disparo do T/C.
Se Gn = 0 o T/C controlado apenas atravs do bit TRn.
Se Gn = 1 o T/C controlado atravs do bit TRn e do pino INTn.
T/C1
TM.6
Usado para selecionar a operao do T/C como temporizador ou contador.
T/C0
TM2
Se T/C = 1 contador. Se T/C = 0 temporizador.
M00/M10 TM.0/TM.1 Estes 2 bits tem com funo selecionar um dentre 4 modos de operao dos
M01/M11 TM.4/TM.5 T/Cs, de acordo com o mostrado na tabela 9.
Tabela 8: posio e funo de cada bit do registro TMOD.
M0
0
1
0
1
CANAL SERIAL:
Osmar
22
A interface serial do microprocessador 8051 pode ser usada de 4 modos diferentes: com operaes tipo
sncrona, assncrona, com taxas de transmisso fixa ou varivel..
Os registros utilizados para programar os canais seriais so os seguintes:
SBUF ou Buffer de Canal Serial e SCON ou Controle de Canal Serial.
Uma transmisso serial sempre se inicia quando um byte escrito no registro SBUF, sendo este byte
serializado e enviado para o pino TxD da porta P3 de onde pode ser transmitido.
Para habilitar a recepo o bit REN, Recepo Habilitada, do registro de controle SCON, dever ser setado e
os bits quando recebidos pelo pino RxD da porta P3 sero paralelizados e enviados para o registro SUBF para
ser lido.
REGISTRO DE CONTROLE DO CANAL SERIAL - SCON - BIT ENDEREAVEL:
SCON: Serial Control.
Endereo: 89.
Este registro de 8 bits, usado para selecionar os modos de operao do canal serial
O formato deste registro com os seus respectivos bits esta representado a seguir:
SM0
SM.7
SM1 SM2
SM.6 SM.5
REN
SM.4
TB8
SM.3
RB8
T1
SM.2 SM.1
R1
SM.0
Posio.
Funo.
SM.6 e SM.7 Seleciona 1 dentre 4 modos de operao do canal serial, de acordo com a tabela
11.
Habilita a comunicao entre vrios processadores nos modos 2 e 3. Nos modos
SM.5
2 ou 3, se SM2=1 R1 no pode ser ativado se no 9 bit RB8=0. No modo 1, se
SM2=1, ento R1 no pode ser ativado se um bit de parada valido no for
recebido. No modo 0, SM2 deve ser 0.
SM.4
Colocado em 1 ou 0 por software habilita ou desabilita a recepo,
respectivamente.
SM.2
Nos modos 2 e 3, o nono bit a ser recebido. No modo 1, se SM2=0, RB8 o
bit de parada. No modo 0, RB8 no usado.
SM3
o nono bit a ser transmitido nos modos 2 e 3. zerado ou no por software.
Flag de interrupo da transmisso serial. Vai a 1 por hardware ao fim do 8 bit
SM1
no modo 0, ou pela chegada dos bits de parada nos outros modos. Deve ser
zerado por software.
Flag de interrupo da recepo serial. Vai a 1 por hardware ao fim do 8 bit no
SM.0
modo 0, ou na metade do bit de parada nos outros modos, exceto comSM2.
deve ser zerado por software.
Osmar
23
SM0
0
0
1
Divisor
por 12
Taxa de
transmisso
SMOD = 0
Timer
overflow
Taxa de
transmisso
Divisor
por 16
SMOD = 1
Osmar
24
Neste modo o canal o canal serial colocado no modo UART de 9 bits seriais, que como no modo 1 so
precedidos por um bit de start em nvel lgico baixo, s seguido por um bit de stop em nvel lgico alto. Quando
da recepo, o bit RB8 do SCON reservado para receber o nono bit da palavra de dado, ao invs de receber o
stop como no modo 1. Na transmisso o bit TB8 recebe o nono bit que pode ser um bit de paridade, por
exemplo. O diagrama em blocos da representado na figura 15 representa o canal serial no modo 2.
Divisor
por 32
SMOD = 0
Timer
overflow
Taxa de
transmisso
Divisor
por 64
SMOD = 1
Osmar
25
Sendo:
11
Osmar
26
Para cada tipo de instruo existe um formato sempre construdo neste princpio.
Como uma especificao binria igual do exemplo se tornaria muito trabalhosa e muito sujeita a
erros por parte do digitador, esta feita em hexadecimal e a que ser digitada no teclado do
microrpocessador e este se encarrega de transformar o nmero dado em hexadecimal, em binrio.
Para no se ter o trabalho de fazer transformao de binrio para hexadecimal, tem-se tabelas que
ao serem consultadas fornecem o cdigo hexadecimal de acordo com a instruo desejada.
As instrues so montadas de acordo com o seguinte:
1- MNEMONICO EM ASSEMBLY:
a abreviatura de uma instruo:
2- NOME DA INSTRUO:
a designao da instruo:
3- DESCRIO SIMBLICA:
mostra a operao que ser realizada utilizando smbolos: exemplo: (r0) (A)
4- DESCRIO NARRATIVA:
descreve a operao que ser realizada:
5- CDIGO BINRIO:
apresenta a instruo em binrio de acordo com o modo que o microprocessador ir operar.
Exemplo: 11111000.
6- INFORMAES COMPLEMENTARES:
Adicionam mais contedos instruo que possam ajudar o entendimento da instruo ou
auxiliar a elaborao de programas.
Estados.
Endereamanto.
Flags.
o contedo do registro PSW onde cada bit representa certas condies que
acontecem aps as operaes realizadas no microprocessador.
Osmar
27
MOV A, Rn
Osmar
28
Carrega no acumulador o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7, do banco de
registros especificado no registro PSW.
R0 E8
Se no especificar, este banco ser o zero.
R1 E9
Bytes: 1
R2 EA
Ciclos: 1
R3 EB
Cdigo:
R4 EC
1 1 1 0 1 r r r
R5 ED
R6 EE
Operao:
R7 EF
(A) (Rn)
Exemplo: MOV A, R0
MOV PSW 10
MOV R1, 47
MOV A, direto
Carrega no acumulador o contedo do endereo da memria de dados interna, especificado no 2
byte da instruo.
Bytes: 2
Ciclos: 1
Cdigo:
1 1 1 0 0 1 0 1
E5 endereo
endereo direto
Operao:
(A) (endereo direto)
Exemplo: MOV A, 12
MOV A, @Ri
Osmar
29
MOV A, #dado
Carrega no acumulador o valor da constante de 8 bits, especificado no 2 byte da instruo.
Bytes: 2
Ciclos: 1
Cdigo:
0 1 1 1 0 1 0 0
74 dado
dado imediato
Operao:
(A) #dado
Exemplo: MOV A, #19
MOV Rn, A
Carrega no registro R0, R1, R2, R3, R4, R5, R6 ou R7, do banco de registros em uso o contedo do
acumulador.
R0 F8
Bytes: 1
R1 F9
Ciclos: 1
R2 FA
Cdigo:
R3 FB
1 1 1 1 1 r r r
R4 FC
R5 FD
Operao:
R6 FE
(Rn) (A)
R7 FF
Exemplo: MOV R0, A
Osmar
30
O dado contido no endereo especificado no 2 byte da instruo movido para o registro R1, R2,
R3, R4 ,R5, R6 ou R7 do banco de dados selecionado.
R0 A8
Bytes: 2
R1 A9
Ciclos: 2
R2 AA
Cdigo:
R3 AB
1 0 1 0 1 r r r
R4 AC
endereo direto
R5 AD
Operao:
(Rn) (direto)
R6 AE
R7 AF
Exemplo: MOV R0, 32
MOV direto, A
Carrega no endereo indicado no segundo byte da instruo o contedo do acumulador.
Bytes: 2
Ciclos: 1
Cdigo:
1 1 1 1 0 1 0 1
F5 endereo
endereo direto
Operao:
(direto) (A)
Exemplo: MOV 12, A
MOV direto, Rn
Osmar
31
O dado contido no registro R1, R2, R3, R4 ,R5, R6 ou R7 do banco de dados selecionado movido
para o endereo da memria interna especificado no 2 byte da instruo.
R0 88
Bytes: 2
R1 89
Ciclos: 2
R2 8A
Cdigo:
R3 8B
1 0 0 0 1 r r r
R4 8C
endereo direto
R5 8D
Operao:
(direto) (Rn)
R6 8E
R7 8F
Exemplo: MOV 32, R1
Operao:
(endereo destino direto) (endereo fonte direto)
Exemplo: MOV 12, 27
Osmar
32
MOV @Ri, A
O contedo do acumulador transferido para a RAM interna no endereo contido no registro R0 ou
R1.
Bytes: 1
Ciclos: 1
Cdigo:
R0 F6
1 1 1 1 0 1 1 i
R1 F7
Operao:
((Ri)) (A)
Exemplo: MOV R1, A
Osmar
33
90 dado dado
Operao:
(DPTR) (#dado de 0 a 15)
Exemplo: MOV DPTR, #1234
Instruo MOVC:
A instruo MOVC copia o contedo da memria de programa, interna ou externa, para o
acumulador, utilizando a seguinte sintaxe:
MOVC A, <fonte>
Osmar
34
MOVC A, @A+DPTR
Adiciona o valor contido no acumulador ao valor contido no registro DPTR. O resultado formar
um endereo da memria de programa, cujo contedo ser carregado no acumulador.
Bytes: 1
Ciclos: 2
Cdigo:
1 0 0 1 0 0 1 1
93
Operao:
(A) ((A) + (DPTR) )
Exemplo: MOV A, #03
MOV DPTR, #1234
MOVC A, @A+DPTR
MOVC A, @A+PC
Adiciona o valor contido no acumulador ao valor contido no registro PC. O resultado formar um
endereo da memria de programa, cujo contedo ser carregado no acumulador.
Bytes: 1
Ciclos: 2
Cdigo:
1 0 0 0 0 0 1 1
83
Operao:
(A) ((A) + (PC) )
Exemplo: MOV A, #03
MOVC A, @A+PC
Instruo MOVX:
A instruo MOVX copia o contedo de uma posio da memria de dados, externa para o
acumulador ou vice versa, utilizando as seguintes sintaxes:
MOVX A, <fonte>
MOVX <destino>, A
Osmar
35
Os operandos <fonte> e <destino>, sempre iro utilizar o modo de endereamento indireto atravs
de ponteiros. Trata-se da nica forma de leitura ou escrita na memria de dados externa e de
perifricos externos mapeados em memria.
MOVX A, @Ri
Transfere o contedo do endereo formado pelo contedo do registro R0 ou R1 da memria externa
para o acumulador.
Bytes: 1
Ciclos: 2
Cdigo:
1 1 1 0 0 0 1 i
R0 E2
R1 E3
Operao:
(A) ((Ri))
Exemplo: MOVX A, @R1
MOVX A, @DPTR
Carrega o acumulador com o contedo da posio de memria de dados externa cujo endereo o
contedo do DPTR.
Bytes: 1
Ciclos: 2
Cdigo:
1 1 1 0 0 0 0 0
E0
Operao:
(A) ((DPTR))
Exemplo: MOVX A, @DPTR
MOVX @Ri, A
Carrega no endereo indicado por R0 ou R1, da memria RAM externa, o contedo do acumulador.
Bytes: 1
Ciclos: 2
Cdigo:
1 1 1 1 0 0 1 i
R0 F2
R1 F3
Operao:
Osmar
36
((Ri)) (A)
Exemplo: MOVX @R1, A
MOVX @DPTR, A
Coloca no endereo de memria indicado pelo registro DPTR o contedo do acumulador.
Bytes: 1
Ciclos: 2
Cdigo:
1 1 1 1 0 0 0 0
F0
Operao:
((DPTR)) (A)
Exemplo: MOVX @DPTR, A
PUSH direto
Empurra para a pilha. O registro SP incrementado de 1. Em seguida o contedo do endereo da
memria de dados interna carregado no topo da pilha.
Bytes: 2
C0 endereo
Ciclos: 2
Cdigo:
1 1 0 0 0 0 0 0
endereo direto
Operao:
(SP) (SP) + 1
((SP)) (direto)
Exemplo: MOV SP 2F
PUSH ACC
Osmar
37
POP direto
Puxa da pilha. O topo da pilha carregado no endereo da memria de dados interna. Em seguida o
registro SP decrementado.
Bytes: 2
D0 endereo
Ciclos: 2
Cdigo:
1 1 0 1 0 0 0 0
endereo direto
Operao:
(direto) ((SP))
(SP) (SP) - 1
Exemplo: POP ACC
Instruo XCH:
A instruo XCH efetua a troca de contedos entre o acumulador e um segundo operando,
utilizando a seguinte sintaxe:
XCH A, <operando>
possvel utilizar todos os modos de endereamento: imediato, direto, indireto e registro.
XCH A, Rn
Troca o contedo do acumulador com o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7.
Bytes: 1
Ciclos: 1
R0 C8
Cdigo:
R1 C9
1 1 0 0 1 r r r
R2 CA
R3 CB
Operao:
R4 CC
(A) (Rn)
R5 CD
R6 CE
R7 CF
Exemplo: XCH A, R2
Osmar
38
XCH A, direto
Troca o contedo do acumulador com o contedo do endereo especificado no 2 byte da instruo.
Bytes: 2
Ciclos: 1
C5 endereo
Cdigo:
1 1 0 0 0 1 0 1
endereo direto
Operao:
(A) (direto)
Exemplo: XCH A, FD
XCH A, @Ri
Troca o contedo do acumulador com o contedo do endereo especificado nos registros R0 ou R1.
Bytes: 1
Ciclos: 1
R0 C6
Cdigo:
R1 C7
1 1 0 0 0 1 1 i
Operao:
(A) ((Ri))
Exemplo: XCH A, R0
Instruo XCHD:
A instruo XCHD efetua a troca dos nibbles menos significativos entre o acumulador e um
segundo operando, utilizando a seguinte sintaxe:
XCHD A, <operando>
possvel utilizar apenas o modo de endereamento indireto com os ponteiros R0 e R1.
Osmar
39
XCHD A, @Ri
Permuta os 4 dgitos de baixa ordem do acumulador, que pode representar um dgito hexadecimal
ou BCD, com os 4 bits de alta ordem da posio de memria RAM interna endereada de forma
indireta pelo registro R0 ou R1. Os 4 bits de alta ordem no so afetados.
Bytes: 1
Ciclos: 1
R0 C6
Cdigo:
R1 C7
1 1 0 1 0 1 1 i
Operao:
(A3-0) ((Ri3-0))
Exemplo: XCHD A, @R0
Instruo CLR:
A instruo CLR zera o contedo do acumulador.
CLR A
Limpa o acumulador, ou seja, todos os bits do acumulador so zerados
Bytes: 1
Ciclos: 1
Cdigo:
1 1 1 0 0 1 0 0
E4
Osmar
40
Operao:
(A) (00)
Exemplo: CLR A
Instruo CPL:
CPL A
Complementa o acumulador, ou seja, cada bit do acumulador invertido.
Bytes: 1
Ciclos: 1
Cdigo:
1 1 1 1 0 1 0 0
F4
Operao:
(A) (A)
Exemplo: CPL A
ANL A, Rn
Realiza a operao E, bit a bit, entre o contedo do acumulador e o contedo do registro R0, R1,
R2, R3, R4, R5, R6 ou R7. O resultado colocado no acumulador.
R0 58
Se no especificar, este banco ser o zero.
R1 59
Bytes: 1
R2 5A
Ciclos: 1
R3 5B
Cdigo:
R4 5C
0 1 0 1 1 r r r
R5 5D
Operao:
R6 5E
R7 5F
Osmar
41
ANL A, direto
Faz a operao E, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado
no segundo byte da instruo, e coloca o resultado no acumulador.
Bytes: 2
Ciclos: 1
55 endereo direto
Cdigo:
0 1 0 1 0 1 0 1
endereo direto
Operao:
(A) (A) ^ (endereo direto)
Exemplo: ANL A F0
ANL A, @Ri
Faz a operao E, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado
no registro R0 ou R1, e coloca o resultado no acumulador.
Bytes: 1
Ciclos: 1
R0 56
Cdigo:
R1 57
0 1 0 1 0 1 1 i
Operao:
(A) (A) ^ ((Ri))
Exemplo: ANL @, R0
Osmar
42
ANL direto, A
Faz a operao lgica E, entre o contedo do endereo contido no segundo byte da instruo e o
contedo do acumulador e coloca o resultado no endereo especificado no segundo byte desta
mesma instruo.
Bytes: 2
Ciclos: 1
Cdigo:
0 1 0 1 0 0 1 0
53 endereo direto
endereo direto
Operao:
(endereo direto) (endereo direto) ^ (A)
Exemplo: ANL F0, A
Operao:
(endereo direto) (endereo direto) ^ (dado imediato)
Exemplo: ANL 12, #34
Osmar
43
ORL A, Rn
Realiza a funo OU, bit a bit, entre o contedo do acumulador e o contedo do registro R0, R1,
R2, R3, R4, R5, R6 ou R7. O resultado colocado no acumulador.
R0 48
Se no especificar, este banco ser o zero.
R1 49
Bytes: 1
R2 4A
Ciclos: 1
R3 4B
Cdigo:
R4 4C
0 1 0 0 1 r r r
R5 4D
Operao:
R6 4E
(A) (A) v (Rn)
R7 4F
Exemplo: ORL A, R3
ORL A, direto
Faz a funo OU, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado
no segundo byte da instruo, e coloca o resultado no acumulador.
Bytes: 2
Ciclos: 1
45 endereo direto
Cdigo:
0 1 0 0 0 1 0 1
endereo direto
Operao:
(A) (A) v (endereo direto)
Exemplo: ORL A, F0
ORL A, @Ri
Faz a operao OU, bit a bit, entre o contedo do acumulador e o contedo do endereo
especificado no registro R0 ou R1, e coloca o resultado no acumulador.
Bytes: 1
Ciclos: 1
R0 46
Cdigo:
R1 47
Osmar
44
Operao:
(A) (A) v ((Ri))
Exemplo: ORL @, R0
ORL direto, A
Faz a funo lgica OU, entre o contedo do endereo indicado no segundo byte da instruo e
coloca o resultado no endereo especificado no segundo byte desta mesma instruo.
Bytes: 2
Ciclos: 1
Cdigo:
0 1 0 0 0 0 1 0
42 Endereo direto
endereo direto
Operao:
(endereo direto) (endereo direto) v (A)
Exemplo: ORL F0, A
Osmar
45
Operao:
(endereo direto) (endereo direto) v (dado imediato)
Exemplo: ORL 12, #34
XRL A, Rn
Realiza a funo OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do registro
R0, R1, R2, R3, R4, R5, R6 ou R7. O resultado colocado no acumulador.
R0 68
Se no especificar, este banco ser o zero.
R1 69
Bytes: 1
R2 6A
Ciclos: 1
R3 6B
R4 6C
R5 6D
Osmar
46
R6 6E
R7 6F
Cdigo:
0
Operao:
(A) (A) (Rn)
Exemplo: XRL A, R3
XRL A, direto
Faz a funo OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do endereo
especificado no segundo byte da instruo, e coloca o resultado no acumulador.
Bytes: 2
Ciclos: 1
65 endereo direto
Cdigo:
0 1 1 0 0 1 0 1
endereo direto
Operao:
(A) (A) (endereo direto)
Exemplo: XRL A F0
XRL A, @Ri
Faz a operao OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do endereo
especificado no registro R0 ou R1, e coloca o resultado no acumulador.
Bytes: 1
Ciclos: 1
R0 66
Cdigo:
R1 67
0 1 1 0 0 1 1 i
Operao:
(A) (A) ((Ri))
Exemplo: XRL @, R0
Osmar
47
1 0 0 1 0
dado imediato
Operao:
(A) (A) (dado imediato)
Exemplo: XRL A, #F0
XRL direto, A
Faz a operao OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do endereo
especificado no segundo byte da instruo, e coloca o resultado no endereo especificado no
segundo byte da instruo.
Bytes: 2
Ciclos: 1
62 endereo direto
Cdigo:
0 1 1 0 0 0 1 0
endereo direto
Operao:
(endereo direto) (endereo direto) (A)
Exemplo: XRL F0, A
Osmar
48
Representao:
7
RLC A
Os 8 bits do acumulador so rolados um bit esquerda, juntamente com o contedo do flag de
carry. O valor do bit 0 vai para o bit 1, o valor do bit 1 vai para o bit 2 e assim sucessivamente. O
valor do bit 7 vai para o flag de carry e o valor do flag de carry vai para o bit 0.
Bytes: 1
Ciclos: 1
Cdigo:
0 0 1 1 0 0 1 1
33
Operao:
(A +1) (An), n = 0-6
(A0) (C)
(C) (A7)
Osmar
49
Exemplo: RL A
Representao:
Cy
RR A
Os 8 bits do acumulador so rolados um bit direita. O valor do bit 7 vai para o bit 6, o valor do bit
6 vai para o bit 5 e assim sucessivamente. O valor do bit 0 vai para o bit 7.
Bytes: 1
Ciclos: 1
Cdigo:
0 0 0 0 0 0 1 1
03
Operao:
(An) (Na + 1), n = 0-6
(A7) (A0)
Exemplo: RR A
Representao:
7
RRC A
Os 8 bits do acumulador so rolados um bit direita, juntamente com o contedo do flag de carry.
O valor do bit 7 vai para o bit 6, o valor do bit 6 vai para o bit 5 e assim sucessivamente. O valor do
bit 0 vai para o flag de carry e o valor do flag de carry vai para o bit 7.
Bytes: 1
Ciclos: 1
Cdigo:
0 0 0 1 0 0 1 1
13
Operao:
(An) (An + 1), n = 0-6
(A7) (C)
(C) (A0)
Osmar
50
Exemplo: RRC A
Representao:
Cy
Instruo SWAP:
A instruo, SWAP troca o nibble mais significativo pelo nible menos significativo doacumulador,
utilizando a seguinte sintaxe:
SWAP A
SWAP A
Os 4 bits de ordem baixa do acumulador vo para o lugar dos 4 bits de ordem alta e os 4 de ordem
alta vo para o lugar dos de ordem baixa.
Bytes: 1
Ciclos: 1
Cdigo:
1 1 0 0 0 1 0 0
C4
Operao:
(A0 a 3) (A4 a 7)
Exemplo: SWAP A
Instrues aritmticas:
Fazem parte do grupo de operaes aritmticas as instrues ADD, ADDC, SUBB, INC, DEC,
MUL, DIV e DA.
Instrues ADD e ADDC:
As instrues ADD e ADDC realizam a adio entre o contedo do acumulador e o contedo de um
endereo da memria de dados interna, ou uma constante, mais o contedo do flag de carry,
respectivamente, utilizando a seguinte sintaxe:
Osmar
51
ADD A, <operando>
ADDC A, <operando>
O resultado da operao armazenado no acumulador sendo possvel utilizar para o <operando>
todos os modos de endereamento, imediato, direto, indireto e registro. O flag de carry afetado
conforme o resultado da operao.
ADD A, Rn
Adiciona o contedo do acumulador ao contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7. O
resultado colocado no acumulador.
R0 28
O flag de carry vai a 1, se houver vai 1.
R1 29
O flag de carry vai a 0, se no houver vai 1.
R2 2A
Se no especificar, este banco ser o zero.
R3 2B
Bytes: 1
R4 2C
Ciclos: 1
R5 2D
Cdigo:
R6 2E
0 0 1 0 1 r r r
R7 2F
Operao:
(A) (A) + (Rn)
Exemplo: ADD A, R1
ADD A, direto:
Soma o contedo do acumulador ao contedo do endereo indicado no segundo byte da instruo e
coloca o resultado no acumulador.
Bytes: 2
Ciclos: 1
25 endereo
Cdigo:
0 0 1 0 0 1 0 1
endereo direto
Operao:
(A) (A) + (endereo direto)
Exemplo: ADD A, F0
Osmar
52
ADD A, @Ri
Adiciona o contedo do acumulador ao contedo do endereo contido no registro R0 ou R1 e
coloca o resultado no acumulador.
Bytes: 1
Ciclos: 1
R0 26
Cdigo:
R1 27
0 0 1 0 0 1 1 i
Operao:
(A) (A) + ((Ri))
Exemplo: ADD A, @R0
ADD A, #dado
Soma o contedo do acumulador ao dado contido no 2 byte da instruo e coloca o resultado no
acumulador.
Bytes: 2
Ciclos: 1
Cdigo:
0 0 1 0 0 1 0 0
24 dado
dado direto
Operao:
(A) (A) + #dado
Exemplos: ADD A, #27
ADDC
Esta instruo soma simultaneamente um dado indicado, o carry e o contedo do acumulador.
Os flags de carry e carry auxiliar so afetados. Estes vo a 1, se houver vai 1 no fim ou no meio
destas operaes, respectivamente.
ADDC A, Rn
Adiciona o contedo do acumulador ao contedo do registro R0, R1,
R5, R6 ou R7 e ao contedo do flag de carry. O resultado colocado
Osmar
R0
R1
R2
R3
R4
R5
R6
R7
38
R2, R3, R4,
39
no acumulador.
3A
3B
3C
53
3D
3E
3F
ADDC A, direto
Soma o contedo do acumulador ao contedo do endereo indicado no segundo byte da instruo
ao contedo do flag de carry e coloca o resultado no acumulador.
Bytes: 2
Ciclos: 1
35 endereo
Cdigo:
0 0 1 1 0 1 0 1
endereo direto
Operao:
(A) (A) + (C) + (endereo direto)
Exemplo: ADDC A, F0
ADDC A, @Ri
Adiciona o contedo do acumulador ao contedo do endereo contido no registro R0 ou R1 ao
contedo do flag de carry e coloca o resultado no acumulador.
Bytes: 1
Ciclos: 1
R0 36
Cdigo:
R1 37
0 0 1 1 0 1 1 i
Operao:
(A) (A) + ((Ri)) + (C)
Exemplo: ADDC A, @R0
ADDC A, #dado
Soma o contedo do acumulador ao contedo do dado indicado no segundo byte da instruo, ao
contedo do flag de carry e coloca o resultado no acumulador.
Osmar
54
Bytes: 2
Ciclos: 1
Cdigo:
34
0
1 1 0 1
dado direto
dado
Operao:
(A) (A) + (C) + (dado direto)
Exemplo: ADDC A, #F0
DA A
Ajuste Decimal do Acumulador.
Faz o ajuste decimal de uma varivel de 8 bits no acumulador resultante da soma de dois nmeros
em BCD, gerando o resultado na forma de 2 nmeros de 4 bits.
Numa soma de nmeros BCD, se o valor dos 4 bits menos significativos do acumulador maior do
que 9 ou se o flag AC sofreu set, soma-se 6 ao acumulador.
Sempre aps a soma em BCD, coloca-se DA A. Se no precisar deste ajuste, o microprocessador
no o considera. Esta operao s se realiza no acumulador.
DA A s funciona depois de uma soma de dois nmeros em BCD, de dois dgitos cada.
Bytes: 1
Ciclos: 1
D4
1 1 0 1 0 1 0 0
Cdigo:
Operao:
Se [[(A0-3) > 9] + [(AC) = 1]]
Ento (A0-3) (A0-3) + 6
E
Se [[(A4-7) > 9] + [(C) = 1]]
Ento (A4-7) (A4-7) + 6
Exemplo: DA A
Instruo SUBB:
A instruo SUB realiza a subtrao entre o contedo do acumulador o contedo de uma posio da
memria de dados interna, ou uma constante, e o flag de carry, utilizando a seguinte sintaxe:
SUBB A, <operando>
O resultado da subtrao armazenado no acumulador sendo possvel utilizar para o <operando>
todos os modos de endereamento, imediato, direto, indireto e registro. O flag de carry afetado
Osmar
55
conforme o resultado da operao. Esta operao permite que subtraes com mais de 8 bits posam
ser implementadas graas ao aproveitamento do flag de carry da operao anterior.
Subtrao:
Subtrai o valor da varivel indicada juntamente com o carry do valor do acumulador, levando o
resultado ao acumulador. O flag AC vai a um se o vem um necessrio para o bit 3 e zerado se no
houver o vem um. O flag OV vai a um se houver vem um no bit 6, mas no no 7, ou no 7 mas no
no 6. Utiliza a seguinte sintxe:
SUBB A, <operando>
SUBB A, Rn
Subtrai do contedo do acumulador o valor contido no flag carry e no registro R0, R1, R2, R3, R4,
R5, R6 ou R7. O resultado colocado no acumulador.
R0 98
Se no especificar, este banco ser o zero.
R1 99
Bytes: 1
R2 9A
Ciclos: 1
R3 9B
Cdigo:
R4 9C
1 0 0 1 1 r r r
R5 9D
Operao:
R6 9E
(A) (A) - (C) - (Rn)
R7 9F
Exemplo: SUBB A, R1
SUBB A, direto
Subtrai do valor contido no acumulador o contedo do flag carry e o valor contido no endereo
indicado no segundo byte da instruo e coloca o resultado no acumulador.
Bytes: 2
Ciclos: 1
95 endereo
Cdigo:
1 0 0 1 0 1 0 1
endereo direto
Operao:
(A) (A) - (C) - (endereo direto)
Exemplo: SUBB A, F0
Osmar
56
SUBB A, @Ri
Subtrai do valor contido no acumulador o contedo do flag carry e o valor contido no endereo
indicado pelo registro R0 ou R1 e coloca o resultado no acumulador.
Bytes: 1
Ciclos: 1
R0 96
Cdigo:
R1 97
1 0 0 1 0 1 1 i
Operao:
(A) (A) - (C) - ((Ri))
Exemplo: SUBB A, @R0
SUBB A, #dado
Subtrai do contedo do acumulador o valor do flag cy e o valor do dado contido no 2 byte da
instruo e coloca o resultado no acumulador.
Bytes: 2
Ciclos: 1
Cdigo:
1 0 0 1 0 1 0 0
94 dado
dado direto
Operao:
(A) (A) - (C) - #dado
Exemplos: SUBB A, #27
INC A
Incrementa o contedo do acumulador, de 1.
Bytes: 1
Ciclos: 1
Osmar
57
Cdigo:
0
0
04
Operao:
(A) (A) + 1
Exemplo: INC A
INC Rn
O registro R0, R1, R2, R3, R4, R5, R6 ou R7 incrementado de 1.
Se no especificar, este banco ser o zero.
Bytes: 1
Ciclos: 1
Cdigo:
0 0 0 0 1 r r r
Operao:
(Rn) (Rn) + 1
Exemplo: INC R1
o registro R1 incrementado de 1.
R0
R1
R2
R3
R4
R5
R6
R7
08
09
0A
0B
0C
0D
0E
0F
INC direto
O contedo do endereo especificado no segundo byte da instruo, incrementado de 1.
Bytes: 2
Ciclos: 1
05 endereo
Cdigo:
0 0 0 0 0 1 0 1
endereo direto
Operao:
(endereo) (endereo) + 1
Exemplo: INC F0
INC, @Ri
O contedo do endereo contido no registro R0 ou R1 incrementado de 1.
Osmar
58
Bytes: 1
Ciclos: 1
Cdigo:
0
R0 06
R1 07
Operao:
((Ri)) ((Ri)) + 1
Exemplo: INC @, R0
INC DPTR
Incrementa o contedo do registro DPTR, de 1.
Bytes: 1
Ciclos: 2
Cdigo:
1 0 1 0
1
A3
Operao:
(DPTR) (RPTR) + 1
Exemplo: INC DPTR
DEC A
Decrementa o contedo do acumulador, de 1.
Bytes: 1
Ciclos: 1
Cdigo:
0 0 0
0
14
Operao:
(A) (A) - 1
Exemplo: DEC A
DEC Rn
O registro R0, R1, R2, R3, R4, R5, R6 ou R7 decrementado de 1.
Se no especificar, este banco ser o zero.
Bytes: 1
Osmar
R0
R1
R2
R3
R4
R5
R6
R7
18
19
1A
1B
1C
1D
1E
1F
59
Ciclos: 1
Cdigo:
0
Operao:
(Rn) (Rn) - 1
Exemplo: DEC R4
o registro R4 decrementado de 1.
DEC direto
O contedo do endereo especificado no segundo byte da instruo, decrementado de 1.
Bytes: 2
Ciclos: 1
15 endereo
Cdigo:
0 0 0 1 0 1 0 1
endereo direto
Operao:
(endereo) (endereo) - 1
Exemplo: DEC F0
DEC, @Ri
O contedo do endereo contido no registro R0 ou R1 decrementado de 1.
Bytes: 1
Ciclos: 1
R0 16
Cdigo:
R1 17
0 0 0 1 0 1 1 i
Operao:
((Ri)) ((Ri)) - 1
Exemplo: DEC @, R0
Osmar
60
MUL AB
Multiplica o valor de um nmero inteiro contido no acumulador por outro numero de valor inteiro
contido no registro B.
Se der um resultado de 16bits, a parte baixa deste nmero ir para o acumulador e a parte alta ir
para o registro B. Se o produto gerado for maior que 0FF, o flag OV ir a 1. O flag cy fica sempre
em 0.
Bytes: 1
Ciclos: 4
Cdigo:
1 0 1 0 0 1 0 0
A4
Operao:
(A) (A).(B)
(A) (0 a 7)
(B) (8 a 15)
Exemplo: MUL AB
DIV AB
Divide o valor de um nmero inteiro contido no acumulador por outro numero de valor inteiro
contido no registro B.
O acumulador recebe a parte inteira do cociente e o registro B o resto.
Bytes: 1
Ciclos: 4
Cdigo:
1 0 0 0 0 1 0 0
Osmar
61
84
Operao:
(A) (A)/(B)
(B) (resto)
Exemplo: DIV AB
Osmar
62
CLR C
Limpa o bit de carry, ou seja, o bit de carry zerado.
Bytes: 1
Ciclos: 1
Cdigo:
1 1 0 0 0
1
C3
Operao:
(C) (0)
Exemplo: CLR C
o bit de carry zerado.
SETB endereo bit
Coloca 1 no bit indicado pelo segundo byte da instruo. Esta instruo pode atuar em qualquer bit
enderevel.
Bytes: 2
Ciclos: 1
Cdigo:
1 1 0 1 0 0 1 0
D2 endereo do bit
endereo do bit
Operao:
(bit) (1)
Exemplo: CPL P1.2
SETB C
Coloca 1 no flag de carry.
Bytes: 1
Ciclos: 1
Cdigo:
1
1
D3
Operao:
(C) (1)
Exemplo: SETB C
Osmar
63
Bytes: 2
Ciclos: 1
Cdigo:
1
1 1 0 0 1
endereo do bit
B2
endereo do bit
Operao:
(bit) (bit)
Exemplo: CPL P1.2
CPL C
Complementa o contedo do flag de carry, ou seja, o contedo do flag de carry invertido.
Bytes: 1
Ciclos: 1
Cdigo:
1 0 1 1 0 0 1 1
B3
Operao:
(C) (C)
Exemplo: CPL C
ANL C, bit
Faz a operao lgica E, entre dois bits sendo que um deles o carry e coloca o resultado no flag de
carry.
Bytes: 2
Ciclos: 1
Cdigo:
1 0 0 0 0 0 1 0
82 endereo do bit
endereo do bit
Operao:
(C) (C) ^ (bit)
Exemplo: ANL C, P1.0
ANL C, A.7
ANL C, /bit
Faz a operao lgica E, entre bit de carry e o complemento de um outro bit e coloca o resultado no
flag de carry.
Osmar
64
Bytes: 2
Ciclos: 1
Cdigo:
1
1 1 0 0 0
endereo do bit
B0 endereo do bit
Operao:
(C) (C) ^ /(bit)
Exemplo: ANL C, /P1.0
ANL C, /A.7
ORL C, bit
Faz a operao lgica OU, entre dois bits sendo que um deles o carry e coloca o resultado no flag
de carry.
Bytes: 2
Ciclos: 1
Cdigo:
0 1 1 1 0 0 1 0
72 endereo do bit
endereo do bit
Operao:
(C) (C) v (bit)
Exemplo: ORL C, P1.0
ORL C, A.7
ORL C, /bit
Faz a operao lgica OU, entre bit de carry e o complemento de um outro bit e coloca o resultado
no flag de carry.
Bytes: 2
Ciclos: 1
Cdigo:
1 0 1 0 0 0 0 0
D0 endereo do bit
endereo do bit
Operao:
(C) (C) v /(bit)
Exemplo: ORL C, /P1.0
Osmar
65
ORL C, /A.7
MOV bit, C
O bit contido no endereo indicado pelo 2 byte da instruo copiado para o endereo indicado
pelo 1 operando.
Bytes: 2
Ciclos: 2
Cdigo:
1 0 0 1 0 0 1 1
92 endereo
endereo do bit
Operao:
(bit) (C)
Exemplos: MOV P1.0, C
MOV P1, A
Controle de programa:
Osmar
66
Fazem parte do grupo de controle de programa as instrues LJMP, AJMP, SJMP, JMP,
LCALL, ACALL, RET, RETI, JNZ, JZ, JNC, JC, JNB, JB, JBC, CJNE, DJNZ e NOP.
Este grupo de instrues atua em endereos da memria de programa, causando desvios na
seqncia natural de execuo do programa.
Instrues LJMP, AJMP, SJMP, JMP:
As instrues LJMP, AJMP, SJMP, JMP so instrues de desvio incondicional e possuem as
seguintes sintaxes:
LJMP <endereo>
AJMP <endereo>
SJMP <endereo>
JMP @A+DPTR
LJMP endereo
Salto, incondicional, longo.
Causa um salto incondicional para o endereo indicado formado pela composio dos bytes 2 e 3 da
instruo. No byte 2 coloca-se a parte alta do endereo, ou seja, bits de 8 a 15 e no byte 3 a parte
baixa, ou seja, bits de 0 a 7. O endereo de destino pode ser em qualquer lugar dentro dos 64KBytes
da memria de programa.
Bytes: 3
Ciclos: 2
Cdigo:
0 0 0 0 0 0 1 0
bits do endereo de 8 a 15
02 endereo endereo
bits do endereo de 0 a 7
Operao:
(PC) endereo de 0 a 15
Exemplo: LJMP, 3264
AJMP endereo11
Transfere a execuo do programa para o endereo indicado, formado pela combinao dos 5 bits
de ordem mais alta do PC, incrementado 2x com os bits 5 a 7 do OC do segundo byte da instruo.
Efetua um desvio incondicional na execuo do programa na mesma pgina 01 endereo
de
2Kb da memria de dados.
21 endereo
Bytes: 2
41 endereo
61 endereo
81 endereo
Osmar
67
A1 endereo
C1 endereo
E1 endereo
Ciclos: 2
Cdigo:
a10 a9 a8 0 0 0 0 1
a7 a6 a5 a4 a3 a2 a1 a0
Operao:
(PC) (PC) + 2
(PC 10-0) endereo
SJMP relativo
Salto, incondicional, curto.
Causa um salto incondicional para o endereo formado pela adio do contedo do PC com
contedo especificado no segundo byte da instruo. O endereo de destino pode estar em qualquer
lugar num alcance de -128 a +127 da instruo seguinte a SJMP. O endereo aquele cujo valor
igual ao contedo do PC incrementado de 2 o valor do salto. + se o salto for para frente e se o
salto for para traz. Para traz o valor do salto deve ser em SC2.
Bytes: 3
Ciclos: 2
Cdigo:
1 0 0 0 0 0 0 0
80 endereo relativo
endereo relativo
Operao:
(PC) (PC) + 2
(PC) (PC) + endereo relativo
Exemplo: SJMP 64
JMP @A+DPTR
Adiciona os 8 bits contidos no acumulador aos 16 bits contidos no registro DPTR e os carrega no
PC. A execuo deste programa continua neste novo endereo. Esta instruo se realiza
incondicionalmente.
Bytes: 1
Ciclos: 2
Cdigo:
0 1 1 1 0 0 1 1
Osmar
68
73
Operao:
(PC) (PC) + (DPTR)
Exemplo: JMP @ A + DPTR
JNZ relativo
Salta se o contedo do acumulador no for igual a 0.
Se qualquer um dos bits do acumulador for igual a 1 ocorre um salto para o endereo indicado pela
soma do contedo do PC e o contedo do segundo byte da instruo; caso contrrio o programa
continua sua execuo na prxima instruo. O endereo aquele cujo valor igual ao contedo do
PC incrementado de 2 o valor do salto. + se o salto for para frente e se o salto for para traz. Para
traz o valor do salto deve ser em SC2.
Bytes: 2
Ciclos: 2
Cdigo:
0 1 1 1 0 0 0 0
endereo relativo
Osmar
69
70
endereo relativo
Operao:
(PC) (PC) + 2
se (A) <> 0
ento
(PC) (PC) + endereo relativo
Exemplo: JNZ 32
Osmar
70
endereo relativo
D5 dado direto
endereo relativo
Operao:
(PC) (PC) + 3
(direto) (direto) - 1
se (direto) > 0 ou (direto) < 0
ento
(PC) (PC) + endereo relativo
DJNZ 60, E1
JZ relativo
Salta se o contedo do acumulador for igual a 0.
Se todos os bits do acumulador forem 0, ocorre um salto para o endereo indicado pela soma do
contedo do PC e o contedo do segundo byte da instruo; caso contrrio o programa continua sua
execuo na prxima instruo. O endereo aquele cujo valor igual ao contedo do PC
incrementado de 3 ovalor do salto. + se o salto for para frente e se o salto for para traz. Para traz
o valor do salto deve ser em SC2.
Bytes: 2
Ciclos: 2
Cdigo:
0 1 1 0 0 0 0 0
60 endereo relativo
endereo relativo
Operao:
(PC) (PC) + 2
se (A) = 0
ento
(PC) (PC) + endereo relativo
Exemplo: JZ F2:
JNC relativo
Salta se o carry no for 1.
Se o contedo do flag de carry for igual a zero ocorre um salto para o endereo indicado pela soma
do contedo do PC e o contedo do segundo byte da instruo; caso contrrio o programa continua
sua execuo na prxima instruo. O endereo aquele cujo valor igual ao contedo do PC
incrementado de 3 ovalor do salto. + se o salto for para frente e se o salto for para traz. Para traz
o valor do salto deve ser em SC2.
Bytes: 2
Osmar
71
Ciclos: 2
Cdigo:
0
0 1 0 0 0
endereo relativo
50
endereo relativo
Operao:
(PC) (PC) + 2
se (C) = 0
ento
(PC) (PC) + endereo relativo
JNC 32
JC relativo
Se o contedo do flag de carry for igual a um ocorre um salto para o endereo indicado pela soma
do contedo do PC e o contedo do segundo byte da instruo; caso contrrio o programa continua
sua execuo na prxima instruo. O endereo aquele cujo valor igual ao contedo do PC
incrementado de 3 ovalor do salto. + se o salto for para frente e se o salto for para traz. Para traz
o valor do salto deve ser em SC2.
Bytes: 2
Ciclos: 2
Cdigo:
0 1 0 0 0 0 0 0
40 endereo relativo
endereo relativo
Operao:
(PC) (PC) + 2
se (C) = 1
ento
(PC) (PC) + endereo relativo
JC 32
Osmar
72
endereo relativo
30
endereo do bit
endereo relativo
Operao:
(PC) (PC) + 3
se (bit) = 0
ento
(PC) (PC) + endereo relativo
JNB 32, E1
JB bit, relativo
Se o bit indicado pelo endereo do segundo byte for igual a um, ocorre um salto para o endereo
indicado no terceiro byte; caso contrrio o programa continua sua execuo na prxima instruo a
esta. A destinao calculada pela soma do endereo relativo ao PC, aps este ter sido
incrementado para executar a prxima instruo seguinte ao salto.
Bytes: 3
Ciclos: 2
Cdigo:
0 0 1 0 0 0 0 0
endereo do bit
20 endereo do bit endereo relativo
endereo relativo
Operao:
(PC) (PC) + 3
se (bit) = 1
ento
(PC) (PC) + endereo relativo
JB 32, E1
Osmar
73
Ciclos: 2
Cdigo:
0
0 1 0 0 0
endereo do bit
endereo relativo
0
10
endereo do bit
endereo relativo
Operao:
(PC) (PC) + 3
se (bit) = 1
ento
(bit) 0
(PC) (PC) + endereo relativo
JBC 32, E1
Operao:
(PC) (PC) + 3
se (A) <> (direto)
ento
(PC) (PC) valor do salto
se (A) < (direto)
ento
(C) 1
caso contrrio
(C) 0
Exemplo:
Osmar
CJNE A, 60, E1
74
Operao:
(PC) (PC) + 3
se (A) <> (direto)
ento
(PC) (PC) valor do salto
se (A) < (direto)
ento
(C) 1
caso contrrio
(C) 0
Exemplo:
Osmar
CJNE A, # 60, E1
75
Operao:
(PC) (PC) + 3
se (A) <> (direto)
ento
(PC) (PC) + valor do salto
se (A) < (direto)
ento
(C) 1
caso contrrio
Osmar
R0
R1
R2
R3
R4
R5
R6
R7
B8
B9
BA
BB
BC
BD
BE
BF
dado imediato
dado imediato
dado imediato
dado imediato
dado imediato
dado imediato
dado imediato
dado imediato
endereo relativo
endereo relativo
endereo relativo
endereo relativo
endereo relativo
endereo relativo
endereo relativo
endereo relativo
76
(C) 0
Exemplo:
Osmar
77
caso contrrio
(C) 0
Exemplo:
LCALL endereo16
Efetua a chamada de uma sub rotina contida no endereo indicado pelo segundo e terceiro byte da
instruo. A execuo do programa continua com a instruo endereada que pode estar em
qualquer lugar dentro dos 64KB da memria de programa. A instruo soma 3 ao contedo do PC
para gerar o endereo da prxima instruo e coloca o resultado na pilha, garantindo assim,o seu
retorno ao PC ao chegar no trmino da sub rotina.
Bytes: 3
Ciclos: 2
Cdigo:
0 0 0 1 0 0 1 0
bits do endereo de 8 a 15
12 endereo endereo
Bits do endereo de 0 a 7
Operao:
(PC) (PC) + 3
(SP) (SP) + 1
(SP) (PC7 - 0)
(SP) (SP) + 1
Osmar
78
(SP) (PC15 - 8)
(PC) endereo 0 a 15
Exemplo: LCALL 110F:
ACALL endereo11
Efetua uma chamada do programa para uma sub rotina no endereo indicado no segundo byte da
instruo. A sub rotina deve ficar num bloco de 2KB de distancia da instruo seguinte a ACALL.
O endereo de 16 bits; formado pela ligao dos 5 bits de ordem mais alta do PC incrementado 2x
com os bits 7 a 5 do opcode e o segundo byte da instruo.
Bytes: 2
Ciclos: 2
11 endereo
Cdigo:
31 endereo
a10 a9 a8 0 0 0 0 1
51 endereo
a7 a6 a5 a4 a3 A2 a1 a0
71 endereo
Operao:
91 endereo
(PC) (PC) + 2
B1 endereo
(SP) (SP) + 1
D1 endereo
(SP) (PC7 - 0)
F1 endereo
(SP) (SP) + 1
(SP) (PC15 - 8)
(PC10 - 0) endereo da pgina.
Exemplo: ACALL 2015:
Instruo de retorno:
Instrues RET e RETI
As instrues RET e RETI so instrues que realizam o retorno de chamadas de sub rotinas e
interrupes, respectivamente, possuindo a seguinte sintaxe:
RET
RETI
Estas instrues recuperam o endereo original contido no PC no momento da chamada da sub
rotina ou interrupo.
Osmar
79
RET
Retorno de uma sub rotina. Restaura o PCH e PCL sucessivamente da pilha, derementando o
apontador de pilha de 2. O programa continua sendo executado a partir do endereo resultante que,
geralmente, ser o da instruo imediatamente aps a localizao de uma instruo ACALL ou
LCALL.
Bytes: 1
Ciclos: 1
Cdigo:
0 0 1 0 0 0 1 0
22
Operao:
(PC 8-15) (SP)
(SP) (SP) - 1
(PC 0-7) (SP)
(SP) (SP) - 1
Exemplo: RET
RETI
Retorno de uma interrupo. O endereo de retorno recuperado da pilha e transferido para o PC. A
diferena em relao instruo que a instruo RETI habilita novamente interrupes de menor
ou maior prioridade, anteriormente desabilitadas na ocorrncia de uma interrupo
Bytes: 1
Ciclos: 1
Cdigo:
0 0 1 1 0 0 1 0
32
Operao:
(PC 8-15) (SP)
(SP) (SP) - 1
(PC 0-7) (SP)
(SP) (SP) - 1
Exemplo: RET
Osmar
80
Instruo NOP:
A instruo NOP aguarda o tempo de um ciclo de mquina da CPU sem efetuar nenhuma operao.
Possuindo a seguinte sintaxe:
NOP
NOP
Sem operao. A execuo do programa continua na prxima instruo, realizando nada. O PC
incrementado de 1 para realizar a prxima instruo. Um NOP s salta uma instruo. Se desejar
saltos maiores, deve-se utilizar tantos NOPs quantos forem as instrues que se deseja saltar, porem
se este salto for muito grande melhor utilizar uma sub rotina que o faa.
Bytes: 1
Ciclos: 1
Cdigo:
0 0 0 0 0 0 0 0
00
Operao:
(PC) (PC) + 1
Exemplo: NOP
Bits endereveis.
Operaes com bits ou operaes booleanas.
A RAM interna contem 128 bits endereveis separadamente alem de um espao reservado para
registros especiais que tambm ocupam 128 bits e podem ser operados utilizando um bit de cada
vez.
As instrues utilizadas para operar estes bits so as de: movimento, complemento, and, or, clear e
set.
Veja a representao a seguir mostra a estrutura interna da RAM do microporcessador 8031.
De 00 a 7F encontra-se os endereos dos bits endereveis.
De 80 a FF encontram-se a rea dos registros especiais, que so os registros das portas,
temporizadores/contadores, controle, da porta de comunicao serial, de interrupo, SP, PSW, A,
B, DPH e DPL.
H tambm um espao reservado para 4 bancos de registros de uso geral tendo-se 8 registros em
cada banco.
Osmar
81
FF
FF
REA DE DADOS
(Endereamento Indireto)
REGISTROS DE
FUNES ESPECIAIS
(Endereamento
Direto)
80
STACK
30
2F
2E
2D
78
70
68
Osmar
79
71
69
7A
72
6A
7B
73
6B
7C
74
6C
7D
75
6D
7E
76
6E
7F
77
6F
82
2C
2B
2A
29
28
27
26
25
24
23
22
21
20
60
58
50
48
40
38
30
28
20
18
10
08
00
61
59
51
49
41
39
31
29
21
19
11
09
01
62
5A
52
4A
42
3A
32
2A
22
1A
12
0A
02
63
5B
53
4B
43
3B
33
2B
23
1B
13
0B
03
64
5C
54
4C
44
3C
34
2C
24
1C
14
0C
04
65
5D
55
4D
45
3D
35
2D
25
1D
15
0D
05
66
5E
56
4E
46
3E
36
2E
26
1E
16
0E
06
67
5F
57
4F
47
3F
37
2F
27
1F
17
0F
07
1F
REA
BIT
ENDEREVEL
R7
BANCO 3 (11b)
18
R0
17
R7
BANCO 2 (10b)
10
R0
0F
R7
BANCO
BANCO 1 (01b)
08
R0
DE
07
06
05
04
03
02
01
00
R7
R6
R5
REGISTRADORES
BIT
R4
BANCO 0 (00b)
R3
R2
R1
R0
0
MODOS DE ENDEREAMENTO.
Endereamento Direto
A instruo especifica o endereo do operando que deve ser um nmero de 8 bits.
Somente dados dos primeiros 128 bytes da memria RAM interna e dos registros de funes
especiais so endereados neste modo.
Exemplo: MOV A, 25
Endereamento Indireto
Osmar
83
MOV A,#25
Endereamento Indexado
O dado acessado na posio de memria especificada pela soma de um endereo de 16 bits
contido no registro PC ou DPTR, com o valor do registro A.
MOVC A,@A+DPTR
MOVC A,@A+PC
Osmar
84