Вы находитесь на странице: 1из 56

El juego de instrucciones :

El juego de instrucciones :
PIC 16F87x
PIC 16F87x
CCFF DPE MDULO DE PROYECTOS 2
El
El
Set
Set
de Instrucciones
de Instrucciones
Introducci
Introducci

n
n

Los PIC 16F87x poseen un juego de 35


Los PIC 16F87x poseen un juego de 35
instrucciones de tipo RISC, siendo todas ellas de 14
instrucciones de tipo RISC, siendo todas ellas de 14
bits. El tama
bits. El tama

o de los datos es de 1
o de los datos es de 1
byte
byte
.
.

Las instrucciones de los PIC 16F87x son


Las instrucciones de los PIC 16F87x son
exactamente iguales a las del PI C 16f84
exactamente iguales a las del PI C 16f84

En los 14 bits de cada instrucci


En los 14 bits de cada instrucci

n se incluye el
n se incluye el
c
c

digo de operaci
digo de operaci

n y los
n y los
operandos
operandos
si estos
si estos
existen.
existen.

Todas las instrucciones tardan en ejecutarse 1 ciclo


Todas las instrucciones tardan en ejecutarse 1 ciclo
(4 golpes de reloj) excepto las de salto que tardan
(4 golpes de reloj) excepto las de salto que tardan
2 ciclos.
2 ciclos.
CCFF DPE MDULO DE PROYECTOS 3

Las instrucciones de los PIC son altamente


Las instrucciones de los PIC son altamente
ortogonales. Esto quiere decir que casi todas las
ortogonales. Esto quiere decir que casi todas las
instrucciones pueden usar cualquier registro como
instrucciones pueden usar cualquier registro como
como operando y como destino.
como operando y como destino.

El n
El n

mero total de instrucciones del


mero total de instrucciones del
microcontrolador es de 35. Clasific
microcontrolador es de 35. Clasific

ndose en los
ndose en los
siguiente tipos:
siguiente tipos:

Instrucciones orientadas a
Instrucciones orientadas a
bytes
bytes
.
.

Instrucciones orientadas a bits.


Instrucciones orientadas a bits.

Instrucciones de control y con literales.


Instrucciones de control y con literales.
4
El
El
Set
Set
de Instrucciones
de Instrucciones
Nomenclatura en las I nstrucciones
Nomenclatura en las I nstrucciones

En las instrucciones orientadas a


En las instrucciones orientadas a
bytes
bytes
o registros
o registros
f
f
representa un registro y
representa un registro y
d
d
representa el destino. Si
representa el destino. Si
d
d
es
es
0
0
,
,
el resultado de la operaci
el resultado de la operaci

n se
n se
almacena en el
almacena en el
registro de trabajo
registro de trabajo
W
W
, mientras que si
, mientras que si
d
d
es 1
es 1
,
,
el
el
resultado se guarda en el registro
resultado se guarda en el registro
f
f
.
.

En las instrucciones orientadas a bits,


En las instrucciones orientadas a bits,
b
b
representa en
representa en
binario la posici
binario la posici

n (0
n (0
-
-
7) del
7) del
bit
bit
dentro del
dentro del
byte
byte
,
,
f
f
representa el
representa el
byte
byte
o registro. El
o registro. El
bit
bit
0 siempre es el de
0 siempre es el de
menor peso.
menor peso.

Para las instrucciones de control y con literales


Para las instrucciones de control y con literales
k
k
representa una constante o un literal, que seg
representa una constante o un literal, que seg

n los
n los
casos puede ser de 8
casos puede ser de 8

