Está en la página 1de 24

Microcontroladores PIC de la Gama Media.

3. Juego de instrucciones de los PIC de la Gama Media.

Captulo 3. Juego de instrucciones de los PIC de la Gama


Media.

3.1 Introduccin.
Las caractersticas del juego de instrucciones vienen determinadas por el tipo de arquitectura
que tienen los PIC:

La arquitectura Harvard,

Conjunto de instrucciones reducido (RISC).

Esto implica que:


a) Normalmente el bus de instrucciones es mayor que el de datos. De esta forma se
obtiene una mayor eficiencia adaptando los anchos de los buses a los
requerimientos de la arquitectura y, por tanto, se optimiza el funcionamiento.
b) Las instrucciones son de una nica palabra. Debido a lo anterior se disearn
memorias de un ancho igual al cdigo de operacin de las instrucciones, pudiendo
acceder a su lectura en un solo ciclo. Adems el tamao de la memoria coincidir
con el nmero de instrucciones que podemos almacenar, a diferencia de la
arquitectura Von Neumann, en donde suele existir, de forma general, un ratio de
2:1 (siendo la memoria de 4Kbytes, aproximadamente 2Kbytes son instrucciones).
c) Segmentacin de instrucciones. Esto consiste en ejecutar las instrucciones en
distintas fases, unas con acceso a memoria de instrucciones y otras con acceso a
memoria de datos. Al poder realizarse accesos simultneos a ambas memorias,
podemos ejecutar las instrucciones en un nico ciclo de instruccin.
d) El hecho de tener pocas instrucciones facilita el aprendizaje.
e) Arquitectura basada en registros. Todos los elementos de la arquitectura, incluido
el contador de programa (PC), se encuentran mapeados en la memoria de datos,
que a su vez est implementada fsicamente como registros.

Santiago Salamanca Mio


David Arroyo Muoz

39

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

3. Juego de instrucciones de los PIC de la Gama Media.

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).

Figura 3.1 Flujo de instrucciones y reloj.


Un ciclo de instruccin consiste precisamente en estos 4 ciclos de reloj Q1-Q4, y cada una de
las fases de la instruccin ocupa un ciclo.

Santiago Salamanca Mio


David Arroyo Muoz

40

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

3. Juego de instrucciones de los PIC de la Gama Media.

Estas dos fases son:

Fase de bsqueda (Fetch): Se incrementa en Q1 el PC, se lee y se lleva en Q4 a


registro de instrucciones.

Fase de ejecucin: En Q2 se lee la memoria de datos para los operandos y en Q4 se


almacena en la memoria de datos el resultado.

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

Figura 3.2 Segmentacin de instrucciones


Existen adems las instrucciones de salto condicional, que pueden durar 1 2 ciclos en
funcin del resultado (btfss, btfsc, decfsz y incfsz).
3.3 El formato de las instrucciones.
Las instrucciones de los PIC se pueden dividir en cuatro categoras:

Instrucciones sobre registros orientadas a bytes.

Instrucciones sobre registros orientadas a bits.

Instrucciones para operaciones con literales.

Instrucciones de control.

Santiago Salamanca Mio


David Arroyo Muoz

41

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

3. Juego de instrucciones de los PIC de la Gama Media.

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:

Instrucciones sobre registros orientadas a bytes.


13

Cdigo de operacin

d = 0, resultado se almacena en el acumulador (w).


d = 1, resultado se almacena sobre el propio registro.
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.

Instrucciones sobre registros orientadas a bits.


13

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.

Instrucciones con literales y de control.


o General.
13

Cdigo de operacin

k (literal)

k = literal (direccionamiento inmediato).

13

o Instrucciones GOTO y CALL.


11 10

Cdigo de operacin

k (literal)

k = 11 bits menos significativos del PC. El resto se obtiene del PCLATCH.

Santiago Salamanca Mio


David Arroyo Muoz

42

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

3. Juego de instrucciones de los PIC de la Gama Media.

3.4 Juego de instrucciones.


Primero hay que hacer algunas consideraciones:

Se puede usar cualquier registro especial como fuente o destino en una instruccin.

Si usamos el registro de Estado como registro destino, los bits C, Z y DC


obtendrn los valores propios del resultado de la operacin. Por ejemplo:
clrf

STATUS

; despus de su ejecucin STATUS = 00001000


; correspondiendo ese 1 con el bit Z.

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.

Santiago Salamanca Mio


David Arroyo Muoz

43

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

3. Juego de instrucciones de los PIC de la Gama Media.

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

Santiago Salamanca Mio


David Arroyo Muoz

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

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

3. Juego de instrucciones de los PIC de la Gama Media.

3.4.1 Descripcin detallada de las instrucciones por orden alfabtico.

ADDLW

Suma Literal con el W

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

Santiago Salamanca Mio


David Arroyo Muoz

45

W = 0x17
FSR = 0xC2
W = 0xD9
FSR = 0xC2

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

ANDLW

3. Juego de instrucciones de los PIC de la Gama Media.

Y lgica entre Literal y W

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

;0101 1111 (0x5F)


