El juego de instrucciones : PIC 16F84

Anuncio
El juego de instrucciones :
PIC 16F87x
El Set de Instrucciones
Introducción
• Los PIC 16F87x poseen un juego de 35
instrucciones de tipo RISC, siendo todas ellas de 14
bits. El tamaño de los datos es de 1 byte.
• Las instrucciones de los PIC 16F87x son
exactamente iguales a las del PIC 16f84
• En los 14 bits de cada instrucción se incluye el
código de operación y los operandos si estos
existen.
• Todas las instrucciones tardan en ejecutarse 1 ciclo
(4 golpes de reloj) excepto las de salto que tardan
2 ciclos.
CCFF DPE MÓDULO DE PROYECTOS
2
• Las instrucciones de los PIC son altamente
ortogonales. Esto quiere decir que casi todas las
instrucciones pueden usar cualquier registro como
como operando y como destino.
• El
número
total
de
instrucciones
del
microcontrolador es de 35. Clasificándose en los
siguiente tipos:
¾ Instrucciones orientadas a bytes.
¾ Instrucciones orientadas a bits.
¾ Instrucciones de control y con literales.
CCFF DPE MÓDULO DE PROYECTOS
3
El Set de Instrucciones
Nomenclatura en las Instrucciones
• En las instrucciones orientadas a bytes o registros f
representa un registro y d representa el destino. Si d es
0, el resultado de la operación se almacena en el
registro de trabajo W, mientras que si d es 1, el
resultado se guarda en el registro f.
• En las instrucciones orientadas a bits, b representa en
binario la posición (0-7) del bit dentro del byte, f
representa el byte o registro. El bit 0 siempre es el de
menor peso.
• Para las instrucciones de control y con literales k
representa una constante o un literal, que según los
casos puede ser de 8 ó 11 bits.
4
El Set de Instrucciones
Formato de las instrucciones
Instrucciones orientadas a bytes o registros (18)
Donde:
Opcode es el código de operación.
( ) significa contenidos.
CCFF DPE MÓDULO DE PROYECTOS
5
Instrucciones orientadas a bits (4).
CCFF DPE MÓDULO DE PROYECTOS
6
Instrucciones de control y con literales (13).
CCFF DPE MÓDULO DE PROYECTOS
7
Instrucciones Orientadas a Bytes o Registros
CCFF DPE MÓDULO DE PROYECTOS
8
Instrucciones Orientadas a Bits.
Instrucciones Con Literales Y De
Control.
CCFF DPE MÓDULO DE PROYECTOS
9
ADDLW (Suma W con un literal)
CCFF DPE MÓDULO DE PROYECTOS
10
ADDWF (Suma W con un registro)
CCFF DPE MÓDULO DE PROYECTOS
11
ANDLW (AND de W con un literal)
CCFF DPE MÓDULO DE PROYECTOS
12
ANDWF (AND de W con un registro)
CCFF DPE MÓDULO DE PROYECTOS
13
BCF (pon a 0 un bit del registro f)
CCFF DPE MÓDULO DE PROYECTOS
14
BSF (pon a 1 un bit del registro f)
CCFF DPE MÓDULO DE PROYECTOS
15
BTFSC (Testea un Bit y Salta si Cero) (1)
Si se produce el salto (bit=0) la instrucción
tarda 2 ciclos en ejecutarse, por el contrario
si no se produce salto solo tarda 1 ciclo en
ejecutarse.
CCFF DPE MÓDULO DE PROYECTOS
16
BTFSC (Testea un Bit y Salta si Cero) (2)
CCFF DPE MÓDULO DE PROYECTOS
17
BTFSS (Testea un Bit y Salta si Set) (1)
Si se produce el salto (bit=1) la instrucción tarda 2 ciclos en
ejecutarse, por el contrario si no se produce salto solo tarda 1
ciclo en ejecutarse.
CCFF DPE MÓDULO DE PROYECTOS
18
BTFSS (Testea un Bit y Salta si Set) (2)
CCFF DPE MÓDULO DE PROYECTOS
19
CALL (Llamada a subrutina) (1)
• Tos es la cima de la pila
CCFF DPE MÓDULO DE PROYECTOS
20
CALL (Llamada a subrutina) (2)
• El cálculo de la dirección efectiva varía según la
familia de PIC.
21
CLRF (Pon a cero el registro f) (1)
CCFF DPE MÓDULO DE PROYECTOS
22
CLRW (Pon a cero el registro W)
CCFF DPE MÓDULO DE PROYECTOS
23
CLRWDT (Pon a cero el registro WDT) (1)
CCFF DPE MÓDULO DE PROYECTOS
24
CLRWDT (Pon a cero el registro WDT) (2)
• T0 y PD se ponen a 1 también cuando se ejecuta
la instrucción SLEEP
CCFF DPE MÓDULO DE PROYECTOS
25
COMF (COMplementa F)
CCFF DPE MÓDULO DE PROYECTOS
26
DECF (DECrementa F)
• En el caso de que
d=0, el resultado se
almacena en W,y f
no modifica su valor.
• Recuérdese que al
decrementar 00h, se
obtiene 0FFH.
CCFF DPE MÓDULO DE PROYECTOS
27
DECFSZ (DECrementa F y Salta si Zero)
• En el caso de que
d=0, el resultado
se almacena en
W,y f no modifica
su valor.
• Si el resultado es
cero se ignora la
siguiente
instrucción ( se
salta), y la
Instrucción tarda
en ejecutarse 2
ciclos.
CCFF DPE MÓDULO DE PROYECTOS
28
DECFSZ (DECrementa F y Salta si Zero)
• En el caso de que
d=1, el resultado se
almacena en f
modificándose su
valor.
CCFF DPE MÓDULO DE PROYECTOS
• Si el resultado es
distinto de cero se
ejecuta la siguiente
instrucción ( no se
salta), y la
Instrucción tarda
en ejecutarse 1
ciclo.
29
GOTO (Salto incondicional a la dirección )
• Goto es una
instrucción que
tarda en
ejecutarse dos
ciclos
CCFF DPE MÓDULO DE PROYECTOS
30
INCF (INCrementa F )
• En el caso de que d=0,
el resultado se almacena
en W,y f no modifica su
valor.
• En el caso de que d=1,
el resultado se almacena
en f modificándose su
valor.
• Recuérdese que al
incrementar 0FFh, se
obtiene 00H.
CCFF DPE MÓDULO DE PROYECTOS
31
INCFSZ (INCrementa F y Salta si Zero) (1)
• En el caso de que
d=0, el resultado se
almacena en W,y f no
modifica su valor.
• En el caso de que
d=1, el resultado se
almacena en f
modificándose su
valor.
• Recuérdese que al
incrementar 0FFh, se
obtiene 00H.
CCFF DPE MÓDULO DE PROYECTOS
32
INCFSZ (INCrementa F y Salta si Zero)(2)
Si el resultado es cero se
ignora
la
siguiente
instrucción ( se salta), y
la Instrucción tarda en
ejecutarse 2 ciclos.
Si el resultado es distinto
de cero se ejecuta la
siguiente instrucción ( no
se salta), y la Instrucción
tarda en ejecutarse 1
ciclo.
CCFF DPE MÓDULO DE PROYECTOS
33
IORLW (OR Lógica de W con un Literal)
CCFF DPE MÓDULO DE PROYECTOS
34
IORWF (OR Lógica de W con un registro F)
CCFF DPE MÓDULO DE PROYECTOS
35
MOVLW (MOVer un Literal a W )
CCFF DPE MÓDULO DE PROYECTOS
36
MOVF (MOVer un registro Fsr)
Al ejecutar la instrucción
MOVF FSR, 1
No realizamos ningún
cambio ya que el
registro se queda como
estaba, pero sin
embargo nos sirve para
chequear su contenido
ya que el FLAG Z se
actualiza.
CCFF DPE MÓDULO DE PROYECTOS
37
NOP (No OPeración)
Esta instrucción
no hace nada,
simplemente
consume un ciclo
de instrucción.
CCFF DPE MÓDULO DE PROYECTOS
38
RETFIE (Retorno de interrupción)
Carga el PC con el valor
que se encuentra en la
cima de la pila (TOS).
Pone a 1 el bit GIE, con
el fin de autorizar de
nuevo las
interrupciones.
Esta es una instrucción
que tarda en ejecutarse
2 ciclos de instrucción
CCFF DPE MÓDULO DE PROYECTOS
39
RETLW (Retorno y carga un literal en W)
Carga el registro W
con el literal k,
después Carga el PC
con el valor que se
encuentra en la cima
de la pila (TOS),
efectuando un retorno
de subrutina.
CCFF DPE MÓDULO DE PROYECTOS
40
RETLW (Retorno y carga un literal en W)
Es una instrucción
que tarda en
ejecutarse 2 ciclos.
CCFF DPE MÓDULO DE PROYECTOS
41
RETURN (Retorno de subrutina)
Carga el PC con el
valor que se
encuentra en la cima
de la pila
Es una instrucción
que tarda en
ejecutarse 2 ciclos.
CCFF DPE MÓDULO DE PROYECTOS
42
RLF (Rota un bit a la izquierda el Registro
F, pasando por el bit de Carry) (1)
Si d=0 el resultado
se almacena en W,
no modificándose el
valor de f.
Si d=1 el resultado
se almacena en f.
El único flag que se
modifica es el Carry.
CCFF DPE MÓDULO DE PROYECTOS
43
RLF (Rota un bit a la izquierda el Registro
F, pasando por el bit de Carry) (2)
CCFF DPE MÓDULO DE PROYECTOS
44
RRF (Rota un bit a la derecha el Registro
F, pasando por el bit de Carry) (1)
CCFF DPE MÓDULO DE PROYECTOS
45
RRF (Rota un bit a la derecha el Registro
F, pasando por el bit de Carry) (2)
CCFF DPE MÓDULO DE PROYECTOS
46
SLEEP (Modo de bajo consumo)
Las maneras de salir
del modo de bajo
consumo son:
¾ Por un RESET,
activando MCLR
¾ Por desbordamiento
de WDT si éste
quedó operativo al
entrar en el modo
reposo.
CCFF DPE MÓDULO DE PROYECTOS
¾ Activación de una
interrupción que no
sea TMR0, ya que
47 esta se desactiva al
entrar en reposo.
SUBLW (Resta al literal k el contenido de W)
CCFF DPE MÓDULO DE PROYECTOS
48
SUBLW (Resta al literal k el contenido de W)
• La resta se efectúa
en complemento a
dos
• Z se pone a 1 si el
resultado de la
opración es 0
• C se pone a 0 si se
genera un debe en el
bit de mayor peso
CCFF DPE MÓDULO DE PROYECTOS
• DC se pone a 1 si
genera un acarreo
del bit 3 al bit 4.
49
SUBWF (Resta al R. F el contenido de W)
CCFF DPE MÓDULO DE PROYECTOS
50
SUBWF (Resta al R. F el contenido de W)
• La resta se efectúa
en complemento a
dos.
• Si d=0 el resultado
queda en W, y si
d=1, el resultado se
guarda en f.
• Los flag afectados
como en la
instrucción anterior
son Z, C y DC
CCFF DPE MÓDULO DE PROYECTOS
51
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 MÓDULO DE PROYECTOS
52
XORLW (O-exclusiva entre W y un literal)
CCFF DPE MÓDULO DE PROYECTOS
53
XORWF (O-exclusiva entre W y f)
CCFF DPE MÓDULO DE PROYECTOS
54
OPTION (Inicializa el registro option)
CCFF DPE MÓDULO DE PROYECTOS
55
TRIS(Inicializa un registro TRIS)
CCFF DPE MÓDULO DE PROYECTOS
56
Descargar