resumo intruções 8051
-
Upload
sergio-r-c-cruz -
Category
Documents
-
view
145 -
download
10
Transcript of resumo intruções 8051
RESUMO DAS PRINCIPAIS REGISTROS DO 8051
COM A LISTA DE INSTRUÇÕES
Disciplina de Microcontroladores
Prof. Valdir Noll
Adaptado da Apostila“Microcontroladores - O 80C51BH da Família MCS51”
por, John Oersted Wisbeck, UFRGS, 2001.
2
REGISTRADORES ESPECIAIS DO 80C51BH
20h
2Fh30h
7Fh
18h1Fh
17h10h
0Fh08h
00h07h Valor do Reset
Stack Pointer
4 Banks of
8 registers
R0 - R7
11
10
01
00
Bank
Select
Bits in
PSW
Bit-AddressableSpace
Acessivel por endereço direto e indiretp
80h P0
0 1 2 3 4 5 6 7
SP DPL DPH PCON
TCON TMOD TL0 TL1 TH0 TH1
SCON
SBUF
P2
IE
P3
IP
B
PSW
ACC
88h
90h
98h
A0h
A8h
B0h
B8h
C0h
C8h
D0h
D8h
E0h
E8h
F0h
F8h
P1
Special Function Registers SFR acessivelpor endereço direto
Low 128 bytes da RAM internaHigh 128 bytes of Internal RAM (SFR)
CY AC F0 RS1 RS0 0V P
Paridade do Acumulador
Setado por hardware para1 se elecontainsTem um número ímpar de 1s,
Senão é resetado a zero
Flag definido pelo ususário
Overflow flag, setado por
Operações aritméticas
Seleção de banco de registradores bit 2
X
Seleção de banco de registradores bit1
Flag de uso geral
Flag de Carry Auxiliar recebe
O transporte de saída 1
De operações de adição
Flag Carry recebe o transporte
Do bit 1 da ALU
PSW - PROGRAM STATUS WORD - Registros no MCS-51- Endereçável por Bit07 123456
D0H
3
GATE C/T M1 M0GATE C/T M1 M0
TIMER 1 TIMER 0
LSBMSB
GATE - Quando TRx é setado e Gate=1, Timer/Counter funcionará somente o pino INTx é alto.
Quando Gate=0, Timer/Counter funcionará somente enquanto TRx=1.
C/T – Seleciona Timer ou Counter. Se 0 então conta o clock interno .
Se 1 então a entrada de sinal será Tx (pinos P3.4 ou P3.5).
M1 - Mode Selector Bit.
M0 - Mode Selector Bit.
M1 M0
0 0 13 bit Timer/Counter.
0 1 16 bit Timer/Counter.
1 0 8 bit Auto Reload Timer/Counter.
1 1 Timer 0 é um Timer/Counter de 8 bits controlado pelo Timer 0.
Timer/Counter 1 não funciona
Registro de Controle do TMOD Timer/Counter Mode – Sem acesso a bits
89H
TF1 TR1 TF0 TR0
LSBMSB
IE1 IT1 IE0 IT0
TFx - flag Timer x overflow. 1 por hardware quando ocorre um overflow.
0 por hardware quando o processador está executando uma rotina de interrupção.
TRx – Bit de ativação do Timer. 1/0 por softwatr para ON/OFF o Timer/Counter x
IEx – Interrupção Externa e flag de borda. 1 po hardware quando Interrupção Externa é detectada.
0 por hardware quando a interrupção é processada.
ITx – Bi tde contorle da Interrupção x tipo de interrupção. 1 / 0 por software para definir se ainterrupção será atendida por borba/nível
Registro TCON - Timer / Counter. Endereçável por Bit
88H
EA ES ET1 EX1 EX0
Habilita a interrupção externa 0
Habilita a int Timer 0
ET0
Habilita a interface Serial
Desabilita todas as interrupções
Registro IE - Interrupt Enable – Acesso por Bit
07 123456
Habilita a interrupção externa 1
Habilita a interrupção T1
A8H
4
PS PT1 PX1 PX0
Prioridade INT0
Prioridade Timer0
PT0
Serial interface interrupt priority bit
Registrador IP - Interrupt Priority – Endereçável por Bit
07 123456
Prioridade INT1
Prioridade Timer1
B8H
SM0 SM1 SM2 REN TB8 RB8 RI
Flag de interrupção na recepção
Deve ser limpo por software
Set by hardware when reception finish
Exceto se SM2 =1
Flag de interrupção na transimissão
Mode 2 e 3 é o 9 bit.
No Modo 1 é o stop bit se SM2=0
No mode 2 e 3 é o 9 bit
TI
Habilita recepção do sinal
Habilita comunicação entre multiprocessador
00 mode 0
Mode Select
SCON - Serial Port Control Register - Bit Addressable
07 123456
Deve ser limpo por software
No modo 0, RB8 não é usado
Que será transmitido
Nos modos 2 e 3
No modo 1 se SM2=1 o flag RI não
Será 1 se um stop bit válido for recebido
No modo 0, SM2 = 0
01 mode 1
10 mode 2
11 mode 3
98H
GF1 GF2 IDL
bit de modo Idle. 1 para ativar o modo Idle
bit de modo Power Down. 1 para ativar o modo.
PD
Baud Rate duplo
PCON - Power Control Register
07 123456
Flag de Uso geral
SMOD
Flag de Uso geral
87H
date
ADDR
OE
INSTR
EPROM
80C51BH
P1
P3 P2
P0
PSEN
Latch
ALE LE
EA
74HC373
5
Fonte Endereço da rotina de atendimento
IE0 0003h
TF0 000Bh
IE1 0013h
TF1 001Bh
RI + TI 0023h
TABELA 0.1 Endereços do início das rotinas de atendimento de interrupção.
6
CONJUNTO DE INSTRUÇÕES DA FAMÍLIA MCS51
0.1. Revisão da Organização de Memória
O espaço de endereçamento de memória do 80C51BH é organizado em memóriade programa e de dados como apresentado na Figura Erro! Indicador nãodefinido..Erro! Indicador não definido..
A memória de programa pode ser interna ou externa (EPROM externa) ou aindauma composição das duas. No 80C51BH existe um espaço para 4 Kbytes de memóriade programa interna em ROM ou em EPROM na versão 87C51BH, o restante damemória de programa precisa ser necessariamente externa. Caso se deseje ascessar osprimeiros 4Kbytes de memória de programa em uma memória externa é necessárioligar-se o pino EA/ em GND.
A memória de dados está organizada em memória de dados interna (128 bytes +registradores especiais) e memória de dados externa. Esses dois espaços deendereçamento de memória acessam memórias fisicamente independentes, portanto osprimeiros 128 bytes da memória de dados externa não coincidem com os 128 bytes dememória de dados interna. Instruções com menemônicos diferentes são utilizadas paraascessar cada tipo de memória.
Os 128 bytes de memória de dados (RAM) interna estão organizados em 3 tiposdiferentes conforme mostra a Figura Erro! Indicador não definido..Erro! Indicadornão definido., sendo que algumas instruções foram projetadas para tratar maisfacilmente cada uma dessas regiões. Os 3 blocos são: um conjunto de 4 grupos de 8registradores utilizados como operandos de várias instruções, um conjunto de 32registradores cujos bits podem ser manipulados separadamente sem a necessidade demascaramento e o terceiro conjunto pode ser visto como memória RAM convencional.
0.2. Registradores de Funções Especiais
Os registradores especiais fazem parte da memória de dados interna contudoseus conteúdos tem significado específico, ou seja, tais registradores são oslatches/buffers das portas de entrada e saída, os registradores de controle dos periféricoscomo interface serial e contadores, ou ainda acumulador, registrador da máscara deinterrupção, palavra de status, etc. Dentre esses registradores, aqueles cujos endereçosterminam em 0h ou 8h também podem ter seus bits acessados independentemente,facilitando as operações que os envolvem. Os endereços dos registradores especiaispodem ser vistos na Figura Erro! Indicador não definido..Erro! Indicador nãodefinido. e o significado de seu conteúdo é explicado nas seções que compõe o Capítulo1. No Anexo A são apresentados todos os registradores especiais e seus endereços parafacilitar a consulta rápida da função de algum bit em especial.
0.3. Modos de Endereçamento
Todos os menbros da família MCS 51 executam o mesmo conjunto deinstruções, as quais são otimizadas para aplicações de controle em 8 bits. Esse conjuntode instruções provê uma variedade de modos de endereçamento rápido para acessar a
7
memória RAM interna e para facilitar as operações com bytes em pequenas estruturasde dados. Adicionalmente existem instruções que permitem tratar bits como um tiposeparado de dado, isso implica na manipulação direta de bits em uma parte da RAMinterna.
Os modos de endereçamento no conjunto de intruções da família MCS51 são:Endereçamento Direto: no endereçamento direto o operando é o conteúdo de
uma posição de memória cujo endereço é de 8 bits e faz parte do corpo da instrução.Somente dados na memória RAM interna e SFR podem ser diretamente endereçados.
Endereçamento Indireto: no endereçamento indireto a instrução especifica umregistrador cujo conteúdo é o endereço do operando. Tanto a memória interna ouexterna podem ser endereçadas indiretamente. Se o endereço do operando for de 8 bitsos registradores que podem ser especificados no corpo da instrução são R0, R1 ou oStack Pointer. Caso o endereço seja de 16 bits o registrador a ser utilizado é DPTR.
Instruções para Registradores R0 a R7: o banco de registradores R0 a R7podem ser acessados por certas instruções as quais especificam o registrador com baseem 3 bits que fazem parte do opcode (código da instrução). Essas instruções são maiseficientes visto que eliminam um byte de endereço. Quando a instrução é executada umdos 8 registradores do banco ativo é endereçado. A seleção do banco pode ser feitaatravés dos bits de seleção de banco em PSW.
Instruções para Registradores Específicos: Algumas instruções trabalhamespecificamente com certos registradores. Por exemplo algumas instruções operamsempre com o Acumulador A, ou com o DPTR, etc, portanto nenhum byte é necessáriopara endereçar o operando.
Endereçamento Imediato: O operando faz parte do corpo da instrução. O valordo operando segue o opcode na memória de programa por exemplo.
Endereçamento Indexado: apenas a memória de programa pode ser acessadacom endereçamento indexado e portanto pode somente ser lida. Nesse tipo de acesso amemória o endereço do operando é dado pela soma do conteúdo ou de DPTR ou PCcom o conteúdo do Acumulador. Dessa forma DPTR ou PC apontam para a base deuma tabela de dados enquanto o Acumulador (8 bits) aponta para o elemento dentro databela.
0.4. Simbologia Utilizada nas Instruções
No intuito de facilitar a apresentação do conjunto de instruções a simbologiapara o endereçamento é apresentada a seguir:
Rn registrador R0 a R7 do banco correntemente selecionado.@Ri endereçamento indireto a uma posição de memória RAM interna Ri=R0
ou R1#data endereçamento imediato, onde data é uma constante de 8 bits incluida no
corpo da instrução.#data16 endereçamento imediato, onde data é uma constante de 16 bits incluida
no corpo da instrução.direct endereçamento direto, ou seja, direct é o endereço de uma posição de
memória RAM interna.bit endereçamento direto a bit na memória RAM interna ou SFR.
Exemplo: P3.2 ou 21h.3.addr16 endereço com tamanho de 16 bits. Usado nas instruções LJMP e LCALL.
8
addr11 endereço com tamanho de 11 bits. A faixa de endereçamento é 1024bytes para trás ou 1023 bytes para frente da posição atual do PC.
rel deslocamento de 128 bytes para trás ou 127 bytes para frente da posiçãoatual de PC. Usado por SJMP e todos os demais JMPs condicionais.
0.5. Instruções para Movimentação de Dados
Mnemonico Descrição Operação /Exemplo
Flags
MOV A, Rn Acumulador recebe o conteúdo doregistrador
(A)← (Rn)
MOV A,R3
MOV A, direct Acumulador recebe um byte damemória RAM interna cujoendereço é direct
(A)← (direct)MOV A,40h
MOV A, @Ri Acumulador recebe um dado damemória RAM interna endereçadopelo conteúdo de R0 ou R1
(A)←((Ri))
MOV A,@R1
MOV A,#data Acumulador recebe data (A)←dataMOV A,#04h
MOV Rn,A Registrador recebe o conteúdo deA
(Rn)← (A)
MOV R5,A
MOV Rn, direct Registrador recebe um byte damemória RAM interna cujoendereço é direct
(Rn)←(direct)MOV R5,40h
MOV Rn,#data Registrador recebe data (Rn)←data
MOV R6,#40h
MOV direct,A O conteúdo de A é copiado numaposição da memória RAM internacujo endereço é direct
(direct)←(A)MOV 45h, A
MOV direct,Rn O conteúdo de Rn é copiado numaposição de memória RAM internacujo endereço é direct
(direct)←(Rn)
MOV 55h, R4
MOV direct1,direct2 O conteúdo da posição dememória RAM interna comendereço direct2 é copiado paraoutra posição da memória internacujo endereço é direct1
(direct1)←(direct2)MOV 45h,40h
MOV direct,@Ri Uma posição de memória RAMinterna, cujo endereço é direct,recebe um dado endereçado peloconteúdo de R0 ou R1
(direct)←((Ri))MOV 45h,@R1
9
MOV direct,#data Uma posição de memória RAMinterna, cujo endereço é direct,recebe data.
(direct)←#30h
MOV 45h,40h
MOV @Ri,A O conteúdo do acumulador écopiado para uma posição dememória RAM interna cujoendereço é o conteúdo de R0 ouR1
((Ri))←AMOV @R0, A
MOV @Ri,#data data é copiado para uma posiçãode memória RAM interna cujoendereço é o conteúdo de R0 ouR1
((Ri))←dataMOV @R1,#40h
MOV DPTR,#data16 Carrega o registrador DPTR com ovalor data16
(DPTR)←data16
MOV DPTR,#4010h
MOVC A,@A+DPTR O conteúdo do acumulador ésomado ao de DPTR formando oendereço de um dado na memóriade programa sendo que tal dado écarregado no acumulador
(A)←((A)+(DPTR))MOV A, @A+DPTR
MOVC A,@A+PC O conteúdo do acumulador ésomado ao do PC formando oendereço de um dado na memóriade programa sendo que tal dado écarregado no acumulador
(A)←((A)+(PC))MOV A, @A+PC
MOVX A,@DPTR O conteúdo de DPTR é o endereçode um dado da RAM externa que écarregado no acumulador
(A)←((DPTR))MOV A, @DPTR
MOVX @Ri,A O conteúdo do acumulador écopiado na posição de memória daRAM externa cujo endereço édado pelo conteúdo de Ri
((Ri))←(A)
MOV @R1,A
MOVX @DPTR,A O conteúdo do acumulador écopiado na posição de memóriaRAM externa cujo endereço édado pelo conteúdo de DPTR
((DPTR))←(A)MOV @DPTR,A
PUSH direct Coloca na pilha o conteúdo daposição de memória RAM internacujo endereço é direct.
(SP)←(SP)+1((SP))←(direct) PUSH 40h
POP direct retira da pilha um dado e armazenana posição de memória RAMinterna cujo endereço é direct
(direct)←((SP))
(SP)←(SP)-1
POP 40h
XCH A,Rn Troca o conteúdo do acumuladorcom o conteúdo do registrador
(A) (Rn)XCH A, R7
XCH A,direct Troca o conteúdo do acumuladorcom o conteúdo de uma posiçãode memória RAM interna cujoendereço é direct
(A) (direct)XCH A, 50h
10
XCH A,@Ri Troca o conteúdo do acumuladorcom o conteúdo de uma posiçãode memória cujo endereço é oconteúdo de Ri.
(A) ((Ri))
XCH A, @R1
XCHD A, @Ri Troca os 4 bits menossignificativos do conteúdo de Acom os 4 bits menos sginificativosdo conteúdo da posição dememória cujo endereço é oconteúdo de Ri.Os outros bits ficam inalterados.
(A)0-3 ((Ri))0-3XCH A, R7
11
0.6. Instruções para Operações Aritméticas
Mnemonico Descrição Operação /Exemplo
Flags
ADD A, Rn Ao conteúdo do acumulador ésomado o conteúdo do registrador.
(A)←(A)+(Rn)
ADD A, R7
C, OV,AC
ADD A, direct Ao conteúdo do acumulador ésomado o conteúdo de umaposição de memória RAM internacujo endereço é direct
(A)←(A)+(direct)
ADD A, 40h
C, OV,AC
ADD A,@Ri Ao conteúdo de A é somado oconteúdo de uma posição dememória RAM interna cujoendereço é o conteúdo de Ri
(A)←(A)+((Ri))ADD A, @R1
C, OV,AC
ADD A,#data Ao conteúdo de A é somado ovalor data
(A)←(A)+data
ADD A, #30h
C, OV,AC
ADDC A,Rn Ao conteúdo do acumulador sãosomados o conteúdo do registradore o conteúdo do flag carry C.
(A)←(A)+(Rn)+(C)
ADDC A, R7
C, OV,AC
ADDC A,direct Ao conteúdo do acumulador sãosomados o conteúdo de umaposição de memória RAM internacujo endereço é direct, e oconteúdo do flag carry C
(A)←(A)+(direct)+(C)ADDC A, 40h
C, OV,AC
ADDC A,@Ri Ao conteúdo de A são somados oconteúdo de uma posição dememória RAM interna cujoendereço é o conteúdo de Ri, e oconteúdo do flag carry C
(A)←(A)+((Ri))+(C)ADDC A, @R1
C, OV,AC
ADDCA,#data Ao conteúdo de A são somados ovalor data e o conteúdo do flagcarry
(A)←(A)+data
ADD A, #30h
C, OV,AC
SUBB A, Rn Do conteúdo do acumulador sãosubtraídos o conteúdo doregistrador e do flag carry(borrow) C.
(A)←(A)-(Rn)-(C)
SUBB A, R7
C, OV,AC
SUBB A, direct Do conteúdo do acumulador sãosubtraídos o conteúdo de umaposição de memória RAM internacujo endereço é direct e o flagcarry
(A)←(A)-(direct)-(C)SUBB A, 40h
C, OV,AC
SUBB A,@Ri Do conteúdo de A são subtraídos oconteúdo de uma posição dememória RAM interna cujoendereço é o conteúdo de Ri e ocarry flag.
(A)←(A)-((Ri))-(C)SUBB A, @R1
C, OV,AC
12
SUBB A,#data Do conteúdo de A são subtraídos ovalor data e o carry flag.
(A)←(A)-data-(C)
SUBB A, #30h
C, OV,AC
INC A Ao conteúdo do acumulador ésomado 1.
(A)←(A)+1INC A
INC Rn Ao conteúdo do registrador ésomado 1.
(Rn)←(Rn)+1
INC R3
INC direct Ao conteúdo da posição dememória RAM interna cujoendereço é direct é somado 1.
(direct)←(direct)+1INC 40h
INC @Ri Ao conteúdo da posição dememória RAM interna,cujoendereço é o conteúdo de Ri, ésomado 1.
((Ri))←((Ri))+1
INC @R1
DEC A Do conteúdo do acumulador ésubtraído 1.
(A)←(A)-1DEC A
DEC Rn Do conteúdo do registrador ésubtraído 1.
(Rn)←(Rn)-1
DEC R3
DEC direct Do conteúdo da posição dememória RAM interna cujoendereço é direct é subtraído 1.
(direct)←(direct)-1DEC 40h
DEC @Ri Do conteúdo da posição dememória RAM interna,cujoendereço é o conteúdo de Ri, ésubtraído 1.
((Ri))←((Ri))+1
DEC @R1
INC DPTR Ao conteúdo do registrador DPTRé somado 1.
(DPTR)←(DPTR)+1INC DPTR
MUL A, B O conteúdo do acumulador e doregistrador B são multiplicadossem sinal. Da palavra de 16 bitsresultante os 8 bits LSB sãoarmazenados em A e os 8 bitsMSB são armazenados em B.
(A)←[(A)*(B)]0-7
(B)←[(A)*(B)]8-15
MUL A, B
C=0,OV
DIV A, B O conteúdo do acumulador édividido (sem sinal) pelo conteúdodo registrador B. Em A éarmazenado a parte inteira doquociente da divisão e em B oresto.
(A)←int[(A)/(B)](B)←resto[(A)/(B)]DIV A, B
C=0,OV
DA A O conteúdo de A é convertido paraum número decimal de doisdígitos de quatro bits cada que sãoarmazenados em A
If [(A)3-0>9 or (AC)=1]then (A)3-0←(A)3-0+6If [(A)7-4>9 or (C)=1]then (A)7-4←(A)7-4+6
C
13
0.7. Instruções para Operações Lógicas
Mnemonico Descrição Operação /
Exemplo
Flags
ANL A, Rn Lógica E entre o conteúdo doacumulador e o conteúdo doregistrador.
(A)←(A)^(Rn)
ANL A, R7
ANL A, direct Lógica E entre o conteúdo doacumulador e o conteúdo de umaposição de memória RAM internacujo endereço é direct
(A)←(A)^(direct)ANL A, 40h
ANL A,@Ri Lógica E entre o conteúdo doacumulador e uma posição dememória RAM interna cujoendereço é o conteúdo de Ri
(A)←(A)^((Ri))
ANL A, @R1
ANL direct,A Lógica E entre o conteúdo de umaposição de memória RAM internacujo endereço é direct e oconteúdo do acumulador
(direct)←(direct)^(A)
ANL 60h, A
ANL direct,#data Lógica E entre o conteúdo de umaposição de memória RAM internacujo endereço é direct e data
(direct)←(direct)^dataANL 23h, #20h
OR A, Rn Lógica OU entre o conteúdo doacumulador e o conteúdo doregistrador.
(A)←(A)∨(Rn)OR A, R7
OR A, direct Lógica OU entre o conteúdo doacumulador e o conteúdo de umaposição de memória RAM internacujo endereço é direct
(A)←(A)∨(direct)
OR A, 40h
OR A,@Ri Lógica OU entre o conteúdo doacumulador e uma posição dememória RAM interna cujoendereço é o conteúdo de Ri
(A)←(A)∨((Ri))OR A, @R1
OR direct,A Lógica OU entre o conteúdo deuma posição de memória RAMinterna cujo endereço é direct e oconteúdo do acumulador
(direct)←(direct)∨(A)OR 30h, A
OR direct,#data Lógica OU Exclusivo entre oconteúdo de uma posição dememória RAM interna cujoendereço é direct, e data
(direct)←(direct)∨dataOR 32h, #20h
XRL A, Rn Lógica OU Exclusivo entre oconteúdo do acumulador e oconteúdo do registrador.
(A)←(A)⊕(Rn)
XRL A, R7
14
XRL A, direct Lógica OU Exclusivo entre oconteúdo do acumulador e oconteúdo de uma posição dememória RAM interna cujoendereço é direct
(A)←(A)⊕(direct)XRL A, 40h
XRL A,@Ri Lógica OU Exclusivo entre oconteúdo do acumulador e umaposição de memória RAM internacujo endereço é o conteúdo de Ri
(A)←(A)⊕((Ri))XRL A, @R1
XRL direct,A Lógica OU Exclusivo entre oconteúdo de uma posição dememória RAM interna cujoendereço é direct e o conteúdo doacumulador
(direct)←(direct)⊕(A)XRL 90h, A
XRL direct,#data Lógica OU Exclusivo entre oconteúdo de uma posição dememória RAM interna cujoendereço é direct e data
(direct)←(direct)⊕dataXRL 73h, #20h
CLR A Zera o conteúdo do acumulador (A)←0
CLR A
CPL A complementa o conteúdo doacumulador
(A)←(A)/
RL A rotaciona o conteúdo doacumulador para a esquerda. O bit7 é carreagado no bit 0.
(An+1)←(An)
(A0)←(A7)
RL A
RLC A rotaciona o conteúdo doacumulador para a esquerdaatravés do carry
(An+1)←(An)(A0)←(C) (C)←(A7)RLC A
C
RR A rotaciona o conteúdo doacumulador para a direita
(An)←(An+1)
(A7)←(A0)
RR A
RRC A rotaciona o conteúdo doacumulador para a direita atravésdo carry
(An)←(An+1)(A7)←(C) (C)←(A0)RRC A
C
SWAP A Troca os 4 bits menossignificativos do conteúdo de Acom o 4 bits mais significativos
(A3-0) (A7-4)SWAP A
15
0.8. Instruções para Manipulação de Bits
Mnemonico Descrição Operação /
Exemplo
Flags
CLR C Zera o flag carry em PSW. (C)←0CLR C
C=0
CLR bit Zera o bit em uma posição dememória RAM interna com bitsendereçáveis.
(bit)←0
CLR 29.5
CLR P3.2
SETB C Acerta em 1o flag carry em PSW. (C)←1SETB C
SETB bit Acerta em 1o bit em uma posiçãode memória RAM interna com bitsendereçáveis.
(bit)←1
SETB 29.5
SETB P3.2
CPL C Complementa o flag carry emPSW.
(C)←(C)/
CPL C
C
CPL bit Complementa o bit em umaposição de memória RAM internacom bits endereçaáveis.
(bit)←(bit)/CPL 29.5CPL P3.2
ANL C,bit Lógica E entre o flag carry e o bitem uma posição de memória RAMinterna com bits endereçaveis.
(C)←(C)^(bit)ANL C, 29.5
C
ANL C, /bit Lógica E entre o flag carry e ocomplemento do bit em umaposição de memória RAM internacom bits endereçáveis.
(C)←(C)^[(bit)/]
ANL C, /29.5
C
ORL C,bit Lógica OU entre o flag carry e obit em uma posição de memóriaRAM interna com bitsendereçáveis.
(C)←(C)∨(bit)ORL C, 29.5
C
ORL C, /bit Lógica OU entre o flag carry e ocomplemento do bit em umaposição de memória RAM internacom bits endereçáveis.
(C)←(C)∨[(bit)/]ORL C, /29.5
C
MOV C,bit Acerta o flag carry com o valor dobit de uma posição de memóriaRAM interna com bitsendereçáveis.
(C)←(bit)MOV C, 29.5MOV C, P3.5
C
16
MOV bit,C Acerta o bit de uma posição dememória RAM interna com bitsendereçáveis com o flag carry
(bit)←(C)
MOV 29.5,C
MOV P3.5,C
JC rel Desvia se o flag carry estiver em 1 If (C)=1 then(PC)←(PC)+rel
JNC rel Desvia se o flag carry estiver em 0 If (C)=0 then
(PC)←(PC)+rel
JB bit,rel Desvia se o bit estiver em 1 If (bit)=1 then
(PC)←(PC)+relJNB bit,rel Desvia se o bit estiver em 0 If (bit)=0 then
(PC)←(PC)+rel
JBC bit,rel Desvia se o bit estiver em 1 eautomaticamente zera o bit
If (bit)=1 then
(PC)←(PC)+rel
(bit)←0
0.9. Instruções para Desvio
Mnemonico Descrição Operação /
Exemplo
Flags
ACALL addr11 Desvia para uma subrotina. Essasubrotina deve estar no máximo a1Kbytes de distância do ponto dechamada
(PC)←(PC)+2(SP)←(SP)+1((SP))←(PC7-0)(SP)←(SP)+1((SP))←(PC15-8)(PC10-0)←addr11
LCALL addr16 Desvia para uma subrotina. (PC15-0)←addr16
RET Retorna de uma subrotina. (PC15-8)←((SP))
(SP)←(SP)-1
(PC10-0)←((SP))
(SP)←(Sp)-1
17
RETI Retorna de uma subrotina deatendimento de interrupção.
(PC15-8)←((SP))
(SP)←(SP)-1
(PC10-0)←((SP))
(SP)←(Sp)-1
AJMP addr11 Desvia para uma rotina. Essarotina deve estar no máximo a1Kbytes de distância do ponto dechamada
(PC)←(PC)+2(PC10-0)←addr11
LJMP addr16 Desvia para uma rotina. (PC15-0)←addr16
SJMP rel Desvia para uma rotina. Essarotina deve estar no máximo a 128bytes de distância do ponto dechamada
(PC)←(PC)+2
(PC)←(PC)+rel
JMP @A + DPTR Desvia para uma rotina cujoendereço é dado pela soma doconteúdo de DPTR com oconteúdo A.
(PC)←(PC)+(A)
JZ rel Desvia para a rotina se oacumulador for zero.
if (A)=0 then
(PC)←(PC)+rel
JNZ rel Desvia para a rotina se oacumulador for diferente de zero.
if (A)<>0 then(PC)←(PC)+rel
CJNE A,direct,rel Desvia para a rotina se o conteúdode A e direct forem diferentes.
if (A)<>(direct) then
(PC)←(PC)+rel
C
CJNE A,#data,rel Desvia para a rotina se o conteúdode A não for igual a data.
if (A)<>data then(PC)←(PC)+rel
C
CJNE Rn,@Ri,#data,rel Desvia para a rotina se o conteúdode Rn for diferente do conteúdo daposição de memória cujo endereçoé o conteúto é R1 ou R0.
if (Rn)<>((Ri) then(PC)←(PC)+rel
C
CJNE Rn,#data,rel Desvia para a rotina se o conteúdode Rn e data forem diferentes.
if (Rn)<>data then
(PC)←(PC)+rel
C
DJNZ Rn,rel Decrementa o registrador e desviapara a rotina se o acumulador fordiferente de zero.
(Rn)←(Rn)-1if (Rn)<>0 then(PC)←(PC)+rel
18
DJNZ direct,rel Decrementa o conteúdo da posiçãode memória dada por direct. Se oresultado não for nulo ocorre umdesvio caso contrário a instruçãoseguinte é executada.
(direct)←(direct)-1if (direct)<>0 then(PC)←(PC)+rel
NOP Não executa nada.