11 bits.
11 bits.
CCFF DPE MDULO DE PROYECTOS 5
El
El
Set
Set
de Instrucciones
de Instrucciones
Formato de las instrucciones
Formato de las instrucciones
Instrucciones orientadas a bytes o registros (18)
Donde:
Opcode es el cdigo de operacin.
( ) significa contenidos.
CCFF DPE MDULO DE PROYECTOS 6
Instrucciones orientadas a bits (4).
CCFF DPE MDULO DE PROYECTOS 7
Instrucciones de control y con literales (13).
CCFF DPE MDULO DE PROYECTOS 8
Instrucciones Orientadas a
Instrucciones Orientadas a
Bytes
Bytes
o Registros
o Registros
CCFF DPE MDULO DE PROYECTOS 9
Instrucciones Orientadas a Bits.
Instrucciones Orientadas a Bits.
Instrucciones Con Literales Y De
Instrucciones Con Literales Y De
Control.
Control.
CCFF DPE MDULO DE PROYECTOS 10
ADDLW (Suma W con un literal)
ADDLW (Suma W con un literal)
CCFF DPE MDULO DE PROYECTOS 11
ADDWF (Suma W con un registro)
ADDWF (Suma W con un registro)
CCFF DPE MDULO DE PROYECTOS 12
ANDLW (AND de W con un literal)
ANDLW (AND de W con un literal)
CCFF DPE MDULO DE PROYECTOS 13
ANDWF (AND de W con un registro)
ANDWF (AND de W con un registro)
CCFF DPE MDULO DE PROYECTOS 14
BCF (pon a 0 un bit del registro f)
BCF (pon a 0 un bit del registro f)
CCFF DPE MDULO DE PROYECTOS 15
BSF (pon a 1 un bit del registro f)
BSF (pon a 1 un bit del registro f)
CCFF DPE MDULO DE PROYECTOS 16
BTFSC (Testea un Bit y Salta si Cero) (1)
BTFSC (Testea un Bit y Salta si Cero) (1)
Si se produce el salto (bit=0) la instrucci
Si se produce el salto (bit=0) la instrucci

n
n
tarda 2 ciclos en ejecutarse, por el contrario
tarda 2 ciclos en ejecutarse, por el contrario
si no se produce salto solo tarda 1 ciclo en
si no se produce salto solo tarda 1 ciclo en
ejecutarse.
ejecutarse.
CCFF DPE MDULO DE PROYECTOS 17
BTFSC (Testea un Bit y Salta si Cero) (2)
BTFSC (Testea un Bit y Salta si Cero) (2)
CCFF DPE MDULO DE PROYECTOS 18
BTFSS (Testea un Bit y Salta si
BTFSS (Testea un Bit y Salta si
Set
Set
) (1)
) (1)
Si se produce el salto (bit=1) la instrucci
Si se produce el salto (bit=1) la instrucci

n tarda 2 ciclos en
n tarda 2 ciclos en
ejecutarse, por el contrario si no se produce salto solo tarda 1
ejecutarse, por el contrario si no se produce salto solo tarda 1
ciclo en ejecutarse.
ciclo en ejecutarse.
CCFF DPE MDULO DE PROYECTOS 19
BTFSS (Testea un Bit y Salta si
BTFSS (Testea un Bit y Salta si
Set
Set
) (2)
) (2)
CCFF DPE MDULO DE PROYECTOS 20
CALL (Llamada a subrutina) (1)
CALL (Llamada a subrutina) (1)

Tos es la cima de la pila


Tos es la cima de la pila
21
CALL (Llamada a subrutina) (2)
CALL (Llamada a subrutina) (2)

El c
El c

lculo de la direcci
lculo de la direcci

n efectiva var
n efectiva var

a seg
a seg

n la
n la
familia de PIC.
familia de PIC.
CCFF DPE MDULO DE PROYECTOS 22
CLRF (Pon a cero el registro f) (1)
CLRF (Pon a cero el registro f) (1)
CCFF DPE MDULO DE PROYECTOS 23
CLRW (Pon a cero el registro W)
CLRW (Pon a cero el registro W)
CCFF DPE MDULO DE PROYECTOS 24
CLRWDT (Pon a cero el registro WDT) (1)
CLRWDT (Pon a cero el registro WDT) (1)
CCFF DPE MDULO DE PROYECTOS 25
CLRWDT (Pon a cero el registro WDT) (2)
CLRWDT (Pon a cero el registro WDT) (2)

T0 y PD se ponen a 1 tambi
T0 y PD se ponen a 1 tambi

