Académique Documents
Professionnel Documents
Culture Documents
Juego de Instrucciones
NDICE
Introduccin .......................................................................................... INS-2
Juego de Instrucciones ......................................................................... INS-3
Formato de Instrucciones ..................................................................... INS-4
Descripcin de Instrucciones................................................................ INS-6
INS-1
Juego de Instrucciones
Introduccin
Cada instruccin de los PIC 16F87X est contenida en una palabra de 14 bits,
formada por el CDIGO DE OPERACIN y uno o ms operandos, dependiendo
del tipo de instruccin. El juego de instrucciones completo de esta familia de
microcontroladores (gama media), se muestra en Tabla 1. Dichas instrucciones
estn organizadas en tres categoras bsicas:
INS-2
Juego de Instrucciones
Nota 1:
Cuando un registro de I/O (ej. un Puerto) es modificado y enviado el resultado a s mismo, el valor usado ser
el presente en sus terminales externos. Por ejemplo, si el terminal 6 del puerto B est configurado como
entrada y conectado a un dispositivo externo que est introduciendo un cero, en las instrucciones MOVF
PORTB, 1, BSF PORTB, 6,etc., el valor del bit 6 del registro PORTB, ser cero.
Nota 2:
Si esta instruccin es ejecutada sobre el registro TMR0, (y d = 1), el prescaler ser borrado si est asignado
a TMR0.
Nota 3:
Si el Contador de Programa (PC) es modificado o un salto condicional es ejecutado, la instruccin requiere dos
ciclos de instruccin. El segundo ciclo es ejecutado como un NOP.
INS-3
Juego de Instrucciones
8
7
6
OPCODE
d
f (FILE #)
d = 0, destino W
d = 1, destino Registro
f = direccin de Registro (7 bits)
10 9
7 6
OPCODE
b (BIT #)
f (FILE #)
d = 0, destino W
d = 1, destino Registro
f = direccin de Registro (7 bits)
8 7
OPCODE
k (literal)
k = valor literal de 8 bit (inmediato)
11 10
OPCODE
k (literal)
k = valor literal de 11 bit (inmediato)
INS-4
Juego de Instrucciones
Descripcin
x
d
Cualquier valor (0 o 1)
Para mantener la compatibilidad con las herramientas de
Microchip, se recomienda hacer x = 0
Seleccin de destino.
d = 0 : guarda resultado en W
d = 1 : guarda resultado en registro f.
label
Nombre de etiqueta
TOS
PC
PCLACH
(Program Counter High Latch) Latch que contiene la parte alta del
PC (8 bit)
GIE
WDT
TO
PD
[ ]
Opcional
( )
Contenido
Asignado a
<>
itlicas
Pertenece al conjunto de
Trminos definidos por el usuario
INS-5
Juego de Instrucciones
ADDLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
111x
kkkk
kkkk
Descripcin:
ADDLW
Lectura del
literal k
Proceso de
dato
Escritura en
registro W
0x15
Antes de la Instruccin
W = 0x10
Despus de la instruccin
W = 0x25
Ejemplo 2
ADDLW
MIREG
Antes de la Instruccin
W = 0x10
Direccin de MIREG = 0x37
(MIREG es un registro definido en la memoria de datos)
Despus de la instruccin
W = 0x47
Ejemplo 3
ADDLW
HIGH (LU_TABLA)
Antes de la Instruccin
W = 0x10
Direccin de LU_TABLA = 0x9375
(LU_TABLA es una etiqueta del programa una direccin de memoria )
Despus de la instruccin
W = 0xA3
Ejemplo 4
ADDLW
PCL
Antes de la Instruccin
W = 0x10
Direccin de PCL = 0x02
(PCL es el registro que contiene la parte baja del PC)
Despus de la instruccin
W = 0x12
INS-6
Juego de Instrucciones
ADDWF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Add W and f
[etiqueta] ADDWF
0 f 127
d [0,1]
(W) + (f) destino
C, DC, Z
00
0111
f,d
dfff
ffff
Descripcin:
Ejemplo 1
ADDWF
Lectura de
registro f
Proceso de
dato
Escritura en
destino
FSR, 0
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Despus de la instruccin
W = 0xD9
FSR = 0xC2
Ejemplo 2
ADDWF
INDF, 1
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x20
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x37
Ejemplo 3
Caso 1:
Caso 2:
ADDWF
PCL
Antes de la Instruccin
W = 0x10
PCL = 0x37
C = x
Despus de la instruccin
PCL = 0x47
C = 0
Antes de la Instruccin
W = 0x10
PCL = 0xF7
PCH = 0x08
C
= x
Despus de la instruccin
PCL = 0x07
PCH = 0x08
C
= 1
INS-7
Juego de Instrucciones
ANDLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
1001
kkkk
kkkk
Descripcin:
Ejemplo 1
ANDLW
Lectura del
literal k
Proceso de
dato
0x5F
Antes de la Instruccin
W = 0xA3
Despus de la instruccin
W = 0x03
Ejemplo 2
ADDLW
Escritura en
registro W
; 0101 1111
; 1010 0011
; --------------; 0000 0011
(0x5F)
(0xA3)
--------(0x03)
MIREG
Antes de la Instruccin
W = 0xA3
Direccin de MIREG = 0x37
(MIREG es un registro definido en la memoria de datos)
Despus de la instruccin
W = 0x23
Ejemplo 3
ADDLW
HIGH (LU_TABLA)
Antes de la Instruccin
W = 0xA3
Direccin de LU_TABLA = 0x9375
(LU_TABLA es una etiqueta del programa una direccin de memoria )
Despus de la instruccin
W = 0x83
INS-8
Juego de Instrucciones
ANDWF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
And W with f
[etiqueta] ANDWF
f,d
0 f 127
d [0,1]
(W) AND (f) destino
Z
00
0101
dfff
ffff
Descripcin:
Ejemplo 1
ANDWF
Lectura de
registro f
Proceso de
dato
FSR, 1
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Despus de la instruccin
W = 0x17
FSR = 0x02
Ejemplo 2
ANDWF
ANDWF
; 0001 0111
; 1100 0010
; --------------; 0000 0010
(0x17)
(0xC2)
--------(0x02)
; 0001 0111
; 1100 0010
; --------------; 0000 0010
(0x17)
(0xC2)
--------(0x02)
FSR, 0
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Despus de la instruccin
W = 0x02
FSR = 0xC2
Ejemplo 3
Escritura en
destino
INDF, 1
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x5A
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x15
INS-9
Juego de Instrucciones
BCF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Bit Clear f
[etiqueta] BCF
0 f 127
0b7
0 f <b>
Ninguno
01
f,b
00bb
bfff
ffff
Descripcin:
El bit b del registro f es puesto a cero (borrado)
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1
BCF
Lectura de
registro f
Proceso de
dato
FLAG_REG, 7
Antes de la Instruccin
FLAG_REG = 0xC7
Despus de la instruccin
FLAG_REG = 0x47
Ejemplo 2
BCF
Escritura en
registro f
; 1100 0111
; 0100 0111
INDF, 3
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x2F
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x27
INS-10
Juego de Instrucciones
BSF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Bit Set f
[etiqueta] BSF
0 f 127
0b7
1 f <b>
Ninguno
Codificacin:
01
f,b
01bb
bfff
ffff
Descripcin:
El bit b del registro f es puesto a 1 (set)
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Decodifica
cin
Ejemplo 1
BSF
Lectura de
registro f
Proceso de
dato
BSF
Escritura en
registro f
FLAG_REG, 7
Antes de la Instruccin
FLAG_REG = 0x0A
Despus de la instruccin
FLAG_REG = 0x8A
Ejemplo 2
Q4
; 0000 1010
; 1000 1010
INDF, 3
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x20
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x28
INS-11
Juego de Instrucciones
BTFSC
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
10bb
f,b
bfff
ffff
Descripcin:
Lectura de
registro f
Proceso de
dato
No
operacin
Q3
Q4
No
operacin
No
operacin
Ejemplo 1
No
operacin
AQUI
BTFSC
FLAG, 4
FALSO
GOTO
PROCESO
VERDAD
Caso 1
Antes de la Instruccin
PC = direccin AQUI
FLAG= xxx0 xxxx
Despus de la instruccin
PC = direccin VERDAD
Caso 2
Antes de la Instruccin
PC = direccin AQUI
FLAG= xxx1 xxxx
Despus de la instruccin
PC = direccin FALSO
INS-12
Juego de Instrucciones
BTFSS
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
11bb
f,b
bfff
ffff
Descripcin:
Lectura de
registro f
Proceso de
dato
No
operacin
Q3
Q4
No
operacin
No
operacin
Ejemplo 1
No
operacin
AQUI
BTFSS
FLAG, 4
FALSO
GOTO
PROCESO
VERDAD
Caso 1
Antes de la Instruccin
PC = direccin AQUI
FLAG= xxx0 xxxx
Despus de la instruccin
PC = direccin FALSO
Caso 2
Antes de la Instruccin
PC = direccin AQUI
FLAG= xxx1 xxxx
Despus de la instruccin
PC = direccin VERDAD
INS-13
Juego de Instrucciones
CALL
Sintaxis:
Operandos:
Operacin:
Status afectados:
Call Subrutina
[etiqueta] CALL
k
0 k 2047
(PC) + 1 TOS
k PC <10:0>
(PCLATCH <4:3>) PC <12:11>
Ninguno
Codificacin:
10
0kkk
Kkkk
kkkk
Descripcin:
Lectura del
literal k
Proceso de
dato
No
operacin
Q1
Q2
Q3
Q4
No
operacin
No
operacin
No
operacin
No
operacin
Segundo ciclo:
Ejemplo 1
AQUI
CALL
ALLI
Antes de la Instruccin
PC = direccin AQUI
Despus de la instruccin
TOS = direccin AQU + 1
PC = direccin ALLI
INS-14
Juego de Instrucciones
CLRF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Clear f
[etiqueta] CLRF
0 f 127
00h f
1 Z
Z
00
0001
1fff
ffff
Descripcin:
El contenido del registro f es borrado (puesta a cero) y el bit Z es puesto a 1.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1
CLRF
Lectura de
registro f
Proceso de
dato
Escritura de
registro f
FLAG_REG
Antes de la Instruccin
FLAG_REG = 0x5A
Despus de la instruccin
FLAG_REG = 0x00
Z = 1
Ejemplo 2
CLRF
INDF
Antes de la Instruccin
FSR = 0xC2
Contenido de Direccin (FSR) = 0xAA
Despus de la instruccin
FSR = 0xC2
Contenido de Direccin (FSR) = 0x00
Z = 1
INS-15
Juego de Instrucciones
CLRW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Clear W
[etiqueta] CLRW
Ninguno
00h W
1Z
Z
00
0001
0xxx
xxxx
Descripcin:
El acumulador es borrado (puesta a cero) y el bit Z es puesto a 1.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1
Lectura de
registro W
Proceso de
dato
Escritura de
registro W
CLRW
Antes de la Instruccin
W = 0x5A
Despus de la instruccin
W = 0x00
Z = 1
INS-16
Juego de Instrucciones
CLRWDT
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
0000
0110
0100
Descripcin:
Ejemplo 1
No
operacin
Proceso de
dato
Borrado del
WDT
CLRWDT
Antes de la Instruccin
WDT (contador) = x
WDT (contador prescaler) = x
WDT (prescaler) = 1:128
Despus de la instruccin
WDT (contador) = 0x00
WDT (contador prescaler) = 0
WDT (prescaler) = 1:128
TO = 1
PD = 1
INS-17
Juego de Instrucciones
COMF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Complement f
[etiqueta] COMF
0 f 127
d [0,1]
(f) destino
Z
00
1001
f,d
dfff
ffff
Descripcin:
Ejemplo 1
COMF
Lectura de
registro f
Proceso de
dato
Escritura en
destino
REG1, 0
Antes de la Instruccin
REG1 = 0x13
Despus de la instruccin
REG1 = 0x13
W = 0xEC
Ejemplo 2
COMF
INDF, 1
Antes de la Instruccin
FSR = 0xC2
Contenido de Direccin (FSR) = 0xAA
Despus de la instruccin
FSR = 0xC2
Contenido de Direccin (FSR) = 0x55
Ejemplo 3
COMF
REG1, 1
Antes de la Instruccin
REG1 = 0xFF
Despus de la instruccin
REG1 = 0x00
Z = 1
INS-18
Juego de Instrucciones
DECF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Decrement f
[etiqueta] DECF
0 f 127
d [0,1]
(f) - 1 destino
Z
00
0011
f,d
dfff
ffff
Descripcin:
Ejemplo 1
DECF
Lectura de
registro f
Proceso de
dato
Escritura en
destino
CNT, 1
Antes de la Instruccin
CNT = 0x01
Z = 0
Despus de la instruccin
CNT = 0x00
Z = 1
Ejemplo 2
DECF
INDF, 1
Antes de la Instruccin
FSR = 0xC2
Contenido de Direccin (FSR) = 0x01
Z = 0
Despus de la instruccin
FSR = 0xC2
Contenido de Direccin (FSR) = 0x00
Z = 1
Ejemplo 3
DECF
CNT, 0
Antes de la Instruccin
CNT = 0x10
W = x
Z = 0
Despus de la instruccin
CNT = 0x10
W = 0x0F
Z = 0
INS-19
Juego de Instrucciones
DECFSZ
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Decrement f, Skip if 0
[etiqueta] DECFSZ f,b
0 f 127
d [0,1]
(f) 1 destino; salta si resultado = 0
Ninguno
00
1011
dfff
ffff
Descripcin:
Lectura de
registro f
Proceso de
dato
Escritura en
destino
Q3
Q4
No
operacin
No
operacin
Ejemplo 1
AQUI
CONTINA
No
operacin
DECFSZ
CNT, 1
GOTO
BUCLE
Caso 1
Antes de la Instruccin
PC = direccin AQUI
CNT = 0x01
Despus de la instruccin
CNT = 0x00
PC = direccin CONTINA
Caso 2
Antes de la Instruccin
PC = direccin AQUI
CNT = 0x02
Despus de la instruccin
CNT = 0x01
PC = direccin AQUI + 1
INS-20
Juego de Instrucciones
GOTO
Sintaxis:
Operandos:
Operacin:
Status afectados:
Salto incondicional
[etiqueta] GOTO
k
0 k 2047
k PC <10:0>
PCLATCH <4:3> PC <12:11>
Ninguno
Codificacin:
10
1kkk
Kkkk
kkkk
Descripcin:
Lectura del
literal k
Proceso de
dato
No
operacin
Q1
Q2
Q3
Q4
No
operacin
No
operacin
No
operacin
No
operacin
Segundo ciclo:
Ejemplo 1
GOTO
ALLI
Despus de la instruccin
PC = direccin ALLI
INS-21
Juego de Instrucciones
INCF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Increment f
[etiqueta] INCF
0 f 127
d [0,1]
(f) + 1 destino
Z
00
1010
f,d
dfff
ffff
Descripcin:
Ejemplo 1
INCF
Lectura de
registro f
Proceso de
dato
Escritura en
destino
CNT, 1
Antes de la Instruccin
CNT = 0xFF
Z = 0
Despus de la instruccin
CNT = 0x00
Z = 1
Ejemplo 2
INCF
INDF, 1
Antes de la Instruccin
FSR = 0xC2
Contenido de Direccin (FSR) = 0xFF
Z = 0
Despus de la instruccin
FSR = 0xC2
Contenido de Direccin (FSR) = 0x00
Z = 1
Ejemplo 3
INCF
CNT, 0
Antes de la Instruccin
CNT = 0x10
W = x
Z = 0
Despus de la instruccin
CNT = 0x10
W = 0x11
Z = 0
INS-22
Juego de Instrucciones
INCFSZ
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Increment f, Skip if 0
[etiqueta] INCFSZ
f,b
0 f 127
d [0,1]
(f) + 1 destino; salta si resultado = 0
Ninguno
00
1111
dfff
ffff
Descripcin:
Lectura de
registro f
Proceso de
dato
Escritura en
destino
Q3
Q4
No
operacin
No
operacin
Ejemplo 1
AQUI
CONTINA
No
operacin
INCFSZ
CNT, 1
GOTO
BUCLE
Caso 1
Antes de la Instruccin
PC = direccin AQUI
CNT = 0xFF
Despus de la instruccin
CNT = 0x00
PC = direccin CONTINA
Caso 2
Antes de la Instruccin
PC = direccin AQUI
CNT = 0x00
Despus de la instruccin
CNT = 0x01
PC = direccin AQUI + 1
INS-23
Juego de Instrucciones
IORLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
1000
kkkk
kkkk
Descripcin:
IORLW
Lectura del
literal k
Proceso de
dato
Escritura en
registro W
0x35
Antes de la Instruccin
W = 0x9A
Despus de la instruccin
W = 0xBF
Z = 0
Ejemplo 2
IORLW
MIREG
Antes de la Instruccin
W = 0x9A
Direccin de MIREG = 0x37
(MIREG es un registro definido en la memoria de datos)
Despus de la instruccin
W = 0x9F
Z = 0
Ejemplo 3
IORLW
HIGH (LU_TABLA)
Antes de la Instruccin
W = 0x9A
Direccin de LU_TABLA = 0x9375
(LU_TABLA es una etiqueta del programa una direccin de memoria )
Despus de la instruccin
W = 0x9B
Z = 0
Ejemplo 4
IORLW
0x00
Antes de la Instruccin
W = 0x00
Despus de la instruccin
W = 0x00
Z = 1
INS-24
Juego de Instrucciones
IORWF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Inclusive OR W with f
[etiqueta] IORWF
f,d
0 f 127
d [0,1]
(W) OR (f) destino
Z
00
0100
dfff
ffff
Descripcin:
Ejemplo 1
IORWF
Lectura de
registro f
Proceso de
dato
Escritura en
destino
RESULT, 0
Antes de la Instruccin
RESULT = 0x13
W = 0x91
Despus de la instruccin
RESULT = 0x13
W = 0x93
Z = 0
Ejemplo 2
IORWF
INDF, 1
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x30
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x37
Z
Ejemplo 3
Caso 1:
Caso 2:
IORWF
= 0
RESULT, 1
Antes de la Instruccin
RESULT = 0x13
W = 0x91
Despus de la instruccin
RESULT = 0x93
W = 0x91
Z = 0
Antes de la Instruccin
RESULT = 0x00
W = 0x00
Despus de la instruccin
RESULT = 0x00
W = 0x00
Z = 1
INS-25
Juego de Instrucciones
MOVLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Move Literal to W
[etiqueta] MOVLW
0 k 255
kW
Ninguno
11
00xx
kkkk
kkkk
Descripcin:
El literal k es cargado en el acumulador (registro W).
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1
MOVLW
Lectura del
literal k
Proceso de
dato
Escritura en
registro W
0x5A
Despus de la instruccin
W = 0x5A
Ejemplo 2
MOVLW
MIREG
Antes de la Instruccin
W = 0x10
Direccin de MIREG = 0x37
(MIREG es un registro definido en la memoria de datos)
Despus de la instruccin
W = 0x37
Ejemplo 3
MOVLW
HIGH (LU_TABLA)
Antes de la Instruccin
W = 0x10
Direccin de LU_TABLA = 0x9375
(LU_TABLA es una etiqueta del programa una direccin de memoria )
Despus de la instruccin
W = 0x93
INS-26
Juego de Instrucciones
MOVF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Move f
[etiqueta] MOVF
0 f 127
d [0,1]
(f) destino
Z
00
1000
f,d
dfff
ffff
Descripcin:
Ejemplo 1
MOVF
Lectura de
registro f
Proceso de
dato
Escritura en
destino
FSR, 0
Antes de la Instruccin
W = 0x00
FSR = 0xC2
Despus de la instruccin
W = 0xC2
Z = 0
Ejemplo 2
MOVF
INDF, 0
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x00
Despus de la instruccin
W = 0x00
FSR = 0xC2
Contenido de la direccin (FSR) = 0x00
Z
Ejemplo 3
Caso 1:
Caso 2:
MOVF
= 1
FSR, 1
Antes de la Instruccin
FSR = 0x43
Despus de la instruccin
FSR = 0x43
Z = 0
Antes de la Instruccin
FSR = 0x00
Despus de la instruccin
FSR = 0x00
Z
= 1
INS-27
Juego de Instrucciones
MOVWF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Move W to f
[etiqueta] MOVWF
0 f 127
(W) f
Ninguno
00
0000
1fff
ffff
Descripcin:
Mueve el dato del acumulador (registro W) al registro f.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1
MOVWF
Lectura de
registro f
Proceso de
dato
Escritura en
registro f
OPTION_REG
Antes de la Instruccin
OPTION_REG = 0xFF
W = 0x4F
Despus de la instruccin
OPTION_REG = 0x4F
W = 0x4F
Ejemplo 2
MOVWF
INDF
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x00
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de la direccin (FSR) = 0x17
INS-28
Juego de Instrucciones
NOP
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
No operacin
[etiqueta] NOP
Ninguno
No operacin
Ninguno
00
0000
Descripcin:
No operacin
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Decodifica
cin
Ejemplo 1
AQU
0xx0
0000
Q2
Q3
Q4
No
operacin
No
operacin
No
operacin
NOP
Antes de la Instruccin
PC = direccin Aqui
Despus de la instruccin
PC = direccin Aqui + 1
INS-29
Palabras:
Ciclos:
Juego de Instrucciones
Load Option Register
[etiqueta] OPTION
Ninguno
(W) OPTION
Ninguno
00
0000
0110
0010
Para mantener la compatibilidad con futuros productos PIC, no debe usarse esta instruccin
INS-30
Juego de Instrucciones
RETFIE
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Descripcin:
00
0000
0000
1001
Palabras:
1
Ciclos:
2
Actividad por ciclos de reloj:
Primer ciclo:
Q1
Q2
Q3
Q4
Decodifica
cin
No
operacin
Proceso de
dato
No
operacin
Q1
Q2
Q3
Q4
No
operacin
No
operacin
No
operacin
No
operacin
Segundo ciclo:
Ejemplo
RETFIE
Despus de la instruccin
PC = TOS
GIE = 1
INS-31
Juego de Instrucciones
RETLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
11
01xx
kkkk
kkkk
Descripcin:
Lectura del
literal k
Proceso de
dato
Escritura en
registro W
Q1
Q2
Q3
Q4
No
operacin
No
operacin
No
operacin
No
operacin
AQU
CALL
Segundo ciclo:
Ejemplo
TABLA
TABLA
ADDWF
PC
RETLW
k1
; W = desplazamiento
; comienzo de tabla
RETLW
k2
kn
; Fin de Tabla
RETLW
Antes de la Instruccin
W = 0x07
Despus de la instruccin
W = valor K8
PC = TOS = direccin Aqui + 1
INS-32
Juego de Instrucciones
RETURN
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
00
0000
0000
1000
Descripcin:
No
operacin
Proceso de
dato
No
operacin
Q1
Q2
Q3
Q4
No
operacin
No
operacin
No
operacin
No
operacin
Segundo ciclo:
Ejemplo
AQU
RETURN
Despus de la instruccin
PC = TOS
INS-33
Juego de Instrucciones
RLF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Descripcin:
1101
dfff
ffff
Registro f
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Ejemplo 1
Q1
Q2
Q3
Q4
Decodifica
cin
Lectura de
registro f
Proceso de
dato
Escritura en
destino
RLF
REG1, 0
Antes de la Instruccin
REG1 = 1110 0110
C = 0
Despus de la instruccin
REG1 = 1110 0110
W
= 11001100
C = 1
Ejemplo 2
Caso 1:
RLF
INDF, 1
Antes de la Instruccin
W = xxxx xxxx
FSR = 0xC2
Contenido de Direccin (FSR) = 0011 1010
C = 1
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de Direccin (FSR) = 0111 0101
C = 0
Caso 2:
Antes de la Instruccin
W = xxxx xxxx
FSR = 0xC2
Contenido de Direccin (FSR) = 1011 1001
C = 0
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de Direccin (FSR) = 0111 0010
C = 1
INS-34
Juego de Instrucciones
RRF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Descripcin:
1100
dfff
ffff
Registro f
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Ejemplo 1
Q1
Q2
Q3
Q4
Decodifica
cin
Lectura de
registro f
Proceso de
dato
Escritura en
destino
RRF
REG1, 0
Antes de la Instruccin
REG1 = 1110 0110
W
= xxxx xxxx
C = 0
Despus de la instruccin
REG1 = 1110 0110
W
= 0111 0011
C = 0
Ejemplo 2
Caso 1:
RRF
INDF, 1
Antes de la Instruccin
W = xxxx xxxx
FSR = 0xC2
Contenido de Direccin (FSR) = 0011 1010
C = 1
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de Direccin (FSR) = 1001 1101
C = 0
Caso 2:
Antes de la Instruccin
W = xxxx xxxx
FSR = 0xC2
Contenido de Direccin (FSR) = 0011 1001
C = 0
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de Direccin (FSR) = 0001 1100
C = 1
INS-35
Juego de Instrucciones
SLEEP
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
[etiqueta] SLEEP
Ninguno
00h WDT
0 Prescaler (contador) si est asociado a WDT
1 TO
0 PD
TO, PD
00
0000
0110
0011
Descripcin:
El bit de estado power down (PD) es puesto a cero. El bit de estado time-out
(TO) es pueto a 1. El procesador entra en modo SLEEP y el oscilador del reloj
se para.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo
No
operacin
No
operacin
Modo
SLEEP
SLEEP
INS-36
Juego de Instrucciones
SUBLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
110x
kkkk
kkkk
Descripcin:
SUBLW
Lectura del
literal k
Proceso de
dato
Escritura en
registro W
0x02
Antes de la Instruccin
W = 0x01
C = x
Z = x
Despus de la instruccin
W = 0x01
C = 1
; el resultado es positivo
Z = 0
Caso 2:
Antes de la Instruccin
W = 0x02
C = x
Z = x
Despus de la instruccin
W = 0x00
C = 1
; el resultado es cero
Z = 1
Caso 3:
Antes de la Instruccin
W = 0x03
C = x
Z = x
Despus de la instruccin
W = 0xFF
C = 0
; el resultado es negativo
Z = 0
Ejemplo 2
SUBLW
MIREG
Antes de la Instruccin
W = 0x10
Direccin de MIREG = 0x37
(MIREG es un registro definido en la memoria de datos)
Despus de la instruccin
W = 0x27
C = 1
; el resultado es positivo
INS-37
Juego de Instrucciones
SUBWF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Subtract W from f
[etiqueta] SUBWF
0 f 127
d [0,1]
(f) - (W) destino
C, DC, Z
00
0011
f,d
dfff
ffff
Descripcin:
Ejemplo 1
Caso 1:
SUBWF
Lectura de
registro f
Proceso de
dato
Escritura en
destino
REG1, 1
Antes de la Instruccin
REG1 = 3
W = 2
C = x
Z = x
Despus de la instruccin
REG1 = 1
W = 2
C = 1
; el resultado es positivo
Z = 0
Caso 2:
Antes de la Instruccin
REG1 = 2
W = 2
C = x
Z = x
Despus de la instruccin
REG1 = 0
W = 2
C = 1
; el resultado es cero
Z = 1
Caso 3:
Antes de la Instruccin
REG1 = 1
W = 2
C = x
Z = x
Despus de la instruccin
REG1 = 0xFF
W = 2
C = 0
; el resultado es negativo
Z = 0
INS-38
Juego de Instrucciones
SWAPF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Swap Nibbles in f
[etiqueta] SWAPF
f,d
0 f 127
d [0,1]
(f <3:0>) destino <7:4>
(f <7:4>) destino <3:0>
Ninguno
00
1110
dfff
ffff
Descripcin:
Los bit altos del registro f (f <7:4>) se intercambian por los bit bajos (f <3:0>). Si
d es 0 el resultado se guarda en W. Si es 1, se guarda en f.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1
SWAPF
Lectura de
registro f
Proceso de
dato
Escritura en
destino
REG1, 0
Antes de la Instruccin
REG1 = 0xA5
Despus de la instruccin
REG1 = 0xA5
W
= 0x5A
Ejemplo 2
SWAPF
INDF, 1
Antes de la Instruccin
W = 0x17
FSR = 0xC2
Contenido de Direccin (FSR) = 0x20
Despus de la instruccin
W = 0x17
FSR = 0xC2
Contenido de Direccin (FSR) = 0x02
Ejemplo 3
SWAPF
REG1, 1
Antes de la Instruccin
REG1 = 0xA5
Despus de la instruccin
REG1 = 0x5A
INS-39
Palabras:
Ciclos:
Juego de Instrucciones
Load TRIS Register
[etiqueta] TRIS
f
5f7
(W) TRIS registro f
Ninguno
00
0000
0110
0fff
Para mantener la compatibilidad con futuros productos PIC, no debe usarse esta instruccin
INS-40
Juego de Instrucciones
XORLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
1010
kkkk
kkkk
Descripcin:
XORLW
Lectura del
literal k
Proceso de
dato
0xAF
Antes de la Instruccin
W = 0xB5
Despus de la instruccin
W = 0x1A
Z = 0
Ejemplo 2
XORLW
Escritura en
registro W
; 1010 1111
; 1011 0101
; --------------; 0001 1010
(0xAF)
(0xB5)
--------(0x1A)
MIREG
Antes de la Instruccin
W = 0xAF
Direccin de MIREG = 0x37
(MIREG es un registro definido en la memoria de datos)
Despus de la instruccin
W = 0x18
Z = 0
Ejemplo 3
XORLW
HIGH (LU_TABLA)
Antes de la Instruccin
W = 0xAF
Direccin de LU_TABLA = 0x9375
(LU_TABLA es una etiqueta del programa una direccin de memoria )
Despus de la instruccin
W = 0x3C
Z = 0
INS-41
Juego de Instrucciones
XORWF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Exclusive OR W with f
[etiqueta] XORWF
f,d
0 f 127
d [0,1]
(W) XOR (f) destino
Z
00
0110
dfff
ffff
Descripcin:
Ejemplo 1
XORWF
Lectura de
registro f
Proceso de
dato
REG, 1
Antes de la Instruccin
REG = 0xAF
W
= 0xB5
Despus de la instruccin
REG = 0x1A
W
= 0xB5
Ejemplo 2
XORWF
XORWF
; 1010 1111
; 1011 0101
; --------------; 0001 1010
(0xAF)
(0xB5)
--------(0x1A)
; 1010 1111
; 1011 0101
; --------------; 0001 1010
(0xAF)
(0xB5)
--------(0x1A)
REG, 0
Antes de la Instruccin
REG = 0xAF
W
= 0xB5
Despus de la instruccin
REG = 0xAF
W
= 0x1A
Ejemplo 3
Escritura en
destino
INDF, 1
Antes de la Instruccin
W = 0xB5
FSR = 0xC2
Contenido de la direccin (FSR) = 0xAF
Despus de la instruccin
W = 0xB5
FSR = 0xC2
Contenido de la direccin (FSR) = 0x15
INS-42