resumo intruções 8051

18
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.

Transcript of resumo intruções 8051

Page 1: 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.

Page 2: resumo intruções 8051

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

Page 3: resumo intruções 8051

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

Page 4: resumo intruções 8051

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

Page 5: resumo intruções 8051

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.

Page 6: resumo intruções 8051

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

Page 7: resumo intruções 8051

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.

Page 8: resumo intruções 8051

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

Page 9: resumo intruções 8051

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

Page 10: resumo intruções 8051

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

Page 11: resumo intruções 8051

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

Page 12: resumo intruções 8051

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

Page 13: resumo intruções 8051

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

Page 14: resumo intruções 8051

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

Page 15: resumo intruções 8051

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

Page 16: resumo intruções 8051

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

Page 17: resumo intruções 8051

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

Page 18: resumo intruções 8051

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.