n cuando se ejecuta
n cuando se ejecuta
la instrucci
la instrucci

n SLEEP
n SLEEP
CCFF DPE MDULO DE PROYECTOS 26
COMF (
COMF (
COMplementa
COMplementa
F)
F)
CCFF DPE MDULO DE PROYECTOS 27
DECF (
DECF (
DECrementa
DECrementa
F)
F)

En el caso de que
En el caso de que
d=0
d=0
,
,
el
el
resultado se
resultado se
almacena en
almacena en
W
W
,y
,y
f
f
no modifica su valor.
no modifica su valor.

Recu
Recu

rdese que al
rdese que al
decrementar
decrementar
00h, se
00h, se
obtiene 0FFH.
obtiene 0FFH.
CCFF DPE MDULO DE PROYECTOS 28
DECFSZ (
DECFSZ (
DECrementa
DECrementa
F y Salta si
F y Salta si
Zero
Zero
)
)

En el caso de que
En el caso de que
d=0
d=0
,
,
el
el
resultado
resultado
se almacena en
se almacena en
W
W
,y
,y
f
f
no modifica
no modifica
su valor.
su valor.

Si el resultado es
Si el resultado es
cero se ignora la
cero se ignora la
siguiente
siguiente
instrucci
instrucci

n ( se
n ( se
salta), y la
salta), y la
I nstrucci
I nstrucci

n tarda
n tarda
en ejecutarse 2
en ejecutarse 2
ciclos.
ciclos.
CCFF DPE MDULO DE PROYECTOS 29
DECFSZ (
DECFSZ (
DECrementa
DECrementa
F y Salta si
F y Salta si
Zero
Zero
)
)

En el caso de que
En el caso de que
d=1
d=1
,
,
el
el
resultado se
resultado se
almacena en
almacena en
f
f
modific
modific

ndose su
ndose su
valor.
valor.

Si el resultado es
Si el resultado es
distinto de cero se
distinto de cero se
ejecuta la siguiente
ejecuta la siguiente
instrucci
instrucci

n ( no se
n ( no se
salta), y la
salta), y la
I nstrucci
I nstrucci

n tarda
n tarda
en ejecutarse 1
en ejecutarse 1
ciclo.
ciclo.
CCFF DPE MDULO DE PROYECTOS 30
GOTO (Salto incondicional a la direcci
GOTO (Salto incondicional a la direcci

n )
n )

Goto
Goto
es una
es una
instrucci
instrucci

n que
n que
tarda en
tarda en
ejecutarse dos
ejecutarse dos
ciclos
ciclos
CCFF DPE MDULO DE PROYECTOS 31
INCF (
INCF (
INCrementa
INCrementa
F )
F )

En el caso de que
En el caso de que
d=0
d=0
,
,
el resultado se almacena
el resultado se almacena
en
en
W
W
,y
,y
f
f
no modifica su
no modifica su
valor.
valor.

En el caso de que
En el caso de que
d=1
d=1
,
,
el resultado se almacena
el resultado se almacena
en
en
f
f
modific
modific

ndose su
ndose su
valor
valor
.
.

Recu
Recu

rdese que al
rdese que al
incrementar 0FFh, se
incrementar 0FFh, se
obtiene 00H.
obtiene 00H.
CCFF DPE MDULO DE PROYECTOS 32
INCFSZ (
INCFSZ (
INCrementa
INCrementa
F y Salta si
F y Salta si
Zero
Zero
) (1)
) (1)

En el caso de que
En el caso de que
d=0
d=0
, el resultado se
, el resultado se
almacena en
almacena en
W
W
,y
,y
f
f
no
no
modifica su valor.
modifica su valor.

En el caso de que
En el caso de que
d=1
d=1
, el resultado se
, el resultado se
almacena en
almacena en
f
f
modific
modific

ndose su
ndose su
valor
valor
.
.

Recu
Recu

