Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap3 PIC
Cap3 PIC
3.1 Introduccin.
Las caractersticas del juego de instrucciones vienen determinadas por el tipo de arquitectura
que tienen los PIC:
La arquitectura Harvard,
39
f) Instrucciones ortogonales: Son aquellas que permiten trabajar con todos los
registros del sistema y con todos los direccionamientos existentes. Esta simetra
permite una programacin ms eficiente. En la gama media existen nicamente
dos instrucciones no orientadas a registros, que son las instrucciones CLRWDT y
SLEEP.
3.2 Flujo de instrucciones. Segmentacin.
La entrada de reloj, se divide internamente por cuatro, obtenindose cuatro seales de reloj
denominadas Q1, Q2, Q3 y Q4. Internamente, el PC se incrementa cada Q1, la instruccin es
leda de la memoria de instrucciones y almacenada en el registro de instrucciones en Q4. Esa
instruccin es decodificada y ejecutada durante los siguientes Q1-Q4.
El flujo de instrucciones y el reloj se muestran en las figuras 3.1 y 3.2. Adems, estos ciclos
son los que denominaremos periodos de oscilacin del PIC (Tosc).
40
Debido a que en cada una de las fases se accede a una memoria, y que los accesos a memoria
pueden solaparse, aparece la segmentacin, es decir, se ejecuta una instruccin por ciclo de
instruccin, excepto las instrucciones de salto incondicional, ya que es en la fase de ejecucin
donde se calcula la direccin destino. En este caso tarda dos ciclos de instruccin.
TOSC0
1. MOVLW 55h
2. MOVWF PORTB
3. CALL
SUB_1
4. BSF
PORTA,3
TOSC1
Buscar 1 Ejecutar 1
Buscar 2
TOSC2
Ejecutar 2
Buscar 3
TOSC3
TOSC4
Ejecutar 3
Buscar 4
TOSC5
Detencin
Buscar SUB_1
Ejecutar SUB_1
Buscar SUB_1+1
Instrucciones de control.
41
Todas ellas tienen un ancho de 14 bits (ancho de la memoria de programa), pero los campos
varan entre ellos.
Los formatos de los distintos tipos de instrucciones son:
Cdigo de operacin
10
Cdigo de operacin
b = 3 bits que indican la posicin dentro del registro del bit a modificar.
f = 7 bits de la direccin del registro sobre el que se realiza la operacin.
El resto de la direccin viene dada por los bits IRP1, IRP0 o IRP.
Cdigo de operacin
k (literal)
13
Cdigo de operacin
k (literal)
42
Se puede usar cualquier registro especial como fuente o destino en una instruccin.
STATUS
Todas las instrucciones que manipulan bit son instrucciones de tipo lecturamodificacin-escritura, es decir, primero se lee el registro, luego se opera y por
ltimo se escribe el resultado. Esto hay que tenerlo en cuenta fundamentalmente
cuando se trabaja sobre las puertas y en stas se cambian los bits del TRIS
asociadas a ellas.
En la tabla 3.1 se especifica el significado de las distintas abreviaturas que van a ser utilizadas
posteriormente para la descripcin detallada de cada una de las instrucciones de los PIC.
TABLA 3.1 Descripcin de las abreviaturas utilizadas.
Campo
f
w
b
k
x
d
dest
TOS
PC
PCLATCH
GIE
WDT
TO
PD
[ ]
( )
<>
Descripcin
Direccin del registro (0x00 a 0x7F)
Registro de trabaja (acumulador)
Posicin de un bit de un registro (0 a 7)
Literal, dato inmediato o direccin de una etiqueta.
Valor indeterminado (0 1)
Seleccin el destino;
d = 0; el resultado se almacena en W.
d = 1; el resultado se almacena en el registro f.
Destino (registro W f)
Nivel superior de la Pila.
Contador de Programa.
Parte alta del Contador de Programa
Bit de activacin global de interrupciones.
Perro guardin (Watchdog).
Bit Time Out del Registro de Estado.
Bit Power Down del Registro de Estado
Opciones
Contenido
Se asigna a
Campo de bits de un registro.
43
La tabla 3.2 muestra un resumen de todas las instrucciones que componen el lenguaje de
programacin de los microcontroladores PIC de la Gama Media.
TABLA 3.2 Instrucciones de la Gama Media.
INSTRUCCIONES SOBRE REGISTROS ORIENTADAS A BYTES
14 bits de la palabra de la
Nemnicos,
instruccin
Descripcin
Ciclos
Operandos
MSb
LSb
ADDWF
f, d Suma W y f
1
00 0111 dfff ffff
ANDWF
f, d Y lgica entre W y f
1
00 0101 dfff ffff
CLRF
f
Borra el registro f
1
00 0001 1fff ffff
CLRW
Borra el registro W
1
00 0001 0xxx xxxx
COMF
f, d Complementa f
1
00 1001 dfff ffff
DECF
f, d Decrementa f
1
00 0011 dfff ffff
DECFSZ
f, d Decrementa f y salta si es 0
1 (2)
00 1011 dfff ffff
INCF
f, d Incrementa f
1
00 1010 dfff ffff
INCFSZ
f, d Incrementa f y salta si es 0
1 (2)
00 1111 dfff ffff
IORWF
f, d O lgica entre W y f
1
00 0100 dfff ffff
MOVF
f, d Mueve f
1
00 1000 dfff ffff
MOVWF
f
Mueve W a f
1
00 0000 lfff
ffff
NOP
No hace nada
1
00 0000 0xx0 0000
RLF
f, d Rota f a la izquierda
1
00 1101 dfff ffff
RRF
f, d Rota f a la derecha
1
00 1100 dfff ffff
SUBWF
f, d Resta W de f
1
00 0010 dfff ffff
SWAPF
f, d Intercambia los bytes de f
1
00 1110 dfff ffff
XORWF
f, d O lgica exclusiva de W y f
1
00 0110 dfff ffff
INSTRUCCIONES SOBRE REGISTROS ORIENTADAS A BITS
BCF
f, b Borra el bit b del registro f
1
01 00bb bfff ffff
BSF
f, b Pone a 1 el bit b del registro f
1
01 01bb bfff ffff
BTFSC
f, b Testea el bit, y salta si es 0
1 (2)
01 10bb bfff ffff
BTFSS
f, b Testea el bit y salta si es 1
1 (2)
01 11bb bfff ffff
INSTRUCCIONES CON LITERALES Y DE CONTROL
ADDLW
k
Suma un literal con el W
1
11 111x kkkk kkkk
ANDLW
k
Y lgica entre k y W
1
11 1001 kkkk kkkk
CALL
k
Salto a subrutina
2
10 0kkk kkkk kkkk
CLRWDT Pone a cero el WDT
1
00 0000 0110 0100
GOTO
k
Salto incondicional
2
10 1kkk kkkk kkkk
IORLW
k
O lgica entre k y W
1
11 1000 kkkk kkkk
MOVLW
k
Mueve el literal k a W
1
11 00xx kkkk kkkk
RETFIE
Retorno de interrupcin
2
00 0000 0000 1001
RETLW
k
Retorno con k en W
2
11 01xx kkkk kkkk
RETURN
Retorno de subrutina
2
00 0000 0000 1000
SLEEP
Modo de reposo
1
00 0000 0110 0011
SUBLW
k
1
11 110x kkkk kkkk
XORLW
k
O exclusiva entre k y W
1
11 1010 kkkk kkkk
44
Bits de
Estado
afectados
C, DC, Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C, DC, Z
Z
C, DC, Z
Z
TO , PD
TO , PD
C, DC, Z
Z
ADDLW
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
[etiqueta] ADDLW k
0 k 255
(W) + k W
C, DC, Z
11 111x kkkk kkkk
El contenido del registro W se suma con los ocho bits del literal
k, almacenando el resultado en W.
Ejemplo
ADDLW
0X15
Antes de la instruccin
W = 0x10
Despus de la instruccin W= 0x25
ADDWF
Suma W y el registro f
[etiqueta] ADDWF f, d
0 f 127
d [0, 1]
(W) + (f) dest
Operacin:
Flags afectados: C, DC, Z
00 0111 dfff ffff
Cdigo OP:
Suma el contenido del registro W y el registro f. Si d es 0,
Descripcin:
el resultado se almacena en el registro W, mientras que si es 1
se almacena en el registro f.
ADDWF
FSR, 0
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
45
W = 0x17
FSR = 0xC2
W = 0xD9
FSR = 0xC2
ANDLW
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
[etiqueta] ANDLW k
0 k 255
(W) AND (k) W
Z
11 1001 kkkk kkkk
Realiza la operacin lgica AND entre el registro W y los ocho
bits del literal k. El resultado se almacena en el registro W.
Ejemplo:
ANDLW
0x5F
Antes de la instruccin
Despus de la instruccin
ANDWF
W = 0xA3
W = 0x03
Y lgica entre W y f
[etiqueta] ANDWF f, d
0 f 127
d [0, 1]
(W) AND (f) dest
Operacin:
Flags afectados: Z
00 0101 dfff ffff
Cdigo OP:
Realiza la operacin lgica AND entre W y el registro f. Si
Descripcin:
d es 0, el resultado se almacena en el registro W, mientras
que si es 1 se almacena en el registro f.
ANDWF
FSR, 1
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
46
W = 0x17
FSR = 0xC2
W = 0x17
FSR = 0x02
BCF
Borra un bit
[etiqueta] BCF
f, b
0 f 127
0b7
0 f<b>
Operacin:
Flags afectados: Ninguno
01 00bb bfff ffff
Cdigo OP:
Borra el bit b del registro f.
Descripcin:
BCF
FLAG_REG, 7
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
BSF
FLAG_REG = 0xC7
FLAG_REG = 0x47
;1100 0111
;0100 0111
Pone a 1 un bit
[etiqueta] BSF
f, b
0 f 127
0b7
1 f<b>
Operacin:
Flags afectados: Ninguno
01 01bb bfff ffff
Cdigo OP:
Pone a 1 el bit b del registro f.
Descripcin:
BSF FLAG_REG, 7
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
47
FLAG_REG = 0x0A
FLAG_REG = 0x8A
;0000 1010
;1000 1010
BTFSC
[etiqueta] BTFSC
f, b
0 f 127
0b7
Salta si (f<b>) = 0
Operacin:
Flags afectados: Ninguno
01 10bb bfff ffff
Cdigo OP:
Si el bit b del registro f es 0, se salta una instruccin y se
Descripcin:
continua con la ejecucin.
AQU
BTFSC
FLAG, 4
Ejemplo:
Sintaxis:
Operandos:
FALSO
GOTO
VERDAD ..........
..................................
Antes de la instruccin
Despus de la instruccin
BTFSS
REPETIR
PC = direccin de AQU
Si FLAG, 4 =0
PC = direccin de VERDAD
Si FLAG, 4 = 1
PC = direccin de FALSO
[etiqueta] BTFSS
f, b
0 f 127
0b7
Salta si (f<b>) = 1
Operacin:
Flags afectados: Ninguno
01 11bb bfff ffff
Cdigo OP:
Si el bit b del registro f es 1, se salta una instruccin y se
Descripcin:
continua con la ejecucin.
AQU
BTFSS
FLAG, 4
Ejemplo:
Sintaxis:
Operandos:
FALSO
GOTO
VERDAD ..........
..................................
Antes de la instruccin
Despus de la instruccin
48
REPETIR
PC = direccin de AQU
Si FLAG, 4 =1
PC = direccin de VERDAD
Si FLAG, 4 = 0
PC = direccin de FALSO
CALL
Salto a subrutina
[etiqueta] CALL
k
0 k 2047
(PC) + 1 TOS,
k PC<10:0>,
(PCLATCH<4:3>) PC<12:11>
Flags afectados: Ninguno
10 0kkk kkkk kkkk
Cdigo OP:
Salto a subrutina. Primero se guardan en la pila los 13 bits de
Descripcin:
la direccin de retorno (PC + 1). Despus se carga en el PC los
11 bits del inmediato k, los dos bits ms significativos los
proporciona el PCLATCH<4:3>. CALL tarda dos ciclos de
instruccin en ejecutarse.
PROGRAMA
CALL
SUBRUTINA
Ejemplo:
Sintaxis:
Operandos:
Operacin:
Antes de la instruccin
Despus de la instruccin
CLRF
PC =direccin de PROGRAMA
TOS = direccin de PROGRAMA + 1
PC = direccin de SUBRUTINA
Borra un registro f
[etiqueta] CLRF
f
0 f 127
00h f
1Z
Flags afectados: Z
00 0001 1fff ffff
Cdigo OP:
Se borra el contenido del registro f y el flag Z de estado se
Descripcin:
activa.
CLRF
FLAG_REG
Ejemplo:
Sintaxis:
Operandos:
Operacin:
Antes de la instruccin
Despus de la instruccin
49
FLAG_REG = 0x5A
FLAG_REG = 0x00
Z=1
CLRW
Borra el registro W
[etiqueta] CLRW
Ninguno
00h W
1Z
Flags afectados: Z
00 0001 1xxx xxxx
Cdigo OP:
Se borra el contenido del registro W y el flag Z de estado se
Descripcin:
activa.
CLRW
Ejemplo:
Sintaxis:
Operandos:
Operacin:
Antes de la instruccin
Despus de la instruccin
CLRWDT
W = 0x5A
W = 0x00
Z=1
Borra el Watchdog
[etiqueta] CLRWDT
Ninguno
00h WDT
0 predivisor del WDT
1 TO
1 PD
Flags afectados: TO , PD
00 0000 0110 01000
Cdigo OP:
Se borra el contenido tanto del Watchdog como de su
Descripcin:
predivisor. Los bits TO y PD del Registro de Estado se ponen
a 1.
CLRWDT
Ejemplo:
Sintaxis:
Operandos:
Operacin:
Antes de la instruccin
Despus de la instruccin
50
Temporizador WDT
Predivisor WDT
Temporizador WDT
Registro predivisor WDT
TO
PD
Predivisor WDT
=x
= 1:128
= 0x00
=0
=1
=1
= 1:128
COMF
Complementa el registro f
[etiqueta] COMF
f, d
0 f 127
d [0, 1]
Operacin:
( f ) dest
Flags afectados: Z
00 1001 dfff ffff
Cdigo OP:
Complementa el contenido del registro f. Si d es 0, el
Descripcin:
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro f.
COMF
REG1, 0
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
DECF
REG1 = 0x13
REG1 = 0x13
W
= 0xEC
Decrementa el registro f
[etiqueta] DECF
f, d
0 f 127
d [0, 1]
(f) - 1 dest
Operacin:
Flags afectados: Z
00 0011 dfff ffff
Cdigo OP:
Decrementa el contenido del registro f. Si d es 0, el
Descripcin:
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro f.
DECF
CONT, 1
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
51
CONT = 0x01
Z
=0
CONT = 0x00
Z
=1
DECFSZ
[etiqueta] DECFSC f, d
0 f 127
d [0, 1]
(f) 1 dest; salta si el resultado es 0
Operacin:
Flags afectados: Ninguno
00 1011 dfff ffff
Cdigo OP:
Decrementa el contenido del registro f. Si d es 0, el
Descripcin:
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro f. Si el resultado es 0, se salta la
siguiente instruccin y se continua con la ejecucin.
RESTA
DECFSZ
CONT, 1
Ejemplo:
Sintaxis:
Operandos:
GOTO
LAZO
CONTINUAR
...........
..............................................
Antes de la instruccin
PC
= direccin de RESTA
CONT = 0x01
Despus de la instruccin CONT = 0x00
PC
= direccin de CONTINUAR
GOTO
Salto Incondicional
[etiqueta] GOTO
k
0 k 2047
k PC<10:0>
PCLATCH<4:3> PC<12:11>
Flags afectados: Ninguno
10 1kkk kkkk kkkk
Cdigo OP:
Salto incondicional. Se carga en el PC<10:0> los 11 bits del
Descripcin:
inmediato k. Los dos bits restantes los proporciona el
PCLATCH<4:3>. GOTO tarda dos ciclos de instruccin en
ejecutarse.
GOTO
SALTO
Ejemplo:
Sintaxis:
Operandos:
Operacin:
Despus de la instruccin
52
PC = direccin SALTO
INCF
Incrementa el registro f
[etiqueta] INCF
f, d
0 f 127
d [0, 1]
(f) + 1 dest
Operacin:
Flags afectados: Z
00 1010 dfff ffff
Cdigo OP:
Incrementa el contenido del registro f. Si d es 0, el
Descripcin:
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro f.
INCF
CONT, 1
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
INCFSZ
CONT = 0xFF
Z
=0
CONT = 0x00
Z
=1
[etiqueta] INCFSC f, d
0 f 127
d [0, 1]
(f) + 1 dest; salta si el resultado es 0
Operacin:
Flags afectados: Ninguno
00 1111 dfff ffff
Cdigo OP:
Incrementa el contenido del registro f. Si d es 0, el
Descripcin:
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro f. Si el resultado es 0, se salta la
siguiente instruccin y se continua con la ejecucin.
SUMA
INCFSZ
CONT, 1
Ejemplo:
Sintaxis:
Operandos:
GOTO
LAZO
CONTINUAR
...........
..............................................
Antes de la instruccin
PC
= direccin de RESTA
CONT = 0xFF
Despus de la instruccin CONT = 0x00
PC
= direccin de CONTINUAR
53
IORLW
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
[etiqueta] IORLW k
0 k 255
(W) OR (k) W
Z
11 1000 kkkk kkkk
Realiza la operacin lgica OR entre el registro W y los ocho
bits del literal k. El resultado se almacena en el registro W.
Ejemplo:
ANDLW
0x35
Antes de la instruccin
Despus de la instruccin
IORWF
W = 0x9A
W = 0xBF
Z =0
O lgica entre W y f
[etiqueta] IORWF
f, d
0 f 127
d [0, 1]
(W) OR (f) dest
Operacin:
Flags afectados: Z
00 0100 dfff ffff
Cdigo OP:
Realiza la operacin lgica OR entre W y el registro f. Si
Descripcin:
d es 0, el resultado se almacena en el registro W, mientras
que si es 1 se almacena en el registro f.
IORWF
REG, 0
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
54
REG = 0x13
W = 0x91
REG = 0x13
W = 0x93
Z
=0
MOVLW
Mueve un Literal a W
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
[etiqueta] MOVLW k
0 k 255
kW
Ninguno
11 00xx kkkk kkkk
El registro W se carga con el valor de los ocho bits del literal
k.
Ejemplo:
MOVLW
0x5A
Despus de la instruccin
MOVF
W = 0x5A
Mover a f
[etiqueta] MOVF
f, d
0 f 127
d [0, 1]
(f) dest
Operacin:
Flags afectados: Z
00 1000 dfff ffff
Cdigo OP:
El contenido del registro f se mueve al destino. Si d es 0,
Descripcin:
el resultado se almacena en el registro W, mientras que si es 1
se almacena en el registro f.
MOVF
FSR, 0
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
55
W
FSR
W
Z
= 0x00
= 0xC2
= 0xC2
=0
MOVWF
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
Ejemplo:
NOP
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
Ejemplo:
Mueve W al registro f
[etiqueta] MOVWF f
0 f 127
(W) f
Ninguno
00 0000 1fff ffff
Mueve el contenido del registro W al registro f.
MOVWF
OPTION_REG
Antes de la instruccin
OPTION_REG = 0xFF
W = 0x4F
Despus de la instruccin OPTION_REG = 0x4F
W = 0x4F
No operar
[etiqueta] NOP
Ninguno
No realiza ninguna operacin
Ninguno
00 000 0xx0 0000
No realiza ninguna operacin.
ETIQUETA
NOP
Antes de la instruccin
PC = direccin de ETIQUETA
Despus de la instruccin PC = direccin de ETIQUETA + 1
56
RETFIE
[etiqueta] RETFIE
Ninguno
TOS PC
1 GIE
Flags afectados: Ninguno
00 0000 0000 1001
Cdigo OP:
Retorno de una rutina de interrupcin. Los 13 bits de la
Descripcin:
direccin de retorno los carga en el PC desde la pila. El bit
GIE (INTCON<7>) se pone automticamente a 1, habilitando
nuevas interrupciones. Requiere dos ciclos de instruccin para
su ejecucin.
RETFIE
Ejemplo:
Sintaxis:
Operandos:
Operacin:
Despus de la instruccin
RETLW
PC = TOS
GIE = 1
[etiqueta] RETLW k
0 k 255
kW
TOS PC
Flags afectados: Ninguno
11 01xx kkkk kkkk
Cdigo OP:
El registro W se carga con los ocho bits del literal k. El PC
Descripcin:
toma los 13 bits de la direccin de retorno del nivel superior de
la pila. Requiere dos ciclos de instruccin para su ejecucin.
PROGRAMA
CALL
TABLA
Ejemplo:
Sintaxis:
Operandos:
Operacin:
.................
.................
TABLA
ADDWF
PC
RETLW
k0
RETLW
k1
...........................
RETLW
kn
Antes de la instruccin
W = 0x07
Despus de la instruccin W = valor de k7
PC= TOS = direccin de PROGRAMA +1
57
RETURN
Retorno de subrutina
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
[etiqueta] RETURN
Ninguno
TOS PC
Ninguno
00 0000 0000 1000
Retorno de una subrutina de interrupcin. Los 13 bits de la
direccin de retorno los carga en el PC desde la pila. Requiere
dos ciclos de instruccin para su ejecucin.
Ejemplo:
FIN
RETURN
Despus de la instruccin
RLF
PC = TOS
[etiqueta] RLF f, d
0 f 127
d [0, 1]
Rotacin a la izquierda de f.
Operacin:
Flags afectados: C
00 1101 dfff ffff
Cdigo OP:
El contenido del registro f se rota una posicin a la izquierda
Descripcin:
a travs del flag de carry. Si d es 0, el resultado se almacena
en el registro W, mientras que si es 1 se almacena en el
registro f.
Sintaxis:
Operandos:
Ejemplo:
RLF
REG1, 0
Antes de la instruccin
Despus de la instruccin
58
REG1
C
REG1
W
C
Registro f
= 1110 0110
=0
= 1110 0110
= 1100 1100
=1
RRF
[etiqueta] RRF f, d
0 f 127
d [0, 1]
Rotacin a la derecha de f.
Operacin:
Flags afectados: C
00 1100 dfff ffff
Cdigo OP:
El contenido del registro f se rota una posicin a la derecha a
Descripcin:
travs del flag de carry. Si d es 0, el resultado se almacena
en el registro W, mientras que si es 1 se almacena en el
registro f.
Sintaxis:
Operandos:
Ejemplo:
RLF
REG1, 0
Antes de la instruccin
Despus de la instruccin
SLEEP
REG1
C
REG1
W
C
Registro f
= 1110 0110
=0
= 1110 0110
= 0111 0011
=0
Modo de reposo
[etiqueta] SLEEP
Ninguno
00h WDT
0 predivisor del WDT
1 TO
0 PD
Flags afectados: TO , PD
00 0000 0110 0011
Cdigo OP:
Descripcin:
El bit TO se pone a 1, y el bit PD del registro de Estado se
pone a 0. Adems tambin se pone a cero el predivisor del
predivisor del WDT. El procesador entra en el modo SLEEP o
de reposo, dejando el oscilador principal de funcionar.
SLEEP
Ejemplo:
Sintaxis:
Operandos:
Operacin:
59
SUBLW
Resta W de un Literal
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
[etiqueta] SUBLW k
0 k 255
k (W) W
C, DC, Z
11 110x kkkk kkkk
El registro W se resta (mediante complemento a 2) de los ocho
bits del literal k. El resultado es almacenado en el registro
W.
Ejemplo:
SUBLW
0x02
Antes de la instruccin
Despus de la instruccin
SUBWF
W = 0x01
C =x
Z=x
W = 0x01
C=1
Z=0
[etiqueta] SUBWF f, d
0 f 127
d [0, 1]
(f) - (W) dest
Operacin:
Flags afectados: C, DC, Z
00 0010 dfff ffff
Cdigo OP:
El registro W se resta (mediante complemento a 2) del registro
Descripcin:
f. Si d es 0, el resultado se almacena en el registro W,
mientras que si es 1 se almacena en el registro f.
SUBWF
REG1, 1
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
60
REG1
W
C
Z
REG1
W
C
Z
=3
=2
=x
=x
=1
=2
=1
=0
SWAPF
[etiqueta] SWAPF f, d
0 f 127
d [0, 1]
(f<3:0>) dest<7:4>
Operacin:
(f<7:4>) dest<3:0>
Flags afectados: Ninguno
00 1110 dfff ffff
Cdigo OP:
Los cuatro bits ms significativos y menos significativos del
Descripcin:
registro f, son intercambiados entre si. Si d es 0, el
resultado se almacena en el registro W, mientras que si es 1 se
almacena en el registro f.
SWAPF
REG1, 0
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
XORLW
REG1 = 0xA5
REG1 = 0xA5
W
= 0x5A
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
[etiqueta] XORLW k
0 k 255
(W) XOR (k) W
Z
11 1010 kkkk kkkk
Realiza la operacin lgica O exclusiva entre el registro W y
los ocho bits del literal k. El resultado es almacenado en el
registro W.
Ejemplo:
XORLW
0xAF
Antes de la instruccin
Despus de la instruccin
61
W = 0xB5
W = 0x1A
Z=0
;1010 1111
;1011 1010
;--------------;0001 1010
(0xAF)
(0xB5)
--------(0x1A)
XORWF
[etiqueta] XORWF f, d
0 f 127
d [0, 1]
(W) XOR (f) dest
Operacin:
Flags afectados: Z
00 0110 dfff ffff
Cdigo OP:
Realiza la operacin lgica O exclusiva entre el registro W y el
Descripcin:
registro f. Si d es 0, el resultado se almacena en el registro
W, mientras que si es 1 se almacena en el registro f.
XORWF
REG, 1
Ejemplo:
Sintaxis:
Operandos:
Antes de la instruccin
Despus de la instruccin
62
REG = 0xAF
W
= 0xB5
REG = 0x1A
W
= 0xB5
;1010 1111
;1011 1010
;--------------;0001 1010
(0xAF)
(0xB5)
--------(0x1A)