pic Jul. 2016 | Page 39

4.3 Repertorio de instrucciones de la gama media ADDLW Suma un literal ADDWF W+F ANDLW W AND literal Sintaxis: [label] ADDLW k Operandos: 0 ≤ k ≤ 255 Operación: : (W) + (k)⇒ (W) Flags afectados: C, DC, Z Código OP: 11 111x kkkk kkkk Sintaxis: [label] ADDWF f,d Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: (W) + (f) ⇒ (dest) Flags afectados: C, DC, Z Código OP: 00 0111 dfff ffff Sintaxis: [label] ANDLW k Operandos: 0 ≤ k ≤ 255 Operación: : (W) AND (k)⇒ (W) Flags afectados: Z Código OP: 11 1001 kkkk kkkk Descripción: Suma el contenido del registro W y k, guardando el resultado en W. Descripción: Suma el contenido del registro W y el registro f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Descripción: Realiza la operación lógica AND entre el contenido del regist ro W y k, guardando el resultado en W. Ejemplo: Ejemplo: Ejemplo: ADDLW 0xC2 Antes: W = 0x17 Después: W = 0xD9 ANDWF W AND F ADDWF REG,0 Antes: W = 0x17., REG = 0xC2 Después: W = 0xD9, REG = 0xC2 BCF Borra un bit ADDLW 0xC2 Antes: W = 0x17 Después: W = 0xD9 BSF Activa un bit Sintaxis: [label] ANDWF f,d Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: (W) AND (f) ⇒ (dest) Flags afectados: Z Código OP: 00 0101 dfff ffff Sintaxis: [label] BCF f,b Operandos: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7 Operación: : 0 ⇒ (f) Flags afectados: Ninguno Código OP: 01 00bb bfff ffff Sintaxis: [label] BSF f,b Operandos: 0 ≤ f ≤ 127, , 0 ≤ b ≤ 7 Operación: 1 ⇒ (f) Flags afectados: Ninguno Código OP: 01 01bb bfff ffff Descripción: Realiza la operación lógica AND entre los registros W y f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. ANDWF REG,0 Ejemplo: : Descripción: Borra el bit b del registro f Descripción: Activa el bit b del registro f Antes: W = 0x17., REG = 0xC2 Después: W = 0x17, REG = 0x02 BCF REG,7 Ejemplo: : Antes: REG = 0xC7 Después: REG = 0x47 Ejemplo: : BSF REG,7 Antes: REG = 0x0A Después: REG = 0x8A BTFSC Test de bit y salto BTFSS Test de bit y salto CALL Sintaxis: [label] BTFSC f,d Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: Salto si (f) = 0 Flags afectados: Ninguno Código OP: 01 10bb bfff ffff Sintaxis: [label] BTFSS f,d Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: Salto si (f) = 1 Flags afectados: Ninguno Código OP: 01 11bb bfff ffff Sintaxis: [label] CALL k Operandos: 0 ≤ k ≤ 2047 Operación: PC ⇒ Pila; k ⇒ PC Flags afectados: Ninguno Código OP: 10 0kkk kkkk kkkk Descripción: Si el bit b del registro f es 0, se salta una instrucción y se continúa con la ejecución. En caso de salto, ocupará dos ciclos de reloj. Descripción: Si el bit b del registro f es 1, se salta una instrucción y se continúa con la ejecución. En caso de salto, ocupará dos ciclos de reloj. Descripción: Salto a una subrutina. La parte baja de k se carga en PCL, y la alta en PCLATCH. Ocupa 2 ciclos de reloj. Ejemplo: Ejemplo: Ejemplo:ORIGEN CALL DESTINO BTFSC REG,6 GOTO NO_ES_0 SI_ES_0 Instrucción NO_ES_0 Instrucción BTFSS REG,6 GOTO NO_ES_0 SI_ES_0 Instrucción NO_ES_0 Instrucción 37 Salto a subrutina Antes: PC = ORIGEN Después: PC = DESTINO