Sie sind auf Seite 1von 5

ADDLW Suma un literal ADDWF W+F ANDLW W AND literal

Sintaxis: [label] ADDLW k Sintaxis: [label] ADDWF f,d Sintaxis: [label] ANDLW k
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ k ≤ 255
Operación: : (W) + (k)⇒ (W) Operación: (W) + (f) ⇒ (dest) Operación: : (W) AND (k)⇒ (W)
Flags afectados: C, DC, Z Flags afectados: C, DC, Z Flags afectados: Z
Código OP: 11 111x kkkk kkkk Código OP: 00 0111 dfff ffff Código OP: 11 1001 kkkk kkkk

Descripción: Suma el contenido del Descripción: Suma el contenido del Descripción: Realiza la operación
registro W y k, guardando el registro W y el registro f. Si d es 0, el lógica AND entre el contenido del
resultado en W. resultado se almacena en W, si d es 1 registro W y k, guardando el
se almacena en f. resultado en W.

Ejemplo: ADDLW 0xC2 Ejemplo: ADDWF REG,0 Ejemplo: ADDLW 0xC2

Antes: W = 0x17 Antes: W = 0x17., REG = 0xC2 Antes: W = 0x17


Después: W = 0xD9 Después: W = 0xD9, REG = 0xC2 Después: W = 0xD9

ANDWF W AND F BCF Borra un bit BSF Activa un bit

Sintaxis: [label] ANDWF f,d Sintaxis: [label] BCF f,b Sintaxis: [label] BSF f,b
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7 Operandos: 0 ≤ f ≤ 127, , 0 ≤ b ≤
Operación: (W) AND (f) ⇒ (dest) Operación: : 0 ⇒ (f<b>) 7
Flags afectados: Z Flags afectados: Ninguno Operación: 1 ⇒ (f<b>)
Código OP: 00 0101 dfff ffff Código OP: 01 00bb bfff ffff Flags afectados: Ninguno
Código OP: 01 01bb bfff ffff
Descripción: Realiza la operación Descripción: Borra el bit b del
lógica AND entre los registros W y f. registro f Descripción: Activa el bit b del
Si d es 0, el resultado se almacena en registro f
W, si d es 1 se almacena en f.
Ejemplo: : ANDWF REG,0 Ejemplo: : BCF REG,7
Ejemplo: : BSF REG,7
Antes: W = 0x17., REG = 0xC2 Antes: REG = 0xC7
Después: W = 0x17, REG = 0x02 Después: REG = 0x47 Antes: REG = 0x0A
Después: REG = 0x8A

BTFSC Test de bit y salto BTFSS Test de bit y CALL Salto a subrutina
salto
Sintaxis: [label] BTFSC f,d Sintaxis: [label] CALL k
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Sintaxis: [label] BTFSS f,d Operandos: 0 ≤ k ≤ 2047
Operación: Salto si (f<b>) = 0 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: PC ⇒ Pila; k ⇒ PC
Flags afectados: Ninguno Operación: Salto si (f<b>) = 1 Flags afectados: Ninguno
Código OP: 01 10bb bfff ffff Flags afectados: Ninguno Código OP: 10 0kkk kkkk kkkk
Código OP: 01 11bb bfff ffff
Descripción: Si el bit b del registro f Descripción: Salto a una subrutina.
es 0, se salta una instrucción y se Descripción: Si el bit b del registro f La parte baja de k se carga en PCL, y
continúa con la ejecución. En caso de es 1, se salta una instrucción y se la alta en PCLATCH. Ocupa 2 ciclos
salto, ocupará dos ciclos de reloj. continúa con la ejecución. En caso de de reloj.
Ejemplo: BTFSC REG,6 salto, ocupará dos ciclos de reloj. Ejemplo:ORIGEN CALL DESTINO
GOTO NO_ES_0 Ejemplo: BTFSS REG,6
SI_ES_0 Instrucción GOTO NO_ES_0 Antes: PC = ORIGEN
NO_ES_0 Instrucción SI_ES_0 Instrucción Después: PC = DESTINO
CLRF Borra un registro CLRW Borra el registro W CLRWDT Borra el WDT

Sintaxis: [label] CLRF f Sintaxis: [label] CLRW Sintaxis: [label] CLRWDT


