·
Engenharia Elétrica ·
Microprocessadores
· 2021/2
Envie sua pergunta para a IA e receba a resposta na hora

Prefere sua atividade resolvida por um tutor especialista?
- Receba resolvida até o seu prazo
- Converse com o tutor pelo chat
- Garantia de 7 dias contra erros
Recomendado para você
2
Atividades de Programação Assembler-2021 2
Microprocessadores
UFC
1
Atividade 1-2022 1
Microprocessadores
UFC
21
Slide Portas de I o-2021 2
Microprocessadores
UFC
27
Slide Microcontrolador Pic16f628a-2021 2
Microprocessadores
UFC
2
2 Avaliação Parcial-2020 2
Microprocessadores
UFC
7
Listas Antigas-2021 2
Microprocessadores
UFC
19
Resumo sobre a Linguagem C para Microcontroladores
Microprocessadores
USU
68
Paletização Automática Através de Braço Robótico Controlada por Microcontrolador Arduino
Microprocessadores
USU
32
Slide - Modos de Endereçamentos e Instruções de Transferência de Dados do 8085 - Microprocessadores 2021-2
Microprocessadores
UNESP
35
Slide - Instruções Aritméticas do 8085 - Microprocessadores 2021-2
Microprocessadores
UNESP
Texto de pré-visualização
1 Conjunto de Instruções do PIC 16F628A Instruções 2 Operações com Registradores ADDWF Descrição: Soma o conteúdo do registo W com o registrador f. Se d é 0, o resultado armazena-se em W, Se d é 1 armazena-se em f. Sintaxe: ADDWF f,d Operandos: d - [0,1], f – [0, 127] Operação: (W) + (f) ==> (dest) Flags afetadas: C, DC, Z Exemplo: ADDWF REG,0 ; Antes: W = 0x17, REG = 0xC2 ; Depois: W = 0xD9, REG = 0xC2 ANDWF Descrição: Realiza a operação lógica AND entre o registo W e o registrador f. Se d é 0, o resultado armazena-se em W, Se d é 1 armazena-se em f. Sintaxe: ANDWF f,d Operandos: d - [0,1], f – [0, 127] Operação: (W) AND (f) ==> (dest) Flags afetadas: Z Exemplo: ANDWF REG,0 ; Antes: W = 0x25, REG = 0xF1 ; Depois: W = 0x21, REG = 0xF1 3 CLRF Descrição: O registrador f é carregado com 0x00. A flag Z é ativada. Sintaxe: CLRF f Operandos: f – [0, 127] Operação: 0x00 ==> (f), 1 ==> Z Flags afetadas: Z Exemplo: CLRF REG ; Antes: REG = 0x5A ; Depois: REG = 0x00, Z = 1 COMF Descrição: O registrador f é complementado. A flag Z é ativada se o resultado é 0. Se d é 0 o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: COMF f,d Operandos: d - [0,1], f – [0, 127] Operação: (/f), 1 ==> 0 (dest), 0 ==> 1 (dest) Flags afetadas: Z Exemplo: COMF REG,0 ; Antes: REG = 0x13 ; Depois: REG = 0x13, W = 0xEC DECF Descrição: Decrementa de uma unidade o conteúdo de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: DECF f,d Operandos: d - [0,1], f – [0, 127] Operação: (f ) - 1 ==> (dest) Flags afetadas: Z Exemplo: DECF CONT,1 ; Antes: CONT = 0x01, Z = 0 ; Depois: CONT = 0x00, Z = 1 DECFSZ Descrição: Decrementa o conteúdo do registrador f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0 salta uma instrução e a instrução é executada em 2 ciclos de máquina. Sintaxe: DECFSZ f,d Operandos: d - [0,1], f – [0, 127] Operação: (f) - 1 ==> d; Salta uma instrução Se Resultado = 0 Flags afetadas: nenhum Exemplo: DECFSZ REG,0 GOTO NO_ES_0 SI_ES_0 ; Instrução NO_ES_0 ; Salta instrução anterior 4 INCF Descrição: Incrementa de uma unidade o conteúdo de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: INCF f,d Operandos: d - [0,1], f – [0, 127] Operação: (f ) + 1 ==> (dest) Flags afetadas: Z Exemplo: INCF CONT,1 ; Antes: CONT = 0xFF, Z = 0 ; Depois: CONT = 0x00, Z = 1 INCFSZ Descrição: Incrementa o conteúdo do registrador f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0 salta a instrução seguinte, em cujo caso demoraria 2 ciclos. Sintaxe: INCFSZ f,d Operandos: d - [0,1], f – [0, 127] Operação: (f) -1 ==> d; Salta instrução Se Resultado = 0 Flags afetadas: nenhum Exemplo: INCFSC REG,0 GOTO NO_ES_0 SI_ES_0 ; instrução NO_ES_0 ; Salta instrução anterior IORWF Descrição: Realiza a operação lógica OR entre os registradores W e f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: IORWF f,d Operandos: d - [0,1], f – [0, 127] Operação: (W) OR (f) ==> (dest) Flags afetadas: Z Exemplo: IORWF REG,0 ; Antes: W = 0x91, REG = 0x13 ; Depois: W = 0x93, REG = 0x13 MOVF Descrição: O conteúdo do registrador f é movido para o destino dependendo de d. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Quando d é 1 permite verificar o registrador, já que afeta Z. Sintaxe: MOVF f,d Operandos: d - [0,1], f – [0, 127] Operação: (f) ==> (dest) Flags afetadas: Z Exemplo: MOVF REG,0 ; Depois: W = REG 5 MOVWF Descrição: O conteúdo do registrador W passa para o registrador f. Sintaxe: MOVWF f Operandos: f – [0, 127] Operação: W ==> (f) Flags afetadas: nenhum Exemplo: MOVWF REG ; Antes: REG = 0xFF, W = 0x4F ; Depois: REG = 0x4F, W = 0x4F RLF Descrição: O conteúdo de f é rotacionado à esquerda. O bit de maior peso de f passa para o carry (C), e o carry é colocado no bit de f de menor peso. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: RLF f,d Operandos: d - [0,1], f – [0, 127] Operação: Rotação à esquerda Flags afetadas: C Exemplo: RLF REG,0 ; Antes: REG = 1110 0110, C = 0 ; Depois: REG = 1110 0110, W = 1100 1100, C = 1 RRF Descrição: O conteúdo de f é rotacionado à direita. O bit de menor peso de f passa para o carry (C), e o carry é colocado no bit de maior peso de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: RRF f,d Operandos: d - [0,1], f – [0, 127] Operação: Rotação à direita Flags afetadas: C Exemplo: RRF REG,0 ; Antes: REG = 1110 0110, C = 1 ; Depois: REG = 1110 0110, W = 1111 0011, C = 0 SUBWF Descrição: Mediante o método do complemento de dois, o conteúdo de W é subtraído ao de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: SUBWF f,d Operandos: d - [0,1], f – [0, 127] Operação: ( f ) - (W )==> (dest) Flags afetadas: C, DC, Z Exemplo: SUBWF REG,1 ; Antes: REG = 0x03, W = 0x02, C = ? ; Depois:REG = 0x01, W = 0x4F, C = 1 6 SWAPF Descrição: Os 4 bits de maior peso e os 4 de menor são trocados. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: SWAPF f,d Operandos: d - [0,1], f – [0, 127] Operação: (f <3: 0>) (f <7:4>) Flags afetadas: nenhum Exemplo: SWAPF REG,0 ; Antes: REG = 0xA5 ; Depois: REG = 0xA5, W = 0x5A XORWF Descrição: Realiza a operação lógica XOR entre os registradores W e f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: XORWF f,d Operandos: d - [0,1], f – [0, 127] Operação: (W) XOR (f) ==> (dest) Flags afetadas: Z Exemplo: XORWF REG,0 ; Antes: W = 0xB5, REG = 0xAF ; Depois: W = 0xB5, REG = 0x1A Operações com Literais 7 ADDLW Descrição: Soma o conteúdo do registrador W e do literal k, guardando o resultado em W. Sintaxe: ADDLW k Operandos: k – [0, 255] Operação: (W) + (k)==> (W) Flags afetadas: C, DC, Z Exemplo: ADDLW 0xC2 ; Antes: W = 0x17 ; Depois: W = 0xD9 ANDLW Descrição: Realiza a operação lógica AND entre o conteúdo do registrador W e o literal k, guardando o resultado em W. Sintaxe: ANDLW k Operandos: k – [0, 255] Operação: (W) AND (k)==> (W) Flags afetadas: Z Exemplo: ADDLW 0xC2 ; Antes: W = 0x17 ; Depois: W = 0xD9 IORLW Descrição: Realiza a operação lógica OR entre o conteúdo do registrador W e o literal k, guardando o resultado em W. Sintaxe: IORLW k Operandos: k – [0, 255] Operação: (W) OR (k)==> (W) Flags afetadas: Z Exemplo: IORLW 0x35 ; Antes: W = 0x9A ; Depois: W = 0xBF MOVLW Descrição: O literal k é armazenado no registrador W. Sintaxe: MOVLW k Operandos: k – [0, 255] Operação: (k) ==> (W) Flags afetadas: nenhum Exemplo: MOVLW 0x5A ; Depois: REG = 0x4F, W = 0x5A 8 SUBLW Descrição: Mediante o método do complemento de dois o conteúdo de W é subtraído do literal k. O resultado é armazenado em W. Sintaxe: SUBLW k Operandos: k – [0, 255] Operação: ( k ) - (W) ==> (W) Flags afetadas: Z, C, DC Exemplo: SUBLW 0x02 ; Antes: W=1,C=?; Depois: W=1 ,C=1 ; Antes: W=3,C=?; Depois: W=FF,C=0 (resultado é negativo) XORLW Descrição: Realiza a operação lógica XOR entre o conteúdo do registrador W e do literal k, guardando o resultado em W. Sintaxe: XORLW k Operandos: k – [0, 255] Operação: (W) XOR (k)==> (W) Flags afetadas: Z Exemplo: XORLW 0xAF ; Antes: W = 0xB5 ; Depois: W = 0x1A Operações com Bits 9 BCF Descrição: Apaga o bit b do registrador f Sintaxe: BCF f,b Operandos: f – [0, 127], b – [0, 7] Operação: 0 ==> (f<b>) Flags afetadas: nenhum Exemplo: BCF REG,7 ; Antes: REG = 0xC7 ; Depois: REG = 0x47 BSF Descrição: Ativa (seta) o bit b do registrador f Sintaxe: BSF f,b Operandos: f – [0, 127], b – [0, 7] Operação: 1 ==> (f<b>) Flags afetadas: nenhum Exemplo: BSF REG,7 ; Antes: REG = 0x0A ; Depois: REG = 0x8A BTFSC Descrição: Se o bit b do registrador f é 0, salta uma instrução e continua com a execução. Sintaxe: BTFSC f,b Operandos: f – [0, 127], b – [0, 7] Operação: Salto Se (f<b>) = 0 Flags afetadas: nenhum Exemplo: BTFSC REG,6 GOTO NO_ES_0 SI_ES_0 ; instrução NO_ES_0 ; instrução BTFSS Descrição: Se o bit b do registrador f é 1, salta uma instrução e continua com a execução. Sintaxe: BTFSS f,b Operandos: f – [0, 127], b – [0, 7] Operação: Salto Se (f<b>) = 1 Flags afetadas: nenhum Exemplo: BTFSS REG,6 GOTO BIT_NAO_E_1 BIT_SIM_E_1 ; instrução BIT_NAO_E_1 ; instrução 10 Operações de Controle CLRW Descrição: O registrador de trabalho W é carregado com 0x00. A flag Z é ativada (setada). Sintaxe: CLRW Operandos: nenhum Operação: 0x00 ==> W, 1 ==> Z Flags afetadas: Z Exemplo: CLRW ; Antes: W = 0x5A ; Depois: W = 0x00, Z = 1 NOP Descrição: Não realiza nenhuma operação. Na realidade consome um ciclo de instrução sem fazer nada. Sintaxe: NOP Operandos: nenhum Operação: No operar Flags afetadas: nenhum Exemplo: NOP 11 CALL Descrição: Salta para uma subrotina. A parte baixa de k é carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de máquina. Sintaxe: CALL k Operandos: k – [0, 2047] Operação: PC ==> pilha; k ==> PC Flags afetadas: nenhum Exemplo: ORIGEM CALL DESTINO ; Antes: PC = ORIGEM ; Depois: PC = DESTINO CLRWDT Descrição: Esta instrução apaga tanto o WDT como o seu preescaler. Os bits /TO e /PD do registrador de estado (STATUS) são colocados em 1 (setados). Sintaxe: CLRWDT Operandos: nenhum Operação: 0x00 ==> WDT, 1 ==> /TO, 1 ==> /PD Flags afetadas: /TO, /PD Exemplo: CLRWDT ; Depois: Contador WDT = 0, WDT = 0, /TO = 1, /PD = 1 GOTO Descrição: Trata-se de um salto incondicional. A parte baixa de k é carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de máquina. Sintaxe: GOTO k Operandos: k – [0, 2047] Operação: k ==> PC <8:0> Flags afetadas: nenhum Exemplo: ORIGEM GOTO DESTINO ; Antes: PC = ORIGEM ; Depois: PC = DESTINO RETFIE Descrição: o PC é carregado com o conteúdo de cima da pilha (TOS): endereço de regresso. Consome 2 ciclos. As interrupções voltam a ser habilitadas. Sintaxe: RETFIE Operandos: nenhum Operação: 1 ==> GIE; TOS==>PC Flags afetadas: nenhum Exemplo: RETFIE ; Depois: PC = direcção de regresso, GIE = 1 12 RETLW Descrição: O registrador W é carregado com o literal k. O PC é carregado com o conteúdo de cima da pilha (TOS): endereço de regresso. Consome 2 ciclos. Sintaxe: RETLW k Operandos: k – [0, 255] Operação: (k)==> (W); TOS==>PC Flags afetadas: nenhum Exemplo: RETLW 0x37 ; Depois: PC = direcção de regresso, W = 0x37 RETURN Descrição: O PC é carregado com o conteúdo de cima da pilha (TOS): endereço de regresso. Consome 2 ciclos. Sintaxe: RETURN Operandos: nenhum Operação: TOS ==> PC Flags afetadas: nenhum Exemplo: RETURN ; Depois: PC = direcção de regresso SLEEP Descrição: O bit de energia (/PD) é colocado em 0, e o de descanso (/TO) em 1. O WDT e o seu preescaler são apagados. o micro pára o oscilador, reduzindo o consumo de energia. Sintaxe: SLEEP Operandos: nenhum Operação: 0x00==>WDT, 1 ==> /TO, 0 ==> WDT Preescaler, 0 ==> /PD Flags afetadas: /PD, /TO Exemplo: SLEEP ; Preescales WDT = 0, /TO = 1, /PD = 1
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
2
Atividades de Programação Assembler-2021 2
Microprocessadores
UFC
1
Atividade 1-2022 1
Microprocessadores
UFC
21
Slide Portas de I o-2021 2
Microprocessadores
UFC
27
Slide Microcontrolador Pic16f628a-2021 2
Microprocessadores
UFC
2
2 Avaliação Parcial-2020 2
Microprocessadores
UFC
7
Listas Antigas-2021 2
Microprocessadores
UFC
19
Resumo sobre a Linguagem C para Microcontroladores
Microprocessadores
USU
68
Paletização Automática Através de Braço Robótico Controlada por Microcontrolador Arduino
Microprocessadores
USU
32
Slide - Modos de Endereçamentos e Instruções de Transferência de Dados do 8085 - Microprocessadores 2021-2
Microprocessadores
UNESP
35
Slide - Instruções Aritméticas do 8085 - Microprocessadores 2021-2
Microprocessadores
UNESP
Texto de pré-visualização
1 Conjunto de Instruções do PIC 16F628A Instruções 2 Operações com Registradores ADDWF Descrição: Soma o conteúdo do registo W com o registrador f. Se d é 0, o resultado armazena-se em W, Se d é 1 armazena-se em f. Sintaxe: ADDWF f,d Operandos: d - [0,1], f – [0, 127] Operação: (W) + (f) ==> (dest) Flags afetadas: C, DC, Z Exemplo: ADDWF REG,0 ; Antes: W = 0x17, REG = 0xC2 ; Depois: W = 0xD9, REG = 0xC2 ANDWF Descrição: Realiza a operação lógica AND entre o registo W e o registrador f. Se d é 0, o resultado armazena-se em W, Se d é 1 armazena-se em f. Sintaxe: ANDWF f,d Operandos: d - [0,1], f – [0, 127] Operação: (W) AND (f) ==> (dest) Flags afetadas: Z Exemplo: ANDWF REG,0 ; Antes: W = 0x25, REG = 0xF1 ; Depois: W = 0x21, REG = 0xF1 3 CLRF Descrição: O registrador f é carregado com 0x00. A flag Z é ativada. Sintaxe: CLRF f Operandos: f – [0, 127] Operação: 0x00 ==> (f), 1 ==> Z Flags afetadas: Z Exemplo: CLRF REG ; Antes: REG = 0x5A ; Depois: REG = 0x00, Z = 1 COMF Descrição: O registrador f é complementado. A flag Z é ativada se o resultado é 0. Se d é 0 o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: COMF f,d Operandos: d - [0,1], f – [0, 127] Operação: (/f), 1 ==> 0 (dest), 0 ==> 1 (dest) Flags afetadas: Z Exemplo: COMF REG,0 ; Antes: REG = 0x13 ; Depois: REG = 0x13, W = 0xEC DECF Descrição: Decrementa de uma unidade o conteúdo de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: DECF f,d Operandos: d - [0,1], f – [0, 127] Operação: (f ) - 1 ==> (dest) Flags afetadas: Z Exemplo: DECF CONT,1 ; Antes: CONT = 0x01, Z = 0 ; Depois: CONT = 0x00, Z = 1 DECFSZ Descrição: Decrementa o conteúdo do registrador f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0 salta uma instrução e a instrução é executada em 2 ciclos de máquina. Sintaxe: DECFSZ f,d Operandos: d - [0,1], f – [0, 127] Operação: (f) - 1 ==> d; Salta uma instrução Se Resultado = 0 Flags afetadas: nenhum Exemplo: DECFSZ REG,0 GOTO NO_ES_0 SI_ES_0 ; Instrução NO_ES_0 ; Salta instrução anterior 4 INCF Descrição: Incrementa de uma unidade o conteúdo de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: INCF f,d Operandos: d - [0,1], f – [0, 127] Operação: (f ) + 1 ==> (dest) Flags afetadas: Z Exemplo: INCF CONT,1 ; Antes: CONT = 0xFF, Z = 0 ; Depois: CONT = 0x00, Z = 1 INCFSZ Descrição: Incrementa o conteúdo do registrador f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0 salta a instrução seguinte, em cujo caso demoraria 2 ciclos. Sintaxe: INCFSZ f,d Operandos: d - [0,1], f – [0, 127] Operação: (f) -1 ==> d; Salta instrução Se Resultado = 0 Flags afetadas: nenhum Exemplo: INCFSC REG,0 GOTO NO_ES_0 SI_ES_0 ; instrução NO_ES_0 ; Salta instrução anterior IORWF Descrição: Realiza a operação lógica OR entre os registradores W e f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: IORWF f,d Operandos: d - [0,1], f – [0, 127] Operação: (W) OR (f) ==> (dest) Flags afetadas: Z Exemplo: IORWF REG,0 ; Antes: W = 0x91, REG = 0x13 ; Depois: W = 0x93, REG = 0x13 MOVF Descrição: O conteúdo do registrador f é movido para o destino dependendo de d. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Quando d é 1 permite verificar o registrador, já que afeta Z. Sintaxe: MOVF f,d Operandos: d - [0,1], f – [0, 127] Operação: (f) ==> (dest) Flags afetadas: Z Exemplo: MOVF REG,0 ; Depois: W = REG 5 MOVWF Descrição: O conteúdo do registrador W passa para o registrador f. Sintaxe: MOVWF f Operandos: f – [0, 127] Operação: W ==> (f) Flags afetadas: nenhum Exemplo: MOVWF REG ; Antes: REG = 0xFF, W = 0x4F ; Depois: REG = 0x4F, W = 0x4F RLF Descrição: O conteúdo de f é rotacionado à esquerda. O bit de maior peso de f passa para o carry (C), e o carry é colocado no bit de f de menor peso. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: RLF f,d Operandos: d - [0,1], f – [0, 127] Operação: Rotação à esquerda Flags afetadas: C Exemplo: RLF REG,0 ; Antes: REG = 1110 0110, C = 0 ; Depois: REG = 1110 0110, W = 1100 1100, C = 1 RRF Descrição: O conteúdo de f é rotacionado à direita. O bit de menor peso de f passa para o carry (C), e o carry é colocado no bit de maior peso de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: RRF f,d Operandos: d - [0,1], f – [0, 127] Operação: Rotação à direita Flags afetadas: C Exemplo: RRF REG,0 ; Antes: REG = 1110 0110, C = 1 ; Depois: REG = 1110 0110, W = 1111 0011, C = 0 SUBWF Descrição: Mediante o método do complemento de dois, o conteúdo de W é subtraído ao de f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: SUBWF f,d Operandos: d - [0,1], f – [0, 127] Operação: ( f ) - (W )==> (dest) Flags afetadas: C, DC, Z Exemplo: SUBWF REG,1 ; Antes: REG = 0x03, W = 0x02, C = ? ; Depois:REG = 0x01, W = 0x4F, C = 1 6 SWAPF Descrição: Os 4 bits de maior peso e os 4 de menor são trocados. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: SWAPF f,d Operandos: d - [0,1], f – [0, 127] Operação: (f <3: 0>) (f <7:4>) Flags afetadas: nenhum Exemplo: SWAPF REG,0 ; Antes: REG = 0xA5 ; Depois: REG = 0xA5, W = 0x5A XORWF Descrição: Realiza a operação lógica XOR entre os registradores W e f. Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f. Sintaxe: XORWF f,d Operandos: d - [0,1], f – [0, 127] Operação: (W) XOR (f) ==> (dest) Flags afetadas: Z Exemplo: XORWF REG,0 ; Antes: W = 0xB5, REG = 0xAF ; Depois: W = 0xB5, REG = 0x1A Operações com Literais 7 ADDLW Descrição: Soma o conteúdo do registrador W e do literal k, guardando o resultado em W. Sintaxe: ADDLW k Operandos: k – [0, 255] Operação: (W) + (k)==> (W) Flags afetadas: C, DC, Z Exemplo: ADDLW 0xC2 ; Antes: W = 0x17 ; Depois: W = 0xD9 ANDLW Descrição: Realiza a operação lógica AND entre o conteúdo do registrador W e o literal k, guardando o resultado em W. Sintaxe: ANDLW k Operandos: k – [0, 255] Operação: (W) AND (k)==> (W) Flags afetadas: Z Exemplo: ADDLW 0xC2 ; Antes: W = 0x17 ; Depois: W = 0xD9 IORLW Descrição: Realiza a operação lógica OR entre o conteúdo do registrador W e o literal k, guardando o resultado em W. Sintaxe: IORLW k Operandos: k – [0, 255] Operação: (W) OR (k)==> (W) Flags afetadas: Z Exemplo: IORLW 0x35 ; Antes: W = 0x9A ; Depois: W = 0xBF MOVLW Descrição: O literal k é armazenado no registrador W. Sintaxe: MOVLW k Operandos: k – [0, 255] Operação: (k) ==> (W) Flags afetadas: nenhum Exemplo: MOVLW 0x5A ; Depois: REG = 0x4F, W = 0x5A 8 SUBLW Descrição: Mediante o método do complemento de dois o conteúdo de W é subtraído do literal k. O resultado é armazenado em W. Sintaxe: SUBLW k Operandos: k – [0, 255] Operação: ( k ) - (W) ==> (W) Flags afetadas: Z, C, DC Exemplo: SUBLW 0x02 ; Antes: W=1,C=?; Depois: W=1 ,C=1 ; Antes: W=3,C=?; Depois: W=FF,C=0 (resultado é negativo) XORLW Descrição: Realiza a operação lógica XOR entre o conteúdo do registrador W e do literal k, guardando o resultado em W. Sintaxe: XORLW k Operandos: k – [0, 255] Operação: (W) XOR (k)==> (W) Flags afetadas: Z Exemplo: XORLW 0xAF ; Antes: W = 0xB5 ; Depois: W = 0x1A Operações com Bits 9 BCF Descrição: Apaga o bit b do registrador f Sintaxe: BCF f,b Operandos: f – [0, 127], b – [0, 7] Operação: 0 ==> (f<b>) Flags afetadas: nenhum Exemplo: BCF REG,7 ; Antes: REG = 0xC7 ; Depois: REG = 0x47 BSF Descrição: Ativa (seta) o bit b do registrador f Sintaxe: BSF f,b Operandos: f – [0, 127], b – [0, 7] Operação: 1 ==> (f<b>) Flags afetadas: nenhum Exemplo: BSF REG,7 ; Antes: REG = 0x0A ; Depois: REG = 0x8A BTFSC Descrição: Se o bit b do registrador f é 0, salta uma instrução e continua com a execução. Sintaxe: BTFSC f,b Operandos: f – [0, 127], b – [0, 7] Operação: Salto Se (f<b>) = 0 Flags afetadas: nenhum Exemplo: BTFSC REG,6 GOTO NO_ES_0 SI_ES_0 ; instrução NO_ES_0 ; instrução BTFSS Descrição: Se o bit b do registrador f é 1, salta uma instrução e continua com a execução. Sintaxe: BTFSS f,b Operandos: f – [0, 127], b – [0, 7] Operação: Salto Se (f<b>) = 1 Flags afetadas: nenhum Exemplo: BTFSS REG,6 GOTO BIT_NAO_E_1 BIT_SIM_E_1 ; instrução BIT_NAO_E_1 ; instrução 10 Operações de Controle CLRW Descrição: O registrador de trabalho W é carregado com 0x00. A flag Z é ativada (setada). Sintaxe: CLRW Operandos: nenhum Operação: 0x00 ==> W, 1 ==> Z Flags afetadas: Z Exemplo: CLRW ; Antes: W = 0x5A ; Depois: W = 0x00, Z = 1 NOP Descrição: Não realiza nenhuma operação. Na realidade consome um ciclo de instrução sem fazer nada. Sintaxe: NOP Operandos: nenhum Operação: No operar Flags afetadas: nenhum Exemplo: NOP 11 CALL Descrição: Salta para uma subrotina. A parte baixa de k é carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de máquina. Sintaxe: CALL k Operandos: k – [0, 2047] Operação: PC ==> pilha; k ==> PC Flags afetadas: nenhum Exemplo: ORIGEM CALL DESTINO ; Antes: PC = ORIGEM ; Depois: PC = DESTINO CLRWDT Descrição: Esta instrução apaga tanto o WDT como o seu preescaler. Os bits /TO e /PD do registrador de estado (STATUS) são colocados em 1 (setados). Sintaxe: CLRWDT Operandos: nenhum Operação: 0x00 ==> WDT, 1 ==> /TO, 1 ==> /PD Flags afetadas: /TO, /PD Exemplo: CLRWDT ; Depois: Contador WDT = 0, WDT = 0, /TO = 1, /PD = 1 GOTO Descrição: Trata-se de um salto incondicional. A parte baixa de k é carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de máquina. Sintaxe: GOTO k Operandos: k – [0, 2047] Operação: k ==> PC <8:0> Flags afetadas: nenhum Exemplo: ORIGEM GOTO DESTINO ; Antes: PC = ORIGEM ; Depois: PC = DESTINO RETFIE Descrição: o PC é carregado com o conteúdo de cima da pilha (TOS): endereço de regresso. Consome 2 ciclos. As interrupções voltam a ser habilitadas. Sintaxe: RETFIE Operandos: nenhum Operação: 1 ==> GIE; TOS==>PC Flags afetadas: nenhum Exemplo: RETFIE ; Depois: PC = direcção de regresso, GIE = 1 12 RETLW Descrição: O registrador W é carregado com o literal k. O PC é carregado com o conteúdo de cima da pilha (TOS): endereço de regresso. Consome 2 ciclos. Sintaxe: RETLW k Operandos: k – [0, 255] Operação: (k)==> (W); TOS==>PC Flags afetadas: nenhum Exemplo: RETLW 0x37 ; Depois: PC = direcção de regresso, W = 0x37 RETURN Descrição: O PC é carregado com o conteúdo de cima da pilha (TOS): endereço de regresso. Consome 2 ciclos. Sintaxe: RETURN Operandos: nenhum Operação: TOS ==> PC Flags afetadas: nenhum Exemplo: RETURN ; Depois: PC = direcção de regresso SLEEP Descrição: O bit de energia (/PD) é colocado em 0, e o de descanso (/TO) em 1. O WDT e o seu preescaler são apagados. o micro pára o oscilador, reduzindo o consumo de energia. Sintaxe: SLEEP Operandos: nenhum Operação: 0x00==>WDT, 1 ==> /TO, 0 ==> WDT Preescaler, 0 ==> /PD Flags afetadas: /PD, /TO Exemplo: SLEEP ; Preescales WDT = 0, /TO = 1, /PD = 1