Vous êtes sur la page 1sur 42

C PIC Gama Media.

Juego de Instrucciones

NDICE
Introduccin .......................................................................................... INS-2
Juego de Instrucciones ......................................................................... INS-3
Formato de Instrucciones ..................................................................... INS-4
Descripcin de Instrucciones................................................................ INS-6

2001 JUAN J. MARTN PRIETO

INS-1

C PIC Gama Media

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:

Operaciones orientadas a Byte (Byte-oriented)


Operaciones orientadas a Bit (Bit-oriented)
Operaciones con Literales y de Control (Literal and Control)

En las instrucciones orientadas a byte (Byte-oriented), f representa la direccin


del registro y d representa el destino. El registro es aquel sobre el que se aplica,
o al que se refiere la instruccin. El destino especifica donde se depositar el
resultado de la operacin indicada por la instruccin. Si d es cero, el resultado se
deposita en el registro W (acumulador). Si el d es uno, ste se deposita en el
propio registro implicado en la operacin.
En las instrucciones orientadas a bit (Bit-oriented), f representa la direccin del
registro implicado en la instruccin y b indica el nmero del bit (de dicho
registro), sobre el que se aplica la instruccin.
En las operaciones con literales y de control (Literal and Control), k representa
una constante numrica (valor literal).
Todas las instrucciones son ejecutadas en un slo ciclo de instruccin, excepto en
aquellas que impliquen un salto en el programa, en las cuales se consumirn dos
ciclos. Estas son las instrucciones de salto o testeo condicional, siempre que se
cumpla la condicin para el salto (ej. DECFSZ, BTFSS) y las de salto incondicional
(ej. GOTO, CALL, RETURN). En Tabla 1 puede verse el nmero de ciclos de cada
instruccin, en la columna Cycles. Cada ciclo de instruccin est formado por
cuatro ciclos de reloj.

2001 JUAN J. MARTN PRIETO

INS-2

C PIC Gama Media

Juego de Instrucciones

Tabla 1. 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.

2001 JUAN J. MARTN PRIETO

INS-3

C PIC Gama Media

Juego de Instrucciones

Formato de las instrucciones


En la figura 1 se representa la forma general de los tres formatos bsicos que se
dan en este conjunto de instrucciones. Como se puede ver, el Cdigo de
Programa (OPCODE) puede llegar a ocupar hasta 6 bits. Esto es as, debido a
que dicho conjunto est formado por 35 instrucciones (con 5 bits slo se podran
codificar 25 = 32 instrucciones).
Todos los ejemplos utilizan el siguiente formato para representar un nmero
hexadecimal:
0xhh
donde 0x indica al ensamblador que el nmero est expresado en hexadecimal y h
significa un dgito hexadecimal.
Para representar un nmero binario:
b00000100
donde b es el identificador que indica al ensamblador que el nmero est
expresado en binario.
Fig. 1: Formato General de Instrucciones
Operaciones orientadas a Byte
13