Operandos: 0 ≤ f ≤ 127 Operandos: Ninguno Operandos: Ninguno
Operación: : 0x00 ⇒ (f), 1 ⇒ Z Operación: : 0x00 ⇒ W, 1 ⇒ Z Operación: 0x00 ⇒ WDT, 1 ⇒ /TO
Flags afectados: Z Flags afectados: Z 1 ⇒ /PD
Código OP: 00 0001 1fff ffff Código OP: 00 0001 0xxx xxxx Flags afectados: /TO, /PD
Código OP: 00 0000 0110 0100
Descripción: El registro f se carga Descripción: El registro de trabajo Descripción: Esta instrucción borra
con 0x00. El flag Z se activa. W se carga con 0x00. El flag Z se tanto el WDT como su preescaler.
activa. Los bits /TO y /PD del registro de
estado se ponen a 1.
Ejemplo: : CLRF REG Ejemplo: : CLRW Ejemplo: : CLRWDT
Después: Contador WDT = 0,
Antes: REG = 0x5A Antes: W = 0x5A Preescales WDT = 0,
Después: REG = 0x00, Z = 1 Después: W = 0x00, Z = 1 /TO = 1, /PD = 1

COMF Complemento de f DECF Decremento de f DECFSZ Decremento y salto

Sintaxis: [label] COMF f,d Sintaxis: [label] DECF f,d Sintaxis: [label] DECFSZ f,d
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: : (/ f), 1 ⇒ (dest) Operación: : (f ) – 1 ⇒ (dest) Operación: (f) -1 ⇒ d; Salto si R=0
Flags afectados: Z Flags afectados: Z Flags afectados: Ninguno
Código OP: 00 1001 dfff ffff Código OP: 00 0011 dfff ffff Código OP: 00 1011 dfff ffff

Descripción: El registro f es Descripción: Decrementa en 1 el Descripción: Decrementa el


complementado. El flag Z se activa si contenido de f. Si d es 0, el resultado contenido del registro f. Si d es 0, el
el resultado es 0. Si d es 0, el se almacena en W, si d es 1 se resultado se almacena en W, si d es 1
resultado se almacena en W, si d es 1 almacena en f. se almacena en f. Si la resta es 0 salta
se almacena en f.. la siguiente instrucción, en cuyo caso
Ejemplo: : COMF REG,0 Ejemplo: : DECF CONT,1 costaría 2 ciclos.
Ejemplo: DECFSC REG,0
Antes: REG = 0x13 Antes: CONT = 0x01, Z = 0 GOTO NO_ES_0
Después: REG = 0x13, W = 0XEC Después: CONT = 0x00, Z = 1 SI_ES_0 Instrucción
NO_ES_0 Salta instrucción anterior

GOTO Salto incondicional INCF Decremento de f INCFSZ Incremento y salto

Sintaxis: [label] GOTO k Sintaxis: [label] INCF f,d Sintaxis: [label] INCFSZ f,d
Operandos: 0 ≤ k ≤ 2047 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: k ⇒ PC <8:0> Operación: : (f ) + 1 ⇒ (dest) Operación: (f) -1 ⇒ d; Salto si R=0
Flags afectados: Ninguno Flags afectados: Z Flags afectados: Ninguno
Código OP: 10 1kkk kkkk kkkk Código OP: 00 1010 dfff ffff Código OP: 00 1111 dfff ffff

Descripción: Se trata de un salto Descripción: Incrementa en 1 el Descripción: Incrementa el


incondicional. La parte baja de k se contenido de f. Si d es 0, el resultado contenido del registro f. Si d es 0, el
carga en PCL, y la alta en se almacena en W, si d es 1 se resultado se almacena en W, si d es 1
PCLATCH. Ocupa 2 ciclos de reloj. almacena en f. se almacena en f. Si la resta es 0 salta
Ejemplo: ORIGEN GOTO DESTINO Ejemplo: : INCF CONT,1 la siguiente instrucción, en cuyo caso
costaría 2 ciclos.
Antes: PC = ORIGEN Antes: CONT = 0xFF, Z = 0 Ejemplo: INCFSC REG,0
Después: PC = DESTINO Después: CONT = 0x00, Z = 1 GOTO NO_ES_0
SI_ES_0 Instrucción
NO_ES_0 Salta instrucción anterior
IORLW W OR literal IORWF W AND F MOVLW Cargar literal en W

