Post on 28-Apr-2018
transcript
1
Curso de Microcontroladores Profr. Felipe Santiago 1
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 2
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?
2
Curso de Microcontroladores Profr. Felipe Santiago 3
Modos de direccionamiento
El PIC16F84 permite tres modos de direccionamiento:
Directo
Indirecto
Inmediato
En la instrucción se incluye la dirección del registro al que se tendrá
acceso. Ejemplo: movwf 0x0C
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.
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 4
Direccionamiento directo e indirecto
3
Curso de Microcontroladores Profr. Felipe Santiago 5
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.
CAMPOS EN LAS INSTRUCCIONES
Curso de Microcontroladores Profr. Felipe Santiago 6
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 instrucciones4. Instrucciones de brincos condicionales
4 instrucciones
5. Instrucciones saltos incondicionales y otras instrucciones especiales
7 instrucciones
Total : 35 Instrucciones.
CLASIFICACIÓN DE LAS INSTRUCCIONES
4
Curso de Microcontroladores Profr. Felipe Santiago 7
INSTRUCCIONES ORIENTADAS A MANEJAR REGISTROS
El formato de estas instrucciones es el siguiente:
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 reg1, 1
movf reg1, 1
OPCODE d f (dir. del registro)
13 8 7 6 0
Curso de Microcontroladores Profr. Felipe Santiago 8
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 f Borra f (pone todos los bits a 0) 1 00 0001 1fff ffff Z
CLRW ----- Borra W 1 00 0001 0xxx xxxx Z
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
IORWF f, d OR entre W y f 1 00 0100 dfff ffff Z
MOVF f, d Mueve al registro f 1 00 1000 dfff ffff Z
MOVWF f Mueve W a f 1 00 0000 1fff ffff ***
NOP No opera 1 00 0000 0xxx xxxx ***
RLF f, d Rota f a la Izq. a través del acarreo 1 00 1101 dfff ffff C
RRF f, d Rota f a la der. a través del acarreo 1 00 1100 dfff ffff 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 ***
XORWF f, d XOR de W con f 1 00 0110 dfff ffff Z
5
Curso de Microcontroladores Profr. Felipe Santiago 9
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 0x05, 0
incf 0x05, 1
comf 0x06, 1
iorwf 0x06, 0
xorwf 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 10
INSTRUCCIONES ORIENTADAS A MANEJAR BITS
El formato de estas instrucciones es el siguiente:
La sintaxis de estas instrucciones es: nemónico f, b
y comprende únicamente las instrucciones:
OPCODE b (posición) f (dir. del registro)
13 10 9 7 6 0
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 ***
6
Curso de Microcontroladores Profr. Felipe Santiago 11
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 12
OPERACIONES QUE MANEJAN UN VALOR INMEDIATO
El formato de estas instrucciones es el siguiente:
Estas instrucciones tienen por sintaxis: nemónico k,
sólo se aplican al registro W y son las siguientes:
OPCODE Valor inmediato
13 8 7 0
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
7
Curso de Microcontroladores Profr. Felipe Santiago 13
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 0x45sublw 0x95
3. Averiguar el contenido de W después de ejecutar el siguiente programa:
clrwaddlw 0x55andlw 0xffiorlw 0x0fxorlw 0xaf
Curso de Microcontroladores Profr. Felipe Santiago 14
“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:
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:
OPCODE b (posición) f (dir. del registro)
13 10 9 7 6 0
OPCODE d f (dir. del registro)
13 8 7 6 0
8
Curso de Microcontroladores Profr. Felipe Santiago 15
El grupo de estas 4 instrucciones incluye:
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.
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 ***
Curso de Microcontroladores Profr. Felipe Santiago 16
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:
OPCODE K (Literal)
13 11 10 0
Los saltos incondicionales más otras instrucciones de control y
especiales se listan a continuación:
SALTOS INCONDICIONALES, DE CONTROL Y ESPECIALES
SINTAXIS OPERACIÓN CICLOS FORMATO BANDERAS
CALL K 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#
9
Curso de Microcontroladores Profr. Felipe Santiago 17
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 18