Repertorio de Instrucciones - Universidad Tecnológica de la Mixteca

Anuncio
REPERTORIO DE INSTRUCCIONES
En esta sección se pretende:



Conocer las características generales de las instrucciones
para el PIC16F84
Los distintos modos de direccionamiento, y
Los diferentes grupos de instrucciones
Curso de Microcontroladores
Profr. Felipe Santiago
1
Características generales
El Repertorio RISC del PIC16F84 incluye 35 instrucciones con
las siguientes características:



Las instrucciones son simples y rápidas
Las instrucciones son ortogonales
La longitud de las instrucciones y los datos es constante
EJERCICIOS 1:
Un PIC16F84 funcionando con un cristal de cuarzo de 10 MHz tarda
600 uS en ejecutar un programa que tiene el 50 % de instrucciones
de saltos.


¿De cuántas instrucciones consta el programa
¿Cuántas posiciones de la memoria de código ocupa?
Curso de Microcontroladores
Profr. Felipe Santiago
2
1
Modos de direccionamiento
El PIC16F84 permite tres modos de direccionamiento:

Directo
En la instrucción se incluye la dirección del registro al que se tendrá
acceso. Ejemplo:
movwf 0x0C

Indirecto
Utiliza al registro INDF (0x01) para indicar que se trata de un acceso
indirecto y al registro FSR (0x04) como apuntador.
Por ejemplo, si la localidad 0x0C tiene al número 0x03 y la localidad
0x0D contiene al número 0x0A. Y además si FSR contiene el número
0x0C. La instrucción movf INDF, 1, pondrá 0x03 en W. Si se
incrementa FSR y se repite la instrucción, ahora pondrá 0x0A en W.