Sintaxis: [label] IORLW k Sintaxis: [label] IORWF f,d Sintaxis: [label] MOVLW f
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ f ≤ 255
Operación: : (W) OR (k)⇒ (W) Operación: (W) OR (f) ⇒ (dest) Operación: (k) ⇒ (W)
Flags afectados: Z Flags afectados: Z Flags afectados: Ninguno
Código OP: 11 1000 kkkk kkkk Código OP: 00 0100 dfff ffff Código OP: 11 00xx kkkk kkkk

Descripción: Se realiza la operación Descripción: Realiza la operación Descripción: El literal k pasa al


lógica OR entre el contenido del lógica OR entre los registros W y f. registro W.
registro W y k, guardando el Si d es 0, el resultado se almacena en
resultado en W. W, si d es 1 se almacena en f.

Ejemplo: : IORLW 0x35 Ejemplo: : IORWF REG,0 Ejemplo: MOVLW 0x5A

Antes: W = 0x9A Antes: W = 0x91, REG = 0x13 Después: REG = 0x4F, W = 0x5A
Después: W = 0xBF Después: W = 0x93, REG = 0x13

MOVF Mover a f MOVWF Mover a f NOP No operar

Sintaxis: [label] MOVF f,d Sintaxis: [label] MOVWF f Sintaxis: [label] NOP
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ f ≤ 127 Operandos: Ninguno
Operación: (f) ⇒ (dest) Operación: W ⇒ (f) Operación: No operar
Flags afectados: Z Flags afectados: Ninguno Flags afectados: Ninguno
Código OP: 00 1000 dfff ffff Código OP: 00 0000 1fff ffff Código OP: 00 0000 0xx0 0000
Descripción: El contenido del
registro f se mueve al destino d. Si d Descripción: El contenido del Descripción: No realiza operación
es 0, el resultado se almacena en W, registro W pasa el registro f. alguna. En realidad consume un ciclo
si d es 1 se almacena en f. Permite de instrucción sin hacer nada.
verificar el registro, puesto que afecta
a Z.
Ejemplo: MOVF REG,0 Ejemplo: MOVWF REG,0 Ejemplo: : CLRWDT

Después: W = REG Antes: REG = 0xFF, W = 0x4F Después: Contador WDT = 0,


Después: REG = 0x4F, W = 0x4F Preescales WDT = 0,
/TO = 1, /PD = 1

RETFIE Retorno de interrup. RETLW Retorno, carga W RETURN Retorno de rutina

Sintaxis: [label] RETFIE Sintaxis: [label] RETLW k Sintaxis: [label] RETURN


Operandos: Ninguno Operandos: 0 ≤ k ≤ 255 Operandos: Ninguno
Operación: : 1 ⇒ GIE; TOS⇒PC Operación: : (k)⇒ (W); TOS⇒PC Operación: : TOS ⇒ PC
Flags afectados: Ninguno Flags afectados: Ninguno Flags afectados: Ninguno
Código OP: 00 0000 0000 1001 Código OP: 11 01xx kkkk kkkk Código OP: 00 0000 0000 1000

Descripción: El PC se carga con el Descripción: El registro W se carga Descripción: El PC se carga con el


contenido de la cima de la pila con la constante k. El PC se carga contenido de la cima de la pila
(TOS): dirección de retorno. con el contenido de la cima de la pila (TOS): dirección de retorno.
Consume 2 ciclos. Las interrupciones (TOS): dirección de retorno. Consume 2 ciclos.
vuelven a ser habilitadas. Consume 2 ciclos.
Ejemplo: : RETFIE Ejemplo: : RETLW 0x37 Ejemplo: : RETURN

Después: PC = dirección de retorno Después: PC = dirección de retorno Después: PC = dirección de retorno


GIE = 1 W = 0x37
RLF Rota f a la izquierda RRF Rota f a la derecha SLEEP Modo bajo consumo