8
7
6
OPCODE
d
f (FILE #)
d = 0, destino W
d = 1, destino Registro
f = direccin de Registro (7 bits)

Operaciones orientadas a Bit


13

10 9
7 6
OPCODE
b (BIT #)
f (FILE #)
d = 0, destino W
d = 1, destino Registro
f = direccin de Registro (7 bits)

Operaciones con literales y de control


General
13

8 7
OPCODE
k (literal)
k = valor literal de 8 bit (inmediato)

Instrucciones CALL y GOTO slo


13

2001 JUAN J. MARTN PRIETO

11 10
OPCODE
k (literal)
k = valor literal de 11 bit (inmediato)

INS-4

C PIC Gama Media

Juego de Instrucciones

Tabla 2. Abreviaturas y Convenciones


Campo

Descripcin

Direccin de Registro (0x00 a 0x7F)

Registro de trabajo (acumulador)

Posicin de un bit dentro de un registro (0 a7)

Valor literal constante, dato o etiqueta.

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

(Top of Stack) cabecera de la Pila de Stack

PC

(Program Counter) Contador de Programa

PCLACH

(Program Counter High Latch) Latch que contiene la parte alta del
PC (8 bit)

GIE

(Global Interrupt Enable) bit de habilitacin global de interrupciones

WDT

(Watchdog Timer) temporizador del Perro Guardin

TO

Bit Time Out del registro Status

PD

Bit Power Down del registro Status

[ ]

Opcional

( )

Contenido

Asignado a

<>

Campo de bit de un registro

itlicas

2001 JUAN J. MARTN PRIETO

Pertenece al conjunto de
Trminos definidos por el usuario

INS-5

C PIC Gama Media

Juego de Instrucciones

Descripcin de las Instrucciones

ADDLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:

ADD Literal and W


[etiqueta] ADDLW
0 k 255
(W) + k W
C, DC, Z
11

111x

kkkk

kkkk

Descripcin:

El contenido del acumulador (registro W) se suma al literal k y el resultado se


guarda en el acumulador.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1

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

2001 JUAN J. MARTN PRIETO

INS-6

C PIC Gama Media

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:

El contenido del acumulador (registro W) se suma al contenido de f. 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

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:

2001 JUAN J. MARTN PRIETO

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

C PIC Gama Media

Juego de Instrucciones

ANDLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:

AND Literal with W


[etiqueta] ANDLW
0 k 255
(W) AND (K) W
Z
11

1001

kkkk

kkkk

Descripcin:

Operacin AND entre el contenido del acumulador (registro W) y el literal k. El


resultado se guarda en W.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

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

2001 JUAN J. MARTN PRIETO

INS-8

C PIC Gama Media

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:

AND del acumulador (registro W) con el registro f. 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

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

2001 JUAN J. MARTN PRIETO

INS-9

C PIC Gama Media

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

2001 JUAN J. MARTN PRIETO

INS-10

C PIC Gama Media

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

2001 JUAN J. MARTN PRIETO

INS-11

C PIC Gama Media

Juego de Instrucciones

BTFSC
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:

Bit Test, Skip if Clear


[etiqueta] BTFSC
0 f 127
0b7
Salto si (f <b>) = 0
Ninguno
01

10bb

f,b

bfff

ffff

Descripcin:

Si el bit b del registro f es 0, la siguiente instruccin es saltada. Dicha


instruccin, cuya fase de bsqueda se lleva a cabo durante la presente
instruccin, es descargada y se ejecuta a continuacin un NOP,
completndose as dos ciclos de instruccin.
Palabras:
1
Ciclos:
1 (2)
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

Lectura de
registro f

Proceso de
dato

No
operacin

Q3

Q4

No
operacin

No
operacin

Si se produce el salto (2 ciclo):


Q1
Q2
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

2001 JUAN J. MARTN PRIETO

INS-12

C PIC Gama Media

Juego de Instrucciones

BTFSS
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:

Bit Test, Skip if Set


[etiqueta] BTFSS
0 f 127
0b7
Salto si (f <b>) = 1
Ninguno
01

11bb

f,b

bfff

ffff

Descripcin:

Si el bit b del registro f es 1, la siguiente instruccin es saltada. Dicha


instruccin, cuya fase de bsqueda se lleva a cabo durante la presente
instruccin, es descargada y se ejecuta a continuacin un NOP,
completndose as dos ciclos de instruccin.
Palabras:
1
Ciclos:
1 (2)
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

Lectura de
registro f

Proceso de
dato

No
operacin

Q3

Q4

No
operacin

No
operacin

Si se produce el salto (2 ciclo):


Q1
Q2
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

2001 JUAN J. MARTN PRIETO

INS-13

C PIC Gama Media

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:

Llamada a subrutina. Primero, los 13 bit de la direccin de retorno (PC+1) es


guardada en el Stack. La direccin inmediata (11 bit) es cargada en el PC (bit
<10:0>. Los bit altos del PC son cargados desde PCLATTH <4:3>. Call es una
instruccin de dos ciclos.
Palabras:
1
Ciclos:
2
Actividad por ciclos de reloj:
Primer ciclo:
Q1
Q2
Q3
Q4
Decodifica
cin

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

2001 JUAN J. MARTN PRIETO

INS-14

C PIC Gama Media

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

2001 JUAN J. MARTN PRIETO

INS-15

C PIC Gama Media

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

2001 JUAN J. MARTN PRIETO

INS-16

C PIC Gama Media

Juego de Instrucciones

CLRWDT
Sintaxis:
Operandos:
Operacin:

Status afectados:
Codificacin:

Clear watchdog Timer


[etiqueta] CLRWDT
Ninguno
00h WDT
0 WDT y prescaler
1 TO
1 PD
TO, PD
00

0000

0110

0100

Descripcin:

Esta instruccin borra (puesta a 0) el Watchdog. Tambin pone a cero al


prescaler si est asignado al Watchdog.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

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

Nota: La instruccin CLRWDT no afecta a la asignacin del prescaler

2001 JUAN J. MARTN PRIETO

INS-17

C PIC Gama Media

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:

Al contenido del registro f se aplica el complemento a 1. Si d es 0 el resultado


es guardado en W. Si d es 1 el resultado se guarda en f.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

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

2001 JUAN J. MARTN PRIETO

INS-18

C PIC Gama Media

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:

Decrementa el registro f. Si d es 0 el resultado es guardado en W. Si d es 1


el resultado se guarda en f.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

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

2001 JUAN J. MARTN PRIETO

INS-19

C PIC Gama Media

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:

El contenido del registro f es decrementado. Si d es 0, el resultado es


guardado en W. Si es 1, se guarda en el propio registro f. Si el resultado es 0,
la siguiente instruccin, cuya fase de bsqueda se lleva a cabo durante la
ejecucin de la presente instruccin, es descargada y se ejecuta a continuacin
un NOP, completndose as dos ciclos de instruccin.
Palabras:
1
Ciclos:
1 (2)
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

Lectura de
registro f

Proceso de
dato

Escritura en
destino

Q3

Q4

No
operacin

No
operacin

Si se produce el salto (2 ciclo):


Q1
Q2
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

2001 JUAN J. MARTN PRIETO

INS-20

C PIC Gama Media

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:

GOTO es un salto incondicional. La direccin inmediata (11 bit) es cargada en el


PC (bit <10:0>. Los bit altos del PC son cargados desde PCLATH <4:3>. Es una
instruccin de dos ciclos.
Palabras:
1
Ciclos:
2
Actividad por ciclos de reloj:
Primer ciclo:
Q1
Q2
Q3
Q4
Decodifica
cin

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

2001 JUAN J. MARTN PRIETO

INS-21

C PIC Gama Media

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:

Incrementa el registro f. Si d es 0 el resultado es guardado en W. Si d es 1


el resultado se guarda en f.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

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

2001 JUAN J. MARTN PRIETO

INS-22

C PIC Gama Media

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:

El contenido del registro f es incrementado. Si d es 0, el resultado es


guardado en W. Si es 1, se guarda en el propio registro f. Si el resultado es 0,
la siguiente instruccin, cuya fase de bsqueda se lleva a cabo durante la
ejecucin de la presente instruccin, es descargada y se ejecuta a continuacin
un NOP, completndose as dos ciclos de instruccin.
Palabras:
1
Ciclos:
1 (2)
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

Lectura de
registro f

Proceso de
dato

Escritura en
destino

Q3

Q4

No
operacin

No
operacin

Si se produce el salto (2 ciclo):


Q1
Q2
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

2001 JUAN J. MARTN PRIETO

INS-23

C PIC Gama Media

Juego de Instrucciones

IORLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:

Inclusive OR Literal with W


[etiqueta] IORLW
0 k 255
(W) OR k W
Z
11

1000

kkkk

kkkk

Descripcin:

Operacin OR entre el contenido del acumulador (registro W) y el literal k. El


resultado se guarda en W.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1

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

2001 JUAN J. MARTN PRIETO

INS-24

C PIC Gama Media

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:

Operacin OR entre el contenido del acumulador (registro W) y el registro f. 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

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:

2001 JUAN J. MARTN PRIETO

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

C PIC Gama Media

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

2001 JUAN J. MARTN PRIETO

INS-26

C PIC Gama Media

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:

El contenido del registro fes movido al destino d. Si d es 0 el resultado se


mueve a W. Si es d es 1, el destino es el propio registro f. La opcin d = 1
se puede aprovechar para testear un registro afectando al bit Z.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin

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:

2001 JUAN J. MARTN PRIETO

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

C PIC Gama Media

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

2001 JUAN J. MARTN PRIETO

INS-28

C PIC Gama Media

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

2001 JUAN J. MARTN PRIETO

INS-29

C PIC Gama Media


OPTION
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Descripcin:

Palabras:
Ciclos:

Juego de Instrucciones
Load Option Register

[etiqueta] OPTION
Ninguno
(W) OPTION
Ninguno
00

0000

0110

0010

El contenido del acumulador (registro W) se carga en el registro OPTION.


Esta instruccin es soportada para mantener la compatibilidad con las series
primitivas PIC 16C5X. Sin embargo se aconseja el uso del registro OPTION
que es de lectura / escritura, mediante MOVWF OPTION_REG.
1
1

Para mantener la compatibilidad con futuros productos PIC, no debe usarse esta instruccin

2001 JUAN J. MARTN PRIETO

INS-30

C PIC Gama Media

Juego de Instrucciones

RETFIE
Sintaxis:
Operandos:
Operacin:
Status afectados:

Return from Interrupt


[etiqueta] RETFIE
Ninguno
TOS PC
1 GIE
Ninguno

Codificacin:
Descripcin:

00

0000

0000

1001

Retorna de interrupcin. La direccin de retorno (13 bit), en la cabecera de la


pila (Top of Stack), es cargada en el PC. El bit Global Interrupt Enable, GIE
(INTCON <7>), es puesto a 1 automticamente, habilitando las interrupciones.
Esta es una instruccin de 2 ciclos.

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

2001 JUAN J. MARTN PRIETO

INS-31

C PIC Gama Media

Juego de Instrucciones

RETLW
Sintaxis:
Operandos:
Operacin:
Status afectados:

Return with Literal in W


[etiqueta] RETLW
0 k 255
kW
TOS PC
Ninguno

Codificacin:

11

01xx

kkkk

kkkk

Descripcin:

Retorna con literal en acumulador. El acumulador es cargado con el literal k. La


direccin de retorno (13 bit), en la cabecera de la pila (Top of Stack), es cargada
en el PC. Esta es una instruccin de 2 ciclos.
Palabras:
1
Ciclos:
2
Actividad por ciclos de reloj:
Primer ciclo:
Q1
Q2
Q3
Q4
Decodifica
cin

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

; W contiene el valor del


; desplazamiento en la tabla

; Ahora W tiene el valor de la 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

2001 JUAN J. MARTN PRIETO

INS-32

C PIC Gama Media

Juego de Instrucciones

RETURN
Sintaxis:
Operandos:
Operacin:
Status afectados:

Return from Subroutine


[etiqueta] RETURN
nINGUNO
TOS PC
Ninguno

Codificacin:

00

0000

0000

1000

Descripcin:

Retorna de subrutina. La direccin de retorno (13 bit), en la cabecera de la pila


(Top of Stack), es cargada en el PC. Esta es una instruccin de 2 ciclos.
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

AQU

RETURN

Despus de la instruccin
PC = TOS

2001 JUAN J. MARTN PRIETO

INS-33

C PIC Gama Media

Juego de Instrucciones

RLF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Descripcin:

Rotate Left f through Carry


[etiqueta] RLF
f,d
0 f 127
d [0,1]
Ver descripcin a continuacin
C
00

1101

dfff

ffff

El contenido del registro f es rotado un bit a la izquierda a travs del Carry. Si


d es 0 el resultado se guarda en W. Si es 1, se guarda en el propio registro f.
C

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

2001 JUAN J. MARTN PRIETO

INS-34

C PIC Gama Media

Juego de Instrucciones

RRF
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Descripcin:

Rotate Right f through Carry


[etiqueta] RRF
f,d
0 f 127
d [0,1]
Ver descripcin a continuacin
C
00

1100

dfff

ffff

El contenido del registro f es rotado un bit a la derecha a travs del Carry. Si d


es 0 el resultado se guarda en W. Si es 1, se guarda en el propio registro f.
C

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

2001 JUAN J. MARTN PRIETO

INS-35

C PIC Gama Media

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

Nota: La instruccin SLEEP no afecta a la asignacin del Prescaler

2001 JUAN J. MARTN PRIETO

INS-36

C PIC Gama Media

Juego de Instrucciones

SUBLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:

Subtract W from Literal


[etiqueta] SUBLW
0 k 255
k - (W) W
C, DC, Z
11

110x

kkkk

kkkk

Descripcin:

El contenido del acumulador (registro W) se resta del literal k (mtodo del


complemento a 2) y el resultado se guarda en el acumulador.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1
Caso 1:

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

2001 JUAN J. MARTN PRIETO

INS-37

C PIC Gama Media

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:

El contenido del acumulador (registro W) se resta del contenido de f (mtodo


del complemento a 2). 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
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

2001 JUAN J. MARTN PRIETO

INS-38

C PIC Gama Media

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

2001 JUAN J. MARTN PRIETO

INS-39

C PIC Gama Media


TRIS
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:
Descripcin:

Palabras:
Ciclos:

Juego de Instrucciones
Load TRIS Register

[etiqueta] TRIS
f
5f7
(W) TRIS registro f
Ninguno
00

0000

0110

0fff

El contenido del acumulador (registro W) se carga en el registro TRIS


correspondiente. Esta instruccin es soportada para mantener la compatibilidad
con las series primitivas PIC 16C5X. Sin embargo se aconseja el uso de los
registros TRIS mediante MOVWF TRISX.
1
1

Para mantener la compatibilidad con futuros productos PIC, no debe usarse esta instruccin

2001 JUAN J. MARTN PRIETO

INS-40

C PIC Gama Media

Juego de Instrucciones

XORLW
Sintaxis:
Operandos:
Operacin:
Status afectados:
Codificacin:

Exclusive OR Literal with W


[etiqueta] XORLW
0 k 255
(W).XOR.k W
Z
11

1010

kkkk

kkkk

Descripcin:

Operacin XOR entre el acumulador (registro W) y el literal k. El resultado se


guarda en el acumulador.
Palabras:
1
Ciclos:
1
Actividad por ciclos de reloj:
Q1
Q2
Q3
Q4
Decodifica
cin
Ejemplo 1

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

2001 JUAN J. MARTN PRIETO

INS-41

C PIC Gama Media

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:

XOR del acumulador (registro W) con el registro f. 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

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

2001 JUAN J. MARTN PRIETO

INS-42

Vous aimerez peut-être aussi