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