Capítulo 3 O conjunto de instruções da família de microcontroladores MCS-51 da Intel Instrução ADD ADDC SUBB MUL DIV DA RRC RLC SETB C CLR C CPL C ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit MOV C,/bit CJNE Prentice Hall C X X X 0 0 X X X 1 0 X X X X X X X X Microcontroladores 8051 OV X X X X X AC X X X 1 Capítulo 3: (PSW) = bit 7 bit 6 bit 5 C AC F0 bit 4 bit 3 RS1 RS0 bit 2 bit 1 bit 0 OV - P (C) = Carry-bit flag = vai 0/1 do bit 7 após operações aritméticas (AC) = Auxiliar Carry-bit flag = vai 0/1 do bit 3 após operações aritméticas (F0) = Flag 0 = propósito geral (RS1) e (RS0) = Register Bank Select = Selecionadores do banco de registradores (B0-B3) (OV) = Over-flow flag = (vai 0/1 do bit 7) OR-EX (vai 0/1 do bit 6) (P) = Parity flag = qte de números 1s no contéúdo do registrador Acumulador (A) ou (Acc): = 0 (qte de num 1s par) : Paridade Par = 1 (qte de num 1s ímpar) : Paridade Ímpar Prentice Hall Microcontroladores 8051 2 Capítulo 3: Modos de Endereçamento Modo de endereçamento Endereçamento Imediato Por Registrador Direto Indireto por Registrador Registrador Base mais indireto indexado por registrador Operandos (Registradores e Memória) Memória de Programa R0-R7 e ACC (A), B, C (carry-bit) e DPTR Os 128 bytes menos significativos da RAM Interna e Registradores de Funções Especiais RAM interna (@R0, @R1 e SP) e Memória de Dados Externa (@R0, @R1 e @DPTR) Memória de Programa ( @DPTR+A e @PC+A ) Tabela 2: Modo de endereçamento relacionado com o espaçamento de memória. Prentice Hall Microcontroladores 8051 3 Capítulo 3: O conjunto de instruções da família de microcontroladores MCS-51 da Intel: Modos de Endereçamento Mnemônico Operação Dir. Ind. Reg. Imed. Tempo de Exec. (s) MOV A,<src> X X X X 1 (A) <src> MOV <dest>,A X X X 1 <dest> (A) MOV <dest>,<src> X X X X 2 <dest> <src> MOV DPTR,#data16 (DPTR) #data16 X 2 PUSH <src> X 2 (SP) (SP)+1, ((SP)) <src> POP <dest> X 2 <dest> ((SP)), (SP) (SP)-1 XCH A,<byte> X X X 1 (A) <byte> XCHD A,@Ri X 1 (A)3,0 ((Ri))3,0 Tabela 3: Operações de transferência de dados da RAM interna. Prentice Hall Microcontroladores 8051 4 Capítulo 3: Mnemônico Operação Largura do endereçamento MOVX A,@Ri 8 bits (A) ((Ri)) MOVX @Ri,A 8 bits ((Ri)) (A) MOVX A,@DPTR 16 bits (A) ((DPTR)) MOVX @DPTR,A 16 bits ((DPTR)) (A) Tabela 4: Operações de transferência de dados da RAM externa. Mnemônico Operação MOVC A,@A+DPTR (A) ( (A) + (DPTR) ) MOVC A,@A+PC (A) ( (A) + (PC) ) Tabela 5: Operações de transferência de dados da ROM. Tempo de Exec. (s) 2 2 Modos de Endereçamento Operação Dir. Ind. Reg. Imed. X X X X (A) (A) + <byte> X X X X (A) (A) + <byte> + (C) X X X X (A) (A) - <byte> - (C) Só (A) (A) (A) + 1 X X X (byte) <byte> + 1 Só (DPTR) (DPTR) (DPTR) + 1 Só (A) (A) (A) - 1 X X X (byte) <byte> - 1 Só (A) e (B) (B) + sign (A*B) (A) - sign (A*B) Só (A) e (B) DIV AB (A) int (A/B) (A) mod (A/B) Só (A) DA A Ajuste decimal Tabela 6: Operações aritméticas da família de microcontroladores MCS-51 da Intel. Mnemônico ADD A,<byte> ADDC A,<byte> SUBB A,<byte> INC A INC <byte> INC DPTR DEC A DEC <byte> MUL AB Prentice Hall Tempo de Exec. (s) 2 2 2 2 Microcontroladores 8051 Tempo de Exec. (s) 1 1 1 1 1 2 1 1 4 4 1 5 Capítulo 3: Mnemônico ANL A,<byte> ANL <byte>,A ANL <byte>,#data ORL A,<byte> ORL <byte>,A ORL <byte>,#data XRL A,<byte> XRL <byte>,A XRL <byte>,#data CLR A CPL A RL A RLC A Modos de Endereçamento Dir. Ind. Reg. Imed. X X X X X X X X X X X X X X X X X X Operação (A) (A) and <byte> <byte> <byte> and (A) <byte> <byte> and #data (A) (A) or <byte> <byte> <byte> or (A) <byte> <byte> or #data (A) (A) or-ex <byte> <byte> <byte> or-ex (A) <byte> <byte> or-ex #data Só (A) (A) #00h Só (A) (A) not (A) Só (A) Rotaciona (A) um bit para a esq. Só (A) Rotaciona (A) um bit para a esquerda através do (C) Só (A) RR A Rotaciona (A) um bit para a dir. Só (A) RRC A Rotaciona (A) um bit para a direita através do (C) Só (A) SWAP A (A)3,0 (A)7,4 Tabela 7: Operações lógicas da família de microcontroladores MCS-51 da Intel. Prentice Hall Microcontroladores 8051 Tempo de Exec. (s) 1 1 2 1 1 2 1 1 2 1 1 1 1 1 1 1 6 Capítulo 3: Operação Tempo de Exec. (s) ANL C,bit 2 (C) (C) and (bit) ANL C,/bit 2 (C) (C) and (not (bit)) ORL C,bit 2 (C) (C) or (bit) ORL C,/bit 2 (C) (C) or (not (bit)) MOV C,bit 1 (C) (bit) MOV bit,C 2 (bit) (C) CLR C 1 (C) #0 CLR bit 1 (bit) #0 SETB C 1 (C) #1 SETB bit 1 (bit) #1 CPL C 1 (C) not (C) CPL bit 1 (bit) not (bit) JC rel 2 (PC) (PC) + rel, se (C) =1 JNC rel 2 (PC) (PC) + rel, se (C) =0 JB rel 2 (PC) (PC) + rel, se (bit) =1 JNB rel 2 (PC) (PC) + rel, se (bit) =0 JBC rel 2 (PC) (PC) + rel, se (bit) =1 e (bit)#0 Tabela 8: Operações booleanas da família de microcontroladores MCS-51 da Intel. Mnemônico Prentice Hall Microcontroladores 8051 7 Capítulo 3: Operação Tempo de Exec. (s) salta para addr (-128 a +127) 2 salta para addr ( dentro do espaço de –1024 a +1024) 2 salta para addr (64K) 3 salta para A+DPTR 2 chama a sub-rotina para o end. addr (dentro do espaço de 2 –1024 a +1024) LCALL addr chama a sub-rotina para o end. addr (64K) 3 RET Retorna da sub-rotina 2 RETI Retorna da rotina de atendimento a interrupção 2 NOP Nenhuma operação (No operation) 1 Tabela 9: Operações de salto incondicional da família de microcontroladores MCS-51 da Intel. Mnemônico SJMP addr AJMP addr LJMP addr JMP @A+DPTR ACALL addr Mnemônico JZ rel JNZ rel DJNZ <byte>, rel Operação (PC) (PC) + rel, se (A) = 0 (PC) (PC) + rel, se (A) 0 <byte> <byte>-1 e (PC) (PC) + rel, se (byte) 0 Modos de Endereçamento Dir. Ind. Reg. Imed. Só (A) Só (A) X X X X (PC) (PC) + rel, se (A) <byte> CJNE A,#data, rel X X (PC) (PC) + rel, se (A) #data Tabela 10: Operações salto condicional da família de microcontroladores MCS-51 da Intel. CJNE A,<byte>, rel Prentice Hall Microcontroladores 8051 Tempo de Exec. (s) 2 2 2 2 2 8 Capítulo 3: Operações de transferência de dados Instrução Byte(s) Ciclos Codificação Representação Simbólica MOV A,Rn 1 1 1110 1rrr MOV A,direct 2 1 1110 0101 direct address MOV A,@Ri 1 1 1110 011I MOV A,#data 2 1 0111 0100 immediate data MOV Rn,A 1 1 1111 1rrr MOV Rn,direct 2 2 1010 1rrr direct address MOV Rn,#data 2 1 0111 1rrr immediate data MOV direct,A 2 1 1111 0101 direct address MOV direct,Rn 2 2 1000 1rrr direct address MOV direct,direct 3 2 1000 0101 dir.adr.src dir.adr.dest MOV direct,@Ri 2 2 1000 011i direct address MOV direct,#data 3 2 0111 0101 dir. adr. immed. data MOV @Ri,A 1 1 1111 011i MOV @Ri,direct 2 2 1010 011i direct address MOV @Ri,#data 2 1 0111 011i immediate data (PC) (PC) + 1 (A) (Rn) (PC) (PC) + 2 (A) (direct) (PC) (PC) + 1 (A) ((Ri)) (PC) (PC) + 2 (A) #data (PC) (PC) + 1 (Rn) (A) (PC) (PC) + 2 (Rn) (direct) (PC) (PC) + 2 (Rn) #data (PC) (PC) + 2 (direct) (A) (PC) (PC) + 2 (direct) (Rn) (PC) (PC) + 3 (direct) (direct) (PC) (PC) + 2 (direct) ((Ri)) (PC) (PC) + 3 (direct) #data (PC) (PC) + 1 ((Ri)) (A) (PC) (PC) + 2 ((Ri)) (direct) (PC) (PC) + 2 ((Ri)) #data Prentice Hall Microcontroladores 8051 9