REPERTORIO DE INSTRUCCIONES - UTMfsantiag/PICS/sesion 3.pdf3 Curso de Microcontroladores Profr....

9
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?

Transcript of REPERTORIO DE INSTRUCCIONES - UTMfsantiag/PICS/sesion 3.pdf3 Curso de Microcontroladores Profr....

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