| Instrucción |
ADDLW |
ADD Literal to W |
|
ADDWF |
ADD W to F |
| Sintaxis |
ADDLW k |
|
ADDWF f,d |
| Codificación |
|
|
| 0001 |
11bf |
|
ffff |
| 00 |
0111 |
dfff |
ffff |
|
| Palabra/Ciclos |
1 / 1 |
|
1/1 |
| Operación |
W + k -> WW + k -> W
W AND f -> W si d=0 |
|
W + f -> f si d=1
W + f -> W si d=0 |
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
X |
X |
X |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
X |
X |
X |
|
| Descripción |
C Se pone a 1 si se
produce un acarreo desde el bit de mayor peso.
DC Se
pone a 1 si se genera un acarreo del bit 3 al bit 4.
Z Se
pone a 1 si el resultado de la operación es cero. Añade
el contenido de W al contenido de k y almacena el resultado en W. Atención:
Esta operación no existe en los PIB12C5XX. |
|
C Se pone a 1 si se
produce un acarreo desde el bit de mayor peso.
DC Se
pone a 1 si se genera un acarreo del bit 3 al bit 4.
Z Se
pone a 1 si el resultado de la operación es cero.
Añade el
contenido de W al contenido de f y almacena el resultado en W si d=0
y en f si d=1.
|
| Ejemplo |
ADDLW 0x15h Si antes de la instrucción:
W = 10h = 0001 0000 b
Al ejecutarse la instrucción: W = 10h + 15h = 25h
W = 0001 0000 b + 0001 0101 b = 0010 0101 b
|
|
ADDWF FSR.0
Si antes de la
instrucción: W = 17h y FSR = C2h como d=0
Al ejecutarse:
W = 17h + C2h = D9h FSR = C2h
|
|
Volver |
| Instrucción |
ANDLW |
AND Literal and W |
|
ANDWF |
AND W with F |
| Sintaxis |
ANDLW k |
|
[Etiqueta] ANDWF f,d |
| Codificación |
| 1110 |
kkkk |
kkkk |
|
| 11 |
1001 |
kkkk |
Kkkk |
|
|
| 0001 |
01df |
ffff |
|
| 00 |
0101 |
dfff |
ffff |
|
| Palabra/Ciclos |
1/1 |
|
1/1 |
| Operación |
W AND k -> W |
|
f entre 0 y 127
b entre 0 y 7
W AND f ->
f si d=1
W AND f -> W si d=0
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
X |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
X |
- |
- |
|
| Descripción |
Z Se pone a 1 si el resultado de la operación es cero.
Ejecuta un AND
lógico entre el contenido de W y el literal k y lo almacena en W.
|
|
Efectúa la operación AND
lógico entre el contenido del W y el contenido de f y
almacena el resultado en W. Si d = 0 o en f si d
=1. Z Se pone a 1 si el resultado de la operación es 0.
|
| Ejemplo |
ANDLW 0x5F
Si antes de la instrucción W = A3h
Al ejecutarse: W = 0101 1111 b AND 1010 0011 b =
= 0000 0011b = 03h
|
|
ANDWF FSR,1
Si antes de la instrucción.
W = 17h = 0001 0111 b y FSR = C2h = 1100 0010 b
Al ejecutarse: W = 17h = 0001 0111 b
FSR = 0001 0111 b AND 1100 0010 b = 0000 0010 b = 02h
|
|
Volver |
| Instrucción |
BCF |
Bit Clear F |
|
BSF |
Bit Set F |
| Sintaxis |
[Etiqueta] BCF f,b |
|
[Etiqueta] BSF f,b |
| Codificación |
| 0100 |
bbbf |
ffff |
|
| 01 |
00bb |
bfff |
ffff |
|
|
| 0100 |
bbbf |
ffff |
|
| 01 |
11bb |
bfff |
ffff |
|
| Palabra/Ciclos |
f
entre 0 y 127 b entre 0 y 7
0
-> b(f)
|
|
f
entre 0 y127 b entre 0 y 7
1
-> b(f)
|
| Operación |
1/1 |
|
1/1 |
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
| Descripción |
Pone a 0 el bit b del archivo f |
|
Pone a 1 el bit b del archivo f
|
| Ejemplo |
BCF
FLAG_REG,7
Si
antes de la instrucción el registro:
FLAG_REG
= C7h = 1100 0111 b
Al
ejecutarse la instrucción, el registro queda con valor:
FLAG_REG
= 47h = 0100 0111b
|
|
Si
antes de la instrucción el registro tiene el valor:
FLAG_REG
= 0Ah = 0000 1010b
Al
ejecutarse la instrucción, el registro queda con valor:
FLAG_REG
= 8Ah = 1000 1010 b
|
|
Volver |
| Instrucción |
BTFSC |
Bit Test, Skip If Clear |
|
BTFSS |
Bit Test, Skip If Set |
| Sintaxis |
[Etiqueta] BTFSC f,b |
|
[Etiqueta] BTFSS f,b |
| Codificación |
| 0110 |
bbbf |
ffff |
|
| 01 |
10bb |
bfff |
ffff |
|
|
| 0111 |
bbbf |
ffff |
|
| 01 |
11bb |
bfff |
ffff |
|
| Palabra/Ciclos |
1/1 o 2 |
|
1/1 o 2 |
| Operación |
f
entre 0 y 127 b entre 0 y 7
Salta
(Skip) si b(f)=0
|
|
f
entre 0 y 127 b entre 0 y 7
Salta
(Skip) si b(f)=1
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
| Descripción |
Si el bit número b del
registro f es cero, la instrucción que sigue a ésta se ignora (Skip)
y se trata como un NOP. En este caso y sólo en este caso, la instrucción
BTFSC precisa de dos ciclos para ejecutarse. |
|
Si el bit número b del
registro f es 1, la instrucción que sigue a ésta se ignora (Skip)
y se trata como un NOP. En este caso y sólo en este caso, la instrucción
BTFSS precisa de dos ciclos para ejecutarse.
|
| Ejemplo |
Aqui
BTFSC FLAG,1
FALSE
GOTO Process_Code TRUE.
Si
antes de la instrucción : PC = dirección Aqui
Al
ejecutarse: if FLAG <1> = 0, PC = dirección TRUE
if
FLAG <1> = 1, PC = dirección FALSE
|
|
Aqui BTFSS FLAG,1
FALSE GOTO Process_Code TRUE.
Si antes de la instrucción : PC = dirección Aqui
Al
ejecutarse: if FLAG <1> = 0, PC = dirección FALSE
if
FLAG <1> = 1, PC = dirección TRUE
|
|
Volver |
| Instrucción |
CALL |
Subrutina CALL |
|
CLRF |
Clear f with f |
| Sintaxis |
[Etiqueta] CALL k |
|
[Etiqueta] CLRF f |
| Codificación |
| 1001 |
kkkk |
kkkk |
|
| 10 |
0kkk |
kkkk |
kkkk |
|
|
| 0000 |
011f |
ffff |
|
| 00 |
0001 |
1fff |
ffff |
|
| Palabra/Ciclos |
1/2 |
|
1/1 |
| Operación |
k
entre 0 y 2047
Para
los 16c5X: PC + 1 -> Pila, k -> PC(0-7),0 ->PC(8)
PA2
a PA0 -> PC(9-11)
Para
los 16c64, 71, 74, 84
PC
+1 -> Pila, k -> PC(0-10), PCLATH(3,4) -> PC(11,12)
|
|
f
entre 0 y 127
00h
-> f
1
-> Z
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
1 |
- |
- |
|
| Descripción |
Guarda la dirección de vuelta en la
Pila y después llama a la subrutina situada en la dirección cargada en
el PC.
Atención: El modo de cálculo de la
dirección difiere según la familia PIC utilizada. También hay que
posicionar bien PA2, PA1, PA0 (16c5X) o el registro PCLATH (en los demás
PIC), antes de ejecutar la instrucción CALL.
|
|
Pone el contenido del registro f
a cero y activa el bit [Flag] Z.
Z se pone a 1 si el resultado
de la operación es 0.
|
| Ejemplo |
Aqui
CALL THERE
Si
antes de la instrucción: PC = dirección Aqui
Al
ejecutarse: PC = dirección (THERE)
TOS
= dirección (Aqui + 1)
|
|
CLRF REG
Si antes de la instrucción. REG =5Ah
Al ejecutarse REG =
00h
Flag Z = 1
|
|
Volver |
| Instrucción |
CLRW |
Clear register W |
|
CLRWDT |
Clear Watchdog Timer |
| Sintaxis |
[Etiqueta] CLRW |
|
[Etiqueta] CLRWDT |
| Codificación |
| 0000 |
0100 |
0000 |
|
| 00 |
0001 |
0000 |
0011 |
|
|
| 0000 |
0000 |
0100 |
|
| 00 |
0000 |
0110 |
0100 |
|
| Palabra/Ciclos |
1/1 |
|
1/1 |
| Operación |
00 -> W
1 -> Z
|
|
00 -> WDT y 0 -> predivisor del
temporizador.
Los bits TO# y PD# del registro State
se ponen a 1.
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
1 |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
1 |
- |
- |
|
| Descripción |
Pone el registro W a 00h y
pone a 1 el bit [flag] Z, si el resultado de la operación 0.
|
|
Pone a 00h el registro WDT contador
del temporizador Watchdog, así como el predivisor.
TO# y PD# se ponen a 1 cuando
se ejecuta la instrucción CLRWDT o SLEEP.
TO# se pone a 0 si el temporizador
Watchdog se desborda.
|
| Ejemplo |
CLRW
Si antes de la instrucción. W = 5Ah
Al ejecutarse: W = 00h
flag Z = 1
|
|
CLRWDT
Si antes de ejecutarse la
instrucción: WDT = ?
Al ejecutarse: WDT = 00h
Preescaler WDT = 0
bit de estado TO = 1
bit de estado PD = 1
|
|
Volver |
| Instrucción |
COMF |
Complement F |
|
DECF |
Decrement F to F |
| Sintaxis |
[Etiqueta] COMF f,d |
|
[Etiqueta] DECF f,d |
| Codificación |
| 0010 |
01df |
ffff |
|
| 00 |
1001 |
dfff |
ffff |
|
|
| 0000 |
11df |
ffff |
|
| 00 |
0011 |
dfff |
ffff |
|
| Palabra/Ciclos |
1/1 |
|
1/1 |
| Operación |
si d = 1 ~f ->
f f entre 0 y
127
si d = 0 ~f -> W
|
|
f - 1 ->
f si d =
1 f
entre 0 y 127
f - 1 -> W si d =
0
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
X |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
X |
- |
- |
|
| Descripción |
Complementa el contenido del registro
f bir a bit. El resultado lo almacena de nuevo en f si d = 1
(borra lo anterior) o en W si d = 0 (f no varía).
Z se pone a 1 si el resultado
de la operación es 0. |
|
Decrementa el contenido del registro f
en una unidad. El resultado se guarda en W si d=0 (f no
varía) o en f si d=1.
Z Se pone a 1 si el resultado
de la operación es 0.
|
| Ejemplo |
COMF REG1,0
Si antes de la instrucción: REG1 =
13h como d = 0
Al ejecutarse: REG1 = 13h = 0001 0011
b
W = ECh = 1110 1100
b flag Z
= 0
|
|
DECF CNT,1
Si antes de la instrucción: CNT =
01h Z = 0
Al ejecutarse: CNT = 00h
bit [flag] Z = 1
|
|
Volver |
| Instrucción |
DECFSZ |
Decrement F, Skip If Zero |
|
GOTO |
Salto Incondicional with F |
| Sintaxis |
[Etiqueta] DECFSZ f, d |
|
GOTO k |
| Codificación |
| 0010 |
11df |
ffff |
|
| 00 |
1011 |
dfff |
ffff |
|
|
| 101k |
kkkk |
kkkk |
|
| 10 |
1kkk |
kkkk |
kkkk |
|
| Palabra/Ciclos |
1,1 (2) |
|
1/2 |
| Operación |
f - 1 -> f
si d=1 ; f entre 0 y 127
salta si d= 0 ; f - 1 -> W
|
|
En el caso de los 16c5X:
k -> PC(0-8), PA2 PA1, PA0 -> PC(9-11)
En el caso de los 16c64,71,74 y 84:
k -> PC(0-10), PCLATH(3,4) -> PC(11,12)
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
| Descripción |
Decrementa el contenido del registro f
en una unidad. El resultado se guarda en W si d=0 (f no
varia) y en f si d=1
Si el resultado es nulo, se ignora la siguiente instrucción y en ese caso
la instrucción dura dos ciclos.
|
|
Llama la subrutina situada en la
dirección cargada en el registro PC
Atención: El modo de cálculo de la
dirección difiere según la familia de PIC utilizada. También hay que
posicionar correctamente PA2, PA1, PA0 (16c5X) o la parte baja de k, se
carga en PCL y la alta en PCLATH (en los demás PIC) antes de ejecutar la
instrucción GOTO. Se trata de un salto incondicional.
|
| Ejemplo |
AQUI DECFSZ CNT,1
GOTO LOOP CONTINUE;
Si antes de la instrucción: PC = dirección AQUI
Al ejecutarse: CNT = CNT -1
Si CNT = 0 entonces PC = dirección CONTINUE
Si CNT no = 0 entonces PC = dirección AQUI + 1
|
|
- Ocupa 2 ciclos de reloj. Ejemplo:
GOTO retardo1
Antes: PC = Origen
Después: PC = Destino (retardo1)
|
|
Volver |
| Instrucción |
INCF |
Incremento F |
|
INCFSZ |
Incrementa F, Skip (salta) if Zero |
| Sintaxis |
INCF f, d |
|
INCFSZ f, d |
| Codificación |
| 0010 |
10df |
ffff |
|
| 00 |
1010 |
dfff |
ffff |
|
|
| 0011 |
11df |
ffff |
|
| 00 |
1111 |
dfff |
ffff |
|
| Palabra/Ciclos |
1/1 |
|
1/1(2) |
| Operación |
f + 1 -> f si d=1
f + 1 -> W si d=0
|
|
d = [0,1],
f entre 0 y 127
f + 1 -> f si d=1
f + 1 -> W si d=0
En ambos casos: Salta si f + 1 = 0
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
1 |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
| Descripción |
Incrementa en 1 el contenido de f. El
resultado se almacena de nuevo en f, si d=1, o en W si d=0 (en este caso f
no varía)
|
|
Incrementa el contenido de f en una
unidad. El resultado se guarda de nuevo en f si d=1, o si d=0 en W (en
este caso f no varia). Si el resultado es nulo, salta la siguiente
instrucción y en este caso, esta instrucción dura dos ciclos
|
| Ejemplo |
|
|
|
|
Volver |
| Instrucción |
IORLW |
Inclusive OR Literal con W |
|
IORWF |
Inclusive OR W With f |
| Sintaxis |
IORLW k |
|
IORWF f, d |
| Codificación |
| 1101 |
kkkk |
kkkk |
|
| 11 |
1000 |
kkkk |
kkkk |
|
|
| 0001 |
00df |
ffff |
|
| 00 |
0100 |
dfff |
ffff |
|
| Palabra/Ciclos |
1/1 |
|
1/1 |
| Operación |
W OR k -> W
k entre 0 y 255
|
|
W OR f -> f si d=1
f entre 0 y 127
W OR f -> W si d=0
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
1 |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
1 |
- |
- |
|
| Descripción |
Efectúa un OR lógico inclusivo
entre el contenido de W y el literal k y almacena el resultado en W
|
|
Efectúa un OR lógico inclusivo
entre el contenido de W y el contenido de f y almacena el resultado en f,
si d=1 o en W si d=0
|
| Ejemplo |
IORLW 0x35 =
00110101
Antes: W = 0x9Ah =
10011010
Después: W = 0xBFh = 10111111
|
|
IORWF Reg,0
Antes: W=0x91, Reg=0x13
Después: W=0x93, Reg=0x13
|
|
Volver |
| Instrucción |
MOVF |
MOVE F |
|
MOVLW |
Move Literal to W with F |
| Sintaxis |
MOVF f,d |
|
MOVLW f |
| Codificación |
| 0010 |
00df |
ffff |
|
| 00 |
1000 |
dfff |
ffff |
|
|
| 1100 |
kkkk |
kkkk |
|
| 11 |
00xx |
kkkk |
kkkk |
|
| Palabra/Ciclos |
1/1 |
|
1/1 |
| Operación |
f -> f si d=1
f entre 0 y 127
f -> W si d=0
|
|
k -> W
f entre 0 y 127
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
1 |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
| Descripción |
Pone el contenido de f en f, si
d=1 o f en W
si d=0 ; Pone Z a 1 si operación = 0
Atención: El desplazamiento de f en f
que parecería inútil, permite comprobar el contenido de f con respecto a
cero ya que esta instrucción afecta sobre el bit Z
|
|
Carga W con el literal k
|
| Ejemplo |
MOVF Reg,0
Después: W = al valor del Reg
|
|
MOVLW 0x5A
Después: Reg = 0x4F, W = 0x5A
|
|
Volver |
| Instrucción |
MOVWF |
Move W to F |
|
NOP |
No Operation |
| Sintaxis |
MOVWF W,f |
|
NOP |
| Codificación |
| 0000 |
001f |
ffff |
|
| 00 |
0000 |
1fff |
ffff |
|
|
| 0000 |
0000 |
0000 |
|
| 00 |
0000 |
0xx0 |
0000 |
|
| Palabra/Ciclos |
1/1 |
|
1/1 |
| Operación |
W -> f f
entre 0 y 127 |
|
Ninguna |
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
| Descripción |
Carga f con el contenido de W |
|
Consume un ciclo de maquina y ocupa
un lugar en la memoria de programa. Se usa para hacer retardos.
|
| Ejemplo |
MOVWF Reg,0
Antes: Reg = 0xFF, W =
0x4F
Después: Reg =0x4F , W = 0x4F
|
|
|
|
Volver |
| Instrucción |
OPTION |
Load Option Register |
|
RETFIE |
Return From Interrupt |
| Sintaxis |
OPTION |
|
RETFIE |
| Codificación |
| 0000 |
0000 |
0010 |
|
| 00 |
0000 |
0110 |
0010 |
|
|
|
| Palabra/Ciclos |
1/1 |
|
1/2 |
| Operación |
W -> OPTION |
|
Pila -> PC, 1 -> GIE |
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
| Descripción |
Carga el registro OPTION con el
contenido de W.
Atención: Esta instrucción no debe
utilizarse en otros chips que no sean los PIC 16c5x. Sin embargo, es
correctamente interpretada por los chips 16c64, 71, 74, 84 con el fin
de asegurar una compatibilidad ascendente.
|
|
Carga el PC con el valor que se
encuentra en la parte superior de la pila, asegurando así la vuelta de la
interrupción. Pone a 1 el bit GIE, con el fin de autorizar de nuevo que
se tengan en cuenta las interrupciones
Atención: Esta interrupción dura dos
ciclos. Esta instrucción no existe para los PIC 16c5X. TOS = top of stack
|
| Ejemplo |
|
|
RETFIE
Al ejecutarse: PC = TOS
GIE = 1
|
|
Volver |
| Instrucción |
RETLW |
Return with Literal in W |
|
RETURN |
Return from Subroutine with F |
| Sintaxis |
RETLW |
|
RETURN |
| Codificación |
|
|
|
| Palabra/Ciclos |
1/2 |
|
1/2 |
| Operación |
K --> (W); TOS --> PC |
|
Pila -> PC |
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
- |
|
| Descripción |
Carga el registro W con
el literal k y después carga el PC con el valor de la parte
superior de la PILA, efectuando así, un retorno de subrutina.
|
|
Carga el PC con el valor que se
encuentra en la parte superior de la pila, efectuando así una vuelta a la
subrutina. Se trata de la instrucción RETLW simplificada
Atención: Esta instrucción dura dos
ciclos. Esta instrucción no existe en los PIC 12c5XX, usar RETLW
|
| Ejemplo |
|
|
|
|
Volver |
| Instrucción |
RLF |
Rotate Left F through Carry |
|
RRF |
Rotate Right F through Carry |
| Sintaxis |
RLF f,d |
|
RRF f, d |
| Codificación |
| 0011 |
01df |
ffff |
|
| 00 |
1101 |
dfff |
ffff |
|
|
| 0011 |
00df |
ffff |
|
| 00 |
1100 |
dfff |
ffff |
|
| Palabra/Ciclos |
1/1 |
|
1/1 |
| Operación |
ver descripción |
|
ver descripción
|
|
Bit de Estado
Bandera
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
- |
- |
1 |
|
|
|
| PA2 |
PA1 |
PA0 |
TO# |
PD# |
Z |
DC |
C |
| - |
- |
- |
- |
- |
|
|
1 |
|
| Descripción |
Rotación de un bit a la izquierda
del contenido de f, pasando por el bit de acarreo C. Si d=1 el resultado
se almacena en f si d=0 el resultado se almacena en W
|
|
Rotación de un bit a la derecha del
contenido de f, pasando por el bit de acarreo C. Si d=1 el resultado se
introduce en f, si d=0 el resultado se amacena en W
|
| Ejemplo |
RLF Reg1,0 ; d = 0 result. en W
antes: Reg1=1110 0110b ; flag C = 0
después: W =1110 0110b ; flag C = 1
|
|
RRF Reg1,0 ; d = 0
result. en W
antes: Reg1=1110 0110b ; flag C = 1
después: W =1110 0110b ; flag C = 0
|
|
Volver |
| Instrucción |
SLEEP |
Sleep |
|
SUBLW |
Substract W from Literal |
| Sintaxis |
SLEEP |
|
SUBWF f, d |
| Codificación |
| 0000 |
0000 |
0011 |
|
| 00 |
0000 |
0110 |
0011 |
|
|
|