Sintaxis: [label] RLF f,d Sintaxis: [label] RRF f,d Sintaxis: [label] SLEEP
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: Ninguno
Operación: Rotación a la izquierda Operación: Rotación a la derecha Operación: 0x00⇒WDT, 1 ⇒ / TO
Flags afectados: C Flags afectados: C 0 ⇒ WDT Preescaler, 0 ⇒ / PD
Código OP: 00 1101 dfff ffff Código OP: 00 1100 dfff ffff Flags afectados: / PD, / TO
Código OP: 00 0000 0110 0011
Descripción: El contenido de f se Descripción: El contenido de f se
rota a la izquierda. El bit de menos rota a la derecha. El bit de menos Descripción: El bit de energía se
peso de f pasa al carry (C), y el carry peso de f pasa al carry (C), y el carry pone a 0, y a 1 el de descanso. El
se coloca en el de mayor peso. Si d es se coloca en el de mayor peso. Si d es WDT y su preescaler se borran. El
0, el resultado se almacena en W, si d 0, el resultado se almacena en W, si d micro para el oscilador, llendo al
es 1 se almacena en f. es 1 se almacena en f. modo “durmiente”.

Ejemplo: RRF REG,0 Ejemplo: RRF REG,0 Ejemplo: : SLEEP

Antes: REG = 1110 0110, C = 0 Antes: REG = 1110 0110, C = 1 Preescales WDT = 0,
Después: REG = 1110 0110, Después: REG = 1110 0110, /TO = 1, /PD = 1
W = 1100 1100, C = 1 W = 01110 0011, C = 0

SUBLW Resta Literal - W SUBWF Resta f – W SWAPF Intercambio de f

Sintaxis: [label] SUBLW k Sintaxis: [label] SUBWF f,d Sintaxis: [label] SWAPF f,d
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: ( k ) - (W) ⇒ (W) Operación: ( f ) – (W )⇒ (dest) Operación: : (f <3: 0>)⇔ (f <7:4>)
Flags afectados: Z, C, DC Flags afectados: C, DC, Z Flags afectados: Ninguno
Código OP: 11 110x kkkk kkkk Código OP: 00 0010 dfff ffff Código OP: 00 1110 dfff ffff
Descripción: Mediante el método del Descripción: Mediante el método del
complemento a dos el contenido de complemento a dos el contenido de Descripción: Los 4 bits de más peso
W es restado al literal. El resultado se W es restado al de f. . Si d es 0, el y los 4 de menos son intercambiados.
almacena en W. resultado se almacena en W, si d es 1 Si d es 0, el resultado se almacena en
se almacena en f. W, si d es 1 se almacena en f.

Ejemplos: SUBLW 0x02 Ejemplos: SUBWF REG,1 Ejemplo: : SWAPF REG,0


Antes: REG = 0x03, W = 0x02, C = ?
Antes:W=1,C=?. Después: W=1, C=1 Después:REG=0x01, W = 0x4F, C=1 Antes: REG = 0xA5
Antes:W=2,C=?. Después: W=0, C=1 Antes: REG = 0x02, W = 0x02, C = ? Después: REG = 0xA5, W = 0x5A
Antes:W=3,C=?.Después:W=FF,C=0 Después:REG=0x00, W =0x02, C= 1
(El resultado es negativo) Antes: REG= 0x01, W= 0x02, C= ?
Después:REG=0xFF, W=0x02, C= 0
(Resultado negativo)

XORLW W OR literal XORWF W AND F

Sintaxis: [label] XORLW k Sintaxis: [label] XORWF f,d


La gama media tiene un total
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 de 35 instrucciones, cada una
Operación: : (W) XOR (k)⇒ (W) Operación: (W) XOR (f) ⇒ (dest) de las cuales ocupan 14 bits.
Flags afectados: Z Flags afectados: Z
Código OP: 11 1010 kkkk kkkk Código OP: 00 0110 dfff ffff

Descripción: Se realiza la operación Descripción: Realiza la operación


lógica XOR entre el contenido del lógica XOR entre los registros W y f.
registro W y k, guardando el Si d es 0, el resultado se almacena en
resultado en W. W, si d es 1 se almacena en f.

Ejemplo: : XORLW 0xAF Ejemplo: : XORWF REG,0

Antes: W = 0xB5 Antes: W = 0xB5, REG = 0xAF


Después: W = 0x1A Después: W = 0xB5, REG = 0x1A

Das könnte Ihnen auch gefallen