Escolar Documentos
Profissional Documentos
Cultura Documentos
Apendice B
Apendice B
Apndice B
O 8051 apresenta 111 tipos de instrues, sendo 49 de um byte, 45 de dois bytes e 17 de trs
bytes. Levando-se em contas as variaes de cada tipo, chega-se a 225 instrues, onde os opcodes esto
entre 00h e FFh, exceto A5.
A seguir, apresentado um resumo das instrues.
1. Instrues Aritmticas
So as instrues usuais de um operador de 8 bits: soma (ADD), soma com carry (ADC),
subtrao com borrow (SBB), incremento (INC), decremento (DEC) e ajuste decimal (DA A). Apresenta
tambm duas operaes que no so tpicas de microprocessadores de 8 bits: multiplicao ( MUL AB) e
diviso (DIV AB).
ADD
Adiciona ao acumulador uma varivel de um byte. O resultado da operao armazenado no acumulador.
O flag C ativado se h um overflow no bit 7, caso contrrio permanece em 0. O flag AC ativado se
houver um "vai-um" do bit 3.
ADDC
A instruo ADDC realiza a soma entre o contedo do acumulador, do valor da varivel de um byte e o
contedo do flag de carry.
SUBB
Esta instruo subtrai do acumulador, o valor da varivel de um byte e o contedo do Borrow do
acumulador. O resultado armazenado no acumulador. O flag de carry indica que houve um "empresta
um" durante a subtrao, ou seja um nmero maior foi subtrado de um menor. Nas demais situaes, o
flag de carry permanece em zero.
Flag OV: Este flag ativado se ocorre "vai-um" no bit 6 e no ocorre "vai-um" no bit 7, ou se ocorre
"vai-um" no bit 7 e no ocorre "vai-um" no bit 6. Na adio com os operadores representados com
sinal, a ativao deste flag indica portanto, que o resultado da adio de dois nmeros positivos
negativo. Tambm indica que um resultado negativo obtido quando um nmero negativo subtrado
de um nmero positivo, ou um resultado positivo obtido quando um nmero positivo subtrado de
um nmero negativo (overflow).
DA A
Instruo de ajuste decimal do acumulador. O valor de oito bits no acumulador convertido em dois
dgitos BCD de quatro bits cada. Se o contedo dos bits 0-3 for maior que 9, ou o flag AC estiver ativado,
ento o valor 6 adicionado ao contedo do acumulador para a obteno do correto cdigo BCD. O flag
de carry no afetado. Exemplo de utilizao da instruo:
MOV R0, #23
; R0 23
MOV A, #47
; A 47
ADD A, R0
; A 6A (onde 6A=23h+47h)
DA A
; A 70
Microprocessadores I Apndice B
MUL AB
Esta instruo multiplica o contedo do acumulador pelo contedo do registrador B, ambos como
inteiros, sem sinal. O byte menos significativo do resultado armazenado no acumulador e o byte mais
significativo armazenado no registrador B. Se o byte de maior ordem do resultado for zero, o flag OV
tambm zero, caso contrrio ativado, indicando que o resultado apresenta mais que oito bits. Portanto,
o flag OV pode ser utilizado pelo programador para determinar se o registrador B dever ser processado
aps a instruo.
DIV AB
Esta instruo faz com que o contedo do acumulador seja dividido pelo contedo de B, ambos
representados como nmeros inteiros sem sinal. A parte inteira do resultado armazenada no
acumulador. O resto armazenado no registrador B. Se o contedo do registrador B anterior operao
de diviso for zero, o flag OV ativado, caso contrrio zero.
INC
Soma 1 ao contedo do registrador ou da posio de memria endereada na instruo. Flags no so
alterados por esta instruo. Exemplo:
DEC
Subtrai 1 do contedo do registrador ou da posio de memria endereados na instruo. No afeta flags.
Exemplo:
DEC 23h; subtrai 1 do contedo da memria RAM de endereo 23h
2. Instrues Lgicas
Este grupo de instrues realiza as funes lgicas E (ANL), OU (ORL) e OU-EXCLUSIVO
(XRL) entre as duas variveis endereadas pelas instrues. O resultado armazenado na primeira
varivel, no se restringindo portanto, ao acumulador. As instrues para tornar zero (CLR),
complementar (CPL), bem como as instrues de deslocamento (RL, RLC, RR e RRC) tambm fazem
parte deste grupo.
A instruo SWAP A troca os quatro bits menos significativos do acumulador, pelos quatro bits
mais significativos. Equivale a quatro RR A ou a quatro RL A.
Nenhuma das instrues contidas neste grupo afeta os flags, exceto RRC e RLC que realizam o
deslocamento, utilizando-se do flag de carry.
As instrues lgicas so muito empregadas para realizar o clear, o set e o complemento de um
ou mais bits da RAM, das portas de sada ou dos registradores de controle, atravs da utilizao das
instrues lgicas ANL, ORL e XRL. Exemplos:
ORL P1, A
XRL A, #0FFH
Microprocessadores I Apndice B
MOV A, 20h
MOV @R1, #32h ;move para a posio endereada indiretamente pelo registrador R1, o valor
;32h.
MOVX
utilizada para referenciar a memria RAM externa. Exemplo:
MOVX B, @R2
Microprocessadores I Apndice B
LP1:
T0_ON:
;T0_ON;
CLR C
Torna zero o flag de carry.
5. Desvios Incondicionais
LJMP
Esta a instruo de desvio longo que usa endereos de 16 bits como parte da instruo, gerando
instrues de 3 bytes. Possibilita acessar qualquer localizao no espao de 64Kb de memria de
programa. O formato da instruo :
opcode
Addr15-addr8
addr7- addr0
Exemplo:
TEMP
EQU
ORG
1000H
TEMP:
LJMP LABEL1
LABEL1: LJMP
1000H
TEMP
Microprocessadores I Apndice B
ad10-ad8 / opcode
Addr7-addr0
Exemplo:
AJMP NEXT;
NEXT:
MOV A, #01H;
MOV A, #0FEH;
SJMP
Desvio curto relativo. Usa um offset de oito bits, podendo ser negativo ou positivo, ou seja o endereo de
desvio pode ser de at 128 bytes a menos ou 127 bytes a mais, respectivamente, em relao posio
atual da memria. O formato da instruo :
opcode
Offset relativo
Exemplo:
NEXT:
SJMP 00h;
SJMP 0FEH;
JMP @A+DPTR
O contedo do PC armazenado com o valor da soma dos contedos dos registradores DPTR e
acumulador, prosseguindo portanto a execuo do programa a partir deste ponto.
6. Desvios Condicionais
JZ/JNZ
Estas instrues desviam para o endereo especificado, se o contedo do acumulador for igual a ou
diferente de zero, respectivamente
Exemplo:
MOV A, #00h
JNZ LB2
LB1:
JZ LB3
LB2:
MOV A, #0FFh
LB3:
SJMP LB3
JC /JNC
Desvia se o flag de carry est ativado ou desativado respectivamente.
Microprocessadores I Apndice B
7. Sub-rotina
ACALL
Call absoluto. utilizada para acessar sub-rotinas em endereos dentro de um espao de at 2K com
relao ao endereo armazenado em PC.
LCALL
Chamada de sub-rotina com formato longo. Permite acessar os 64K da memria de programa.
RET
Retorno de sub-rotina. O endereo de retorno recuperado a partir da pilha e ento armazenado no PC. O
valor do registrador SP decrementado de 2.
RETI
Quando ocorre uma interrupo, o processador executa uma instruo LCALL para a rotina de
atendimento quela interrupo. Utilizando-se RETI, em vez de RET possvel habilitar interrupes de
mesma prioridade, ou menos prioritrias j pendentes a serem executadas. Esta instruo no recupera o
contedo do acumulador e do registrador PSW, assim como as interrupes no salvam os mesmos. Estas
tarefas devem ser previstas no software.
Microprocessadores I Apndice B
Antes de passarmos a apresentar o conjunto completo das instrues do 8051, convm apresentarmos uma
viso geral de sua estrutura interna. A figura abaixo ilustra o diagrama de blocos da arquitetura interna do
microcontrolador 8051.
A figura mostra os principais componentes internos (como por exemplo, as portas de E/S, o mdulo de
temporizao e controle, a memria interna) e os seus registradores (como por exemplo, ACC, PC,
DPTR, PSW).
Microprocessadores I Apndice B
Flags
Instruction
Flags
OV
AC
ADD
CLR C
ADDC
CPL C
SUBB
ANL C,bit
MUL
ANL C,/bit
DIV
ORL C,bit
DA
ORL C,/bit
RRC
MOV C,bit
RLC
CJNE
SETB C
OV
AC
Note that operations on SFR byte address 208 or bit addresses 209-215 (i.e., the PSW or bits in the PSW)
will also affect flag settings.
direct
- 8-bit internal data locations address. This could be an Internal Data RAM location (0-127) or
a SFR [i.e., I/O port, control register, status register, etc. (128-255)].
@Ri
- 8-bit internal data RAM location (0-255) addressed indirectly through register R1 or R0.
#data
- 16-bit destination address. Used by LCALL & LJMP. A branch can be anywhere within 64Kbyte Program Memory address space.
addr 11
- 11-bit destination address. Used by ACALL & AJMP. The branch will be within the same
2K-byte page of program memory as the first byte of the following instruction.
rel
- Signed (twos complement) 8-bit offset byte. Used by SJMP and all conditional jumps. Range
is -128 to +127 bytes relative to the first byte of the following instruction.
bit
Microprocessadores I Apndice B
Arithmetic Operations:
Mnemonic
Description
Byte
Oscillator Period
ADD A, Rn
12
ADD A, direct
12
ADD A, @Ri
12
ADD A, #data
12
ADDC A, Rn
12
ADDC A, direct
12
ADDC A, @Ri
12
ADDC A, #data
12
SUBB A, Rn
12
SUBB A, direct
12
SUBB A, @Ri
12
SUBB A, #data
12
INC A
Increment accumulator
12
INC Rn
Increment register
12
INC direct
12
INC @Ri
12
DEC A
Decrement accumulator
12
DEC Rn
Decrement register
12
DEC direct
12
DEC @Ri
12
INC DPTR
24
MUL A,B
Multiply A & B
48
DIV A,B
Divide A by B
48
DA A
12
Microprocessadores I Apndice B
Logical Operations
Mnemonic
Description
Byte
Oscillator Period
ANL A, Rn
12
ANL A, direct
12
ANL A, @Ri
12
ANL A, #data
12
ANL direct, A
12
24
ORL A, Rn
OR Register to Accumulator
12
ORL A, direct
12
ORL A, @Ri
12
ORL A, #data
12
ORL direct, A
12
24
XRL A, Rn
12
XRL A, direct
12
XRL A, @Ri
12
XRL A, #data
12
XRL direct, A
12
24
CLR A
Clear Accumulator
12
CPL A
Complement Accumulator
12
RL A
12
RLC A
12
RR A
12
RRC A
12
SWAP A
12
Microprocessadores I Apndice B
10
Description
Byte
Oscillator Period
MOV A, Rn
12
MOV A, direct
12
MOV A, @Ri
12
MOV A, #data
12
MOV Rn, A
12
24
12
MOV direct, A
12
MOV direct, Rn
24
24
24
24
MOV @Ri, A
12
24
12
24
MOVC A, @A+DPTR
24
MOVC A, @A+PC
24
MOVX A, @Ri
24
MOVX A, @DPTR
24
MOVX @Ri, A
24
MOVX @DPTR, A
24
PUSH direct
24
POP direct
24
XCH A, Rn
12
XCH A, direct
12
XCH A, @Ri
12
XCHD A, @Ri
12
Microprocessadores I Apndice B
11
Description
Byte
Oscillator Period
CLR C
Clear Carry
12
CLR bit
12
SETB C
Set Carry
12
SETB bit
12
CPL C
Complement Carry
12
CPL bit
12
ANL C, bit
24
ANL C,/bit
24
ORL C, bit
24
ORL C,/bit
24
MOV C, bit
12
MOV bit, C
24
JC rel
24
JNC rel
24
JB bit, rel
24
24
24
Description
Byte
Oscillator Period
ACALL addr11
24
LCALL addr16
24
RET
24
RETI
24
AJMP addr11
Absolute Jump
24
LJMP addr16
Long Jump
24
SJMP rel
24
JMP @A+DPTR
24
JZ rel
24
JNZ rel
24
CJNE A,direct,rel
24
CJNE A,#data,rel
24
CJNE Rn,#data,rel
24
CJNE @Ri,#data,rel
24
24
24
NOP
No Operation
12
Microprocessadores I Apndice B
12