2) (3 pt) Para o programa a seguir complete a tabela com os valores constantes em cada co- luna após o processamento da instrução da respectiva linha de instrução conforme visto em exercícios de revisão. Os valores numéricos na tabela estão na base decimal. Considere que antes da primeira instrução as variáveis TEMP1, TEMP2 e o W possuem valores nulos (zero). INSTRUÇÂO MOVLW 22 MOVWF TEMP1 ADDLW 8 MOVWF TEMP2 ADDWF TEMP1,1 INCF TEMP2,1 MOVF TEMP2,1 ADDLW 25 DECF TEMP1,1 ADDWF TEMP1,0 MOVLW 12 ADDWF TEMP2,1 MOVF TEMP1,0 ADDLW 18 INCF TEMP1,0 W TEMP1 TEMP2 3) (3 pt) Para o programa a seguir complete a tabela com os valores constantes em cada co- luna após o processamento da instrução da respectiva linha de instrução. Os valores numéricos na tabela estão na base binária (Ver tabela verdade da operação XOR). INSTRUÇÃO MOVLW B’00101101’ MOVWF TEMP1 ANDLW B’00111001’ MOVWF TEMP2 IORLW B’10011011’ XORWF TEMP1,1 ANDWF TEMP1,0 ANDWF TEMP2,0 IORWF TEMP1,0 XORLW B’10110011’ ANDWF TEMP2,0 XORWF TEMP1,1 ANDWF TEMP2,0 W 00101101 A 0 0 1 1 Tabela Verdade XOR B A XOR B 0 0 1 1 0 1 1 0 TEMP1 00000000 TEMP2 00000000 Sintaxe ADDLW k ADDWF f,d ANDLW k ANDWF f,d BCF f,b BSF f,b BTFSC f,b BTFSS f,b CALL k CLRF f CLRW CLRWDT COMF f,d DECF f,d DECFSZ f,d GOTO k INCF f,d INCFSZ f,d IORLW k IORWF f,d MOVLW k MOVF f,d MOVWF f NOP OPTION RETFIE RETLW k RETURN RLF f,d RRF f,d SLEEP SUBLW k SUBWF f,d SWAPF f TRIS f XORLW k XORWF f,d Set de instruções do PIC Descrição Microchip Operação equivalente Soma Literal e W W=W+k Soma W e f * d = W + f (onde d pode ser W ou f) AND Literal com W W = W AND k AND W com f * d = W AND f (onde d pode ser W ou f) Bit Clear f f(b) = 0 (Apaga bit) Bit Set f f(b) = 1 (Seta bit) Bit Test f, Skip if Clear f(b) = 0 ? Se for zero(0), pule uma instrução Bit Test f, skip if Set f(b) = 1 ? Se for um(1), pule uma instrução Subroutine Call Chamada a uma subrotina no endereço k Clear f f=0 Clear W Register W=0 Clear Watchdog Timer Watchdog timer = 0 Complemento de f d = not f (onde d pode ser W ou f) Decremento de f d = f -1 (onde d pode ser W ou f) Decremento f, Skip(pula)se 0 d = f -1 (onde d pode ser W ou f) se = 0 pula Go to address Pule para o endereço k Incrementa f * d = f +1 (onde d pode ser W ou f) Incrementa f, pula se =0 * d = f +1 (onde d pode ser W ou f) se d = 0 pule Inclusive OR Literal com W W = W OR k Inclusive OR W com f * d = f OR W (onde d pode ser W ou f) Move literal para W W=k Move f * d = f (onde d pode ser W ou f) Move W para f * f=W No Operation Nenhuma operação Load Option Register OPTION = W Return from Interrupt Retorna de uma interrupção Return Literal to W Retorna de uma subrotina com W = k Return from Subroutine Retorna de uma subrotina Rotação para esquerda * d = f << 1 (onde d pode ser W ou f) Rotação para direita * d = f >> 1 (onde d pode ser W o f) Go into Standby Mode Coloca em standby o PIC Subtrai W de Literal W=k-W Subtrai W de f * d = f - W (onde d pode ser W ou f) Swap f f = Swap do bit 0123 com 4567 de f Load TRIS Register TRIS di f = W Exclusive OR Literal com W W = W XOR k Exclusive OR W com f * d = f XOR W (onde d pode ser W ou f) Tabela 1 – Código padrão para o programa assembly da questão 1 #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMÓRIA (PROGRAMA) #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK 1 DE MAMÓRIA (CONFIGURAÇÃO) CBLOCK 0x20 ; AS VARIÁVEIS DO PROGRAMA DEVEM SER DEFINIDAS AQUI ENDC ORG GOTO 0x00 CONFIGURACAO ORG NOP RETFIE 0x04 ;ENDEREÇO INICIAL DA INTERRUPÇÃO ;RETORNA DA INTERRUPÇÃO CONFIGURACAO: BANK1 ;ALTERA PARA O BANCO 1 ; A CONFIGURAÇÃO DOS REGISTRADORES DO BANCO 1 DEVE SER ;INSERIDA AQUI BANK0 ;RETORNA PARA O BANCO 0 INICIO: ;O PROGRAMA PRINCIPAL DEVE SER INSERIDO AQUI END