rdese que al
rdese que al
incrementar 0FFh, se
incrementar 0FFh, se
obtiene 00H.
obtiene 00H.
CCFF DPE MDULO DE PROYECTOS 33
INCFSZ (
INCFSZ (
INCrementa
INCrementa
F y Salta si
F y Salta si
Zero
Zero
)(2)
)(2)
Si el resultado es cero se
Si el resultado es cero se
ignora la siguiente
ignora la siguiente
instrucci
instrucci

n ( se salta), y
n ( se salta), y
la Instrucci
la Instrucci

n tarda en
n tarda en
ejecutarse 2 ciclos.
ejecutarse 2 ciclos.
Si el resultado es distinto
Si el resultado es distinto
de cero se ejecuta la
de cero se ejecuta la
siguiente instrucci
siguiente instrucci

n ( no
n ( no
se salta), y la Instrucci
se salta), y la Instrucci

n
n
tarda en ejecutarse 1
tarda en ejecutarse 1
ciclo.
ciclo.
CCFF DPE MDULO DE PROYECTOS 34
IORLW (OR L
IORLW (OR L

gica de W con un Literal)


gica de W con un Literal)
CCFF DPE MDULO DE PROYECTOS 35
IORWF (OR L
IORWF (OR L

gica de W con un registro F)


gica de W con un registro F)
CCFF DPE MDULO DE PROYECTOS 36
MOVLW (
MOVLW (
MOVer
MOVer
un Literal a W )
un Literal a W )
CCFF DPE MDULO DE PROYECTOS 37
MOVF (
MOVF (
MOVer
MOVer
un registro
un registro
Fsr
Fsr
)
)
Al ejecutar la instrucci
Al ejecutar la instrucci

n
n
MOVF FSR, 1
MOVF FSR, 1
No realizamos ning
No realizamos ning

n
n
cambio ya que el
cambio ya que el
registro se queda como
registro se queda como
estaba, pero sin
estaba, pero sin
embargo nos sirve para
embargo nos sirve para
chequear su contenido
chequear su contenido
ya que el
ya que el
FLAG Z
FLAG Z
se
se
actualiza.
actualiza.
CCFF DPE MDULO DE PROYECTOS 38
NOP (No
NOP (No
OPeraci
OPeraci

n
n
)
)
Esta instruccin
no hace nada,
simplemente
consume un ciclo
de instruccin.
CCFF DPE MDULO DE PROYECTOS 39
RETFIE (Retorno de interrupci
RETFIE (Retorno de interrupci

n)
n)
Carga el PC con el valor
Carga el PC con el valor
que se encuentra en la
que se encuentra en la
cima de la pila (TOS).
cima de la pila (TOS).
Pone a 1 el bit
Pone a 1 el bit
GIE,
GIE,
con
con
el fin de autorizar de
el fin de autorizar de
nuevo las
nuevo las
interrupciones.
interrupciones.
Esta es una instrucci
Esta es una instrucci

n
n
que tarda en ejecutarse
que tarda en ejecutarse
2 ciclos de instrucci
2 ciclos de instrucci

n
n
CCFF DPE MDULO DE PROYECTOS 40
RETLW (Retorno y carga un literal en W)
RETLW (Retorno y carga un literal en W)
Carga el registro W
Carga el registro W
con el literal k,
con el literal k,
despu
despu

s Carga el PC
s Carga el PC
con el valor que se
con el valor que se
encuentra en la cima
encuentra en la cima
de la pila (TOS),
de la pila (TOS),
efectuando un retorno
efectuando un retorno
de subrutina.
de subrutina.
CCFF DPE MDULO DE PROYECTOS 41
RETLW (Retorno y carga un literal en W)
RETLW (Retorno y carga un literal en W)
Es una instrucci
Es una instrucci

n
n
que tarda en
que tarda en
ejecutarse 2 ciclos.
ejecutarse 2 ciclos.
CCFF DPE MDULO DE PROYECTOS 42
RETURN (Retorno de subrutina)
RETURN (Retorno de subrutina)
Carga el PC con el
Carga el PC con el
valor que se
valor que se
encuentra en la cima
encuentra en la cima
de la pila
de la pila
Es una instrucci
Es una instrucci