;1010 0011 (0xA3)
;0000 0011 (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

Santiago Salamanca Mio


David Arroyo Muoz

46

W = 0x17
FSR = 0xC2
W = 0x17
FSR = 0x02

;0001 0111 (0x17)


;1100 0010 (0xC2)
;0000 0010 (0x02)

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

BCF

3. Juego de instrucciones de los PIC de la Gama Media.

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

Santiago Salamanca Mio


David Arroyo Muoz

47

FLAG_REG = 0x0A
FLAG_REG = 0x8A

;0000 1010
;1000 1010

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

BTFSC

3. Juego de instrucciones de los PIC de la Gama Media.

Testeo de bit y salto si es 0

[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

Testeo de bit y salto si es 1

[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

Santiago Salamanca Mio


David Arroyo Muoz

48

REPETIR

PC = direccin de AQU
Si FLAG, 4 =1
PC = direccin de VERDAD
Si FLAG, 4 = 0
PC = direccin de FALSO

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

CALL

3. Juego de instrucciones de los PIC de la Gama Media.

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

Santiago Salamanca Mio


David Arroyo Muoz

49

FLAG_REG = 0x5A
FLAG_REG = 0x00
Z=1

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

CLRW

3. Juego de instrucciones de los PIC de la Gama Media.

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

Santiago Salamanca Mio


David Arroyo Muoz

50

Temporizador WDT
Predivisor WDT
Temporizador WDT
Registro predivisor WDT
TO
PD
Predivisor WDT

=x
= 1:128
= 0x00
=0
=1
=1
= 1:128

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

COMF

3. Juego de instrucciones de los PIC de la Gama Media.

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

Santiago Salamanca Mio


David Arroyo Muoz

51

CONT = 0x01
Z
=0
CONT = 0x00
Z
=1

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

DECFSZ

3. Juego de instrucciones de los PIC de la Gama Media.

Decrementa el registro f y salta si es 0

[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

Santiago Salamanca Mio


David Arroyo Muoz

52

PC = direccin SALTO

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

INCF

3. Juego de instrucciones de los PIC de la Gama Media.

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

Incrementa el registro f y salta si es 0

[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

Santiago Salamanca Mio


David Arroyo Muoz

53

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

IORLW

3. Juego de instrucciones de los PIC de la Gama Media.

O lgica entre Literal y W

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

Santiago Salamanca Mio


David Arroyo Muoz

54

REG = 0x13
W = 0x91
REG = 0x13
W = 0x93
Z
=0

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

MOVLW

3. Juego de instrucciones de los PIC de la Gama Media.

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

Santiago Salamanca Mio


David Arroyo Muoz

55

W
FSR
W
Z

= 0x00
= 0xC2
= 0xC2
=0

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

MOVWF
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
Ejemplo:

NOP
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Cdigo OP:
Descripcin:
Ejemplo:

Santiago Salamanca Mio


David Arroyo Muoz

3. Juego de instrucciones de los PIC de la Gama Media.

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

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

RETFIE

3. Juego de instrucciones de los PIC de la Gama Media.

Retorno de rutina de interrupcin

[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

Retorno de subrutina con Literal en el W

[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

Santiago Salamanca Mio


David Arroyo Muoz

57

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

RETURN

3. Juego de instrucciones de los PIC de la Gama Media.

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

Rota f a la izquierda a travs del Carry

[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

Santiago Salamanca Mio


David Arroyo Muoz

58

REG1
C
REG1
W
C

Registro f

= 1110 0110
=0
= 1110 0110
= 1100 1100
=1

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

RRF

3. Juego de instrucciones de los PIC de la Gama Media.

Rota f a la derecha a travs del Carry

[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:

Santiago Salamanca Mio


David Arroyo Muoz

59

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

SUBLW

3. Juego de instrucciones de los PIC de la Gama Media.

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

;el resultado es positivo

Resta W del registro f

[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

Santiago Salamanca Mio


David Arroyo Muoz

60

REG1
W
C
Z
REG1
W
C
Z

=3
=2
=x
=x
=1
=2
=1
=0

;el resultado es positivo

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

SWAPF

3. Juego de instrucciones de los PIC de la Gama Media.

Intercambio de los Nibbles del registro f

[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

O exclusiva entre un Literal y W

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

Santiago Salamanca Mio


David Arroyo Muoz

61

W = 0xB5
W = 0x1A
Z=0

;1010 1111
;1011 1010
;--------------;0001 1010

(0xAF)
(0xB5)
--------(0x1A)

Escuela de Ingenieras Industriales


Universidad de Extremadura

Microcontroladores PIC de la Gama Media.

XORWF

3. Juego de instrucciones de los PIC de la Gama Media.

O exclusiva entre W y el registro f

[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

Santiago Salamanca Mio


David Arroyo Muoz

62

REG = 0xAF
W
= 0xB5
REG = 0x1A
W
= 0xB5

;1010 1111
;1011 1010
;--------------;0001 1010

(0xAF)
(0xB5)
--------(0x1A)

Escuela de Ingenieras Industriales


Universidad de Extremadura

También podría gustarte