Inmediato
En el mismo código de la instrucción se encuentra uno de los
operandos, el operando es conocido de forma inmediata.
Por ejemplo:
movlw 0x05
Curso de Microcontroladores
Profr. Felipe Santiago
3
Direccionamiento directo e indirecto
Curso de Microcontroladores
Profr. Felipe Santiago
4
2
CAMPOS EN LAS INSTRUCCIONES
Las instrucciones son de 14 bits y se tienen diferentes formatos.
Los campos de bits que pueden encontrarse son:
a) Campo del código de operación (OPCODE)
Requiere hasta de 6 bits (4 en algunos casos).
b) Campo de los operandos fuente (f) y destino (d)
Para f se requiere de 7 bits.
Para d sólo se ocupa un bit (el destino puede ser f o W).
c) Campo de operando inmediato o literal, o para la dirección
de un salto (k)
k es de 8 bits, para operaciones aritméticas o lógicas.
k es de 10 bits para saltos.
d) Campo que hace referencia a un bit (b)
b es de 3 bits.
Curso de Microcontroladores
Profr. Felipe Santiago
5
CLASIFICACIÓN DE LAS INSTRUCCIONES
Dependiendo de su operación, las instrucciones se clasifican en:
1. Instrucciones orientadas a manejar registros
16 instrucciones
2. Instrucciones orientadas a manejar bits
2 instrucciones
3. Instrucciones que manejan valores inmediatos
6 instrucciones
4. Instrucciones de brincos condicionales
4 instrucciones
5. Instrucciones saltos incondicionales y otras instrucciones especiales
7 instrucciones
Total : 35 Instrucciones.
Curso de Microcontroladores
Profr. Felipe Santiago
6
3
INSTRUCCIONES ORIENTADAS A MANEJAR REGISTROS
El formato de estas instrucciones es el siguiente:
13
8
OPCODE
7
6
d
0
f (dir. del registro)
d = 1 El registro destino es f
d = 0 El registro destino es W
La sintaxis de estas instrucciones es: nemónico f, d
Ejemplos de instrucciones de este grupo son:
inc
movf
reg1, 1
reg1, 1
Curso de Microcontroladores
Profr. Felipe Santiago
7
GRUPO COMPLETO
INSTRUCCIONES QUE MANEJAN REGISTROS
SINTAXIS
OPERACIÓN
CICLOS
FORMATO
BANDERAS
ADDWF f, d
Suma W y f
1
00 0111 dfff ffff
C, DC, Z
ANDWF f, d
AND de W con f
1
00 0101 dfff ffff
Z
CLRF
Borra f (pone todos los bits a 0)
1
00 0001 1fff ffff
Z
Borra W
1
00 0001 0xxx xxxx
Z
f
CLRW
-----
COMF
f, d
Complementa f (invierte)
1
00 1001 dfff ffff
Z
DECF
f, d
Decrementa f
1
00 0011 dfff ffff
Z
INCF
f, d
Incrementa f
1
00 1010 dfff ffff
Z
OR entre W y f
1
00 0100 dfff ffff
Z
Mueve al registro f
1
00 1000 dfff ffff
Z
Mueve W a f
1
00 0000 1fff ffff
***
***
IORWF
MOVF
f, d
f, d
MOVWF
f
NOP
No opera
1
00 0000 0xxx xxxx
f, d
Rota f a la Izq. a través del acarreo
1
00 1101 dfff ffff
RRF f, d
Rota f a la der. a través del acarreo
1
00 1100 dfff ffff
C
RLF
C
SUBWF
f, d
Resta W a f
1
00 0010 dfff ffff
C, DC, Z
SWAPF
f, d
Intercambia los nibbles de un registro
1
00 1110 dfff ffff
***
1
Curso de Microcontroladores
Profr. Felipe Santiago
00 0110 dfff ffff
Z
XORWF f, d
XOR de W con f
8
4
EJERCICIOS 2:
1. Si se supone que inicialmente tiene cero el registro W y los que ocupan las
direcciones 0x05 y 0x06 de la memoria de datos ¿Qué valor contendrán
después de ejecutar el siguiente programa?
incf
incf
comf
iorwf
xorwf
0x05, 0
0x05, 1
0x06, 1
0x06, 0
0x05, 1
2. Existe una instrucción con la que se rota a la derecha, a través del
señalizador de acarreo C, el registro que ocupa la dirección 0x04 de la
memoria de datos y lo deposita en W. Se pide:
a) Nemónico
b) Formato de la instrucción
c) Si inicialmente C = 1 y (0x04) 0x00 ¿Qué valor se cargará en W?
3. Si el registro de ESTADO contiene el valor Oxf5 y se ejecuta la instrucción
swap E5TAD0, 0. ¿Qué valor contendrán ESTADO y W?
Curso de Microcontroladores
Profr. Felipe Santiago
9
INSTRUCCIONES ORIENTADAS A MANEJAR BITS
El formato de estas instrucciones es el siguiente:
13
10 9
OPCODE
7 6
b (posición)
0
f (dir. del registro)
La sintaxis de estas instrucciones es: nemónico f, b
y comprende únicamente las instrucciones:
INSTRUCCIONES QUE MANEJAN BITS
SINTAXIS
OPERACIÓN
CICLOS
FORMATO
BANDERAS
BCF f, b
Borra el bit b del registro f (Pone 0)
1
01 00bb bfff ffff
***
BSF f, b
Pone a 1 el bit b de f
1
01 01bb bfff ffff
***
Curso de Microcontroladores
Profr. Felipe Santiago
10
5
EJERCICIOS 3:
1. Al hacer un Reset el procesador coloca el bit 5 (RP0) del registro de
ESTADO a cero con lo que comienza referenciando al banco 0 de la memoria
de datos. Para referenciar al banco 1 hay que poner a 1 dicho bit:
a) Indicar la instrucción que permita dicha conmutación de bancos
b) Hallar el formato de la instrucción
2. Si inicialmente el registro W = 0xff y el registro OPTION = 0x00 ¿Con que
valores quedarán cargados después de ejecutar el siguiente programa?
bsf
OPTION, 2
comf
OPTION, 0
swap
OPTION, 1
3. Hallar el formato de la instrucción: bsf 0X08, 3
Curso de Microcontroladores
Profr. Felipe Santiago
11
OPERACIONES QUE MANEJAN UN VALOR INMEDIATO
El formato de estas instrucciones es el siguiente:
13
87
OPCODE
0
Valor inmediato
Estas instrucciones tienen por sintaxis: nemónico k,
sólo se aplican al registro W y son las siguientes:
INSTRUCCIONES QUE MANEJAN UN VALOR INMEDIATO
SINTAXIS
OPERACIÓN
CICLOS
FORMATO
BANDERAS
ADDLW
K
Suma inmediata con W
1
11 111x kkkk kkkk
C, DC, Z
ANDLW
K
AND inmediato con W
1
11 1001 kkkk kkkk
Z
IORLW
K
OR inmediato con W
1
11 1000 kkkk kkkk
Z
MOVLW K
Mueve a W un valor inmediato
1
11 00xx kkkk kkkk
***
SUBLW
K
Resta W de un valor inmediato
1
11 110x kkkk kkkk
C, DC, Z
XORLW
K
OR exclusivo de un inmediato con W
1
11 1010 kkkk kkkk
Z
Curso de Microcontroladores
Profr. Felipe Santiago
12
6
EJERCICIOS 4:
1. Se desea cargar en el registro W el valor inmediato 0x33:
a) ¿Qué instrucción se puede emplear?
b) Formato de la instrucción
2.Indicar el valor del registro W después de ejecutar el siguiente programa:
movlw
0x45
sublw
0x95
3. Averiguar el contenido de W después de ejecutar el siguiente programa:
clrw
addlw
0x55
andlw
0xff
iorlw
0x0f
xorlw
0xaf
Curso de Microcontroladores
Profr. Felipe Santiago
13
“BRINCOS” CONDICIONALES
Son 4 instrucciones en este grupo, se brinca la siguiente instrucción,
omitiendo su ejecución.
En las 2 primeras el brinco depende del estado de 1 bit, y su formato
es similar al de las instrucciones orientadas al manejo de bits:
13
10 9
OPCODE
7 6
b (posición)
0
f (dir. del registro)
En las otras dos, el brinco esta en función de la puesta a cero de
un registro después de un incremento o decremento. Su formato
es el mismo que el de las instrucciones que manipulan registros:
13
8
OPCODE
7
d
6
0
f (dir. del registro)
Curso de Microcontroladores
Profr. Felipe Santiago
14
7
El grupo de estas 4 instrucciones incluye:
BRINCOS CONDICIONALES
SINTAXIS
OPERACIÓN
CICLOS
FORMATO
BANDERAS
BTFSC
f, b
Explora al bit b de f y brinca si vale 0
1 (2)
01 10bb bfff ffff
***
BTFSS
f, b
Explora al bit b de f y brinca si vale 1
1 (2)
01 11bb bfff ffff
***
DECFSZ
f, d
Decrementa f y si es 0, brinca
1 (2)
00 1011 dfff ffff
***
INCFSZ
f, d
Incrementa f y si es 0, brinca
1 (2)
00 1111 dfff ffff
***
EJERCICIOS 5:
1. Hallar el formato de la instrucción btfss 0x08, 3
2. Evaluar el valor del bit 4 del registro Estado. Si vale 1, poner a 0 el registro
W, y si dicho bit vale 0 ponerlo a 1.
3. Decrementar el contenido del registro FSR hasta que valga cero y entonces
borrar W.
Curso de Microcontroladores
Profr. Felipe Santiago
15
SALTOS INCONDICIONALES
Estas instrucciones modifican el contenido del PC, rompiendo la
secuencia ordenada de las instrucciones en un programa. Los
campos de estas instrucciones son:
13
11 10
OPCODE
0
K (Literal)
Los saltos incondicionales más otras instrucciones de control y
especiales se listan a continuación:
SALTOS INCONDICIONALES, DE CONTROL Y ESPECIALES
SINTAXIS
CALL
K
OPERACIÓN
CICLOS
FORMATO
BANDERAS
Llamada a subrutina
2
10 0kkk kkkk kkkk
TO#, PD#
CLRWDT
Borra o refresca al perro guardián
1
00 0000 0110 0100
***
GOTO K
Salto incondicional
2
10 1kkk kkkk kkkk
***
RETFIE
Retorno de Interrupción (GIE = 1)
2
00 0000 0000 1001
***
RETLW K
Retorno de subrutina y carga W = K
2
11 01xx kkkk kkkk
***
RETURN
Retorno de subrutina
2
00 0000 0000 1000
***
SLEEP
Pasa al modo de reposo
1
00 0000 0110 0011
TO#, PD#
Curso de Microcontroladores
Profr. Felipe Santiago
16
8
Comportamiento del PC
El Program Counter es de 13 bits, por lo que se compone de dos registros
PCL y PCLATH.
PCL se puede modificar directamente a
través de la ALU, conservando la parte
alta del Program Counter.
Instrucciones como GOTO y CALL
modifican una parte de PCH.
La diferencia entre GOTO y CALL es
que CALL almacena en la pila el valor
del PC, previamente incrementado.
Return, retlw y retfie sustituyen el valor
del program counter con una constante
extraída de la Pila.
Curso de Microcontroladores
Profr. Felipe Santiago
17
Curso de Microcontroladores
Profr. Felipe Santiago
18
9
Descargar