n
n
que tarda en
que tarda en
ejecutarse 2 ciclos.
ejecutarse 2 ciclos.
CCFF DPE MDULO DE PROYECTOS 43
RLF (Rota un bit a la izquierda el Registro
RLF (Rota un bit a la izquierda el Registro
F, pasando por el bit de
F, pasando por el bit de
Carry
Carry
) (1)
) (1)
Si d=0 el resultado Si d=0 el resultado
se almacena en W, se almacena en W,
no modific no modific ndose el ndose el
valor de f. valor de f.
Si d=1 el resultado Si d=1 el resultado
se almacena en f. se almacena en f.
El El nico nico flag flag que se que se
modifica es el modifica es el Carry Carry. .
CCFF DPE MDULO DE PROYECTOS 44
RLF (Rota un bit a la izquierda el Registro
RLF (Rota un bit a la izquierda el Registro
F, pasando por el bit de
F, pasando por el bit de
Carry
Carry
) (2)
) (2)
CCFF DPE MDULO DE PROYECTOS 45
RRF (Rota un bit a la derecha el Registro
RRF (Rota un bit a la derecha el Registro
F, pasando por el bit de
F, pasando por el bit de
Carry
Carry
) (1)
) (1)
CCFF DPE MDULO DE PROYECTOS 46
RRF (Rota un bit a la derecha el Registro
RRF (Rota un bit a la derecha el Registro
F, pasando por el bit de
F, pasando por el bit de
Carry
Carry
) (2)
) (2)
CCFF DPE MDULO DE PROYECTOS 47
SLEEP (Modo de bajo consumo)
SLEEP (Modo de bajo consumo)
Las maneras de salir
Las maneras de salir
del modo de bajo
del modo de bajo
consumo son:
consumo son:

Por un RESET,
Por un RESET,
activando
activando
MCLR
MCLR

Por desbordamiento
Por desbordamiento
de
de
WDT
WDT
si
si

ste
ste
qued
qued

operativo al
operativo al
entrar en el modo
entrar en el modo
reposo.
reposo.

Activaci
Activaci

n de una
n de una
interrupci
interrupci

n que no
n que no
sea
sea
TMR0
TMR0
, ya que
, ya que
esta se desactiva al
esta se desactiva al
entrar en reposo.
entrar en reposo.
CCFF DPE MDULO DE PROYECTOS 48
SUBLW (Resta al literal k el contenido de W)
SUBLW (Resta al literal k el contenido de W)
CCFF DPE MDULO DE PROYECTOS 49
SUBLW (Resta al literal k el contenido de W)
La resta se efecta
en complemento a
dos
Zse pone a 1 si el
resultado de la
opracin es 0
C se pone a 0 si se
genera un debe en el
bit de mayor peso
DC se pone a 1 si
genera un acarreo
del bit 3 al bit 4.
CCFF DPE MDULO DE PROYECTOS 50
SUBWF (Resta al R. F el contenido de W)
CCFF DPE MDULO DE PROYECTOS 51
SUBWF (Resta al R. F el contenido de W)
La resta se efecta
en complemento a
dos.
Si d=0 el resultado
queda en W, y si
d=1, el resultado se
guarda en f.
Los flagafectados
como en la
instruccin anterior
son Z, C y DC
CCFF DPE MDULO DE PROYECTOS 52
SWAPF (Intercambia nibbles en F)
Los 4 bits de menor
peso del registro f
se intercambian con
los 4 de mayor peso
Si d=0 el resultado
queda en W
Si d=1, el resultado
se guarda en f.
CCFF DPE MDULO DE PROYECTOS 53
XORLW (O
XORLW (O
-
-
exclusiva entre W y un literal)
exclusiva entre W y un literal)
CCFF DPE MDULO DE PROYECTOS 54
XORWF (O
XORWF (O
-
-
exclusiva entre W y f)
exclusiva entre W y f)
CCFF DPE MDULO DE PROYECTOS 55
OPTION (Inicializa el registro
OPTION (Inicializa el registro
option
option
)
)
CCFF DPE MDULO DE PROYECTOS 56
TRIS(Inicializa un registro TRIS)

Вам также может понравиться