0% encontró este documento útil (0 votos)
194 vistas49 páginas

Set de Instrucciones Pic16f84a

Este documento proporciona una introducción al conjunto de instrucciones del microcontrolador PIC16F84A. Explica que tiene 35 instrucciones de tipo RISC de 14 bits, y describe los formatos y nomenclaturas de las instrucciones orientadas a bytes, bits y literales. También resume los diferentes tipos de instrucciones como de carga, aritméticas, lógicas y de salto, dando ejemplos de su sintaxis y uso.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
194 vistas49 páginas

Set de Instrucciones Pic16f84a

Este documento proporciona una introducción al conjunto de instrucciones del microcontrolador PIC16F84A. Explica que tiene 35 instrucciones de tipo RISC de 14 bits, y describe los formatos y nomenclaturas de las instrucciones orientadas a bytes, bits y literales. También resume los diferentes tipos de instrucciones como de carga, aritméticas, lógicas y de salto, dando ejemplos de su sintaxis y uso.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 49

CURSO : MICROCONTROLADORES

COURSE : MICROCONTROLLERS

INSTRUCTION SET SUMMARY (SET DE


INSTRUCCIONES PIC16F84A)

Autor: Ing.Wolffang David Niño


Correo : wolffang.niñ[email protected].
SET DE INSTRUCCIONES
INTRODUCCIÓN
❖ Los PIC16F84A 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.

❖ 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.
SET DE INSTRUCCIONES
INTRODUCCIÓN
❖ 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.
NOMENCLATURA DE 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
FORMATO DE LAS INSTRUCCIONES
• Instrucciones orientadas a bytes o registros (18)

Donde:

❖ Opcode es el código de operación. ( ) significa contenidos.


FORMATO DE LAS INSTRUCCIONES
• Instrucciones orientadas a bits (4).

Donde:

❖ Opcode es el código de operación. ( ) significa contenidos.


FORMATO DE LAS INSTRUCCIONES
❖ Instrucciones de control y con literales (13).
FORMATO DE LAS INSTRUCCIONES
❖ Instrucciones Orientadas a Bytes O Registros
FORMATO DE LAS INSTRUCCIONES
❖ Instrucciones Orientadas a Bits. Instrucciones Con Literales Y
De Control
FORMATO DE LAS INSTRUCCIONES
❖ Instrucciones Orientadas a Bits. Instrucciones Con Literales Y
De Control
Constantes Numéricas y Alfanuméricas
Tipo Sintaxis Ejemplo
Decimal D’cantidad’ D’100’
d’cantidad’ d’100’
.cantidad .100
Hexadecimal H’cantidad’ H’100’
h’cantidad’ h’100’
<cantidad>H 100H
<cantidad>h 100h
0x<cantidad> 0x0C
Octal O’cantidad’ O’100’
o’cantidad’ o’100’
Constantes Numéricas y Alfanuméricas
Tipo Sintaxis Ejemplo
Binario B’cantidad’ B’100’
b’cantidad’ b’100’

ASCII A’caracter’ A’B’


a’caracter’ a’B’
caracter ‘B’
String o Cadena ’string’ ’Hola!!!!!!!’
de Caracteres
Repertorio de Instrucciones
❖ El set de instrucciones del PÍC16F84A esta compuesto por 35
instrucciones , que se clasifican como :
❖ Instrucciones de Carga
❖ Instrucciones Aritméticas
❖ Instrucciones Lógicas
❖ Instrucciones de Bit
❖ Instrucciones de Salto
❖ Instrucciones para el manejo de subrutinas
❖ Instrucciones especiales
Instrucciones de Carga
Instrucción MOVLW
L (Constante), W (Registro de Trabajo)
• Esta instrucción mueve al registro W un valor inmediato
determinado por ‘K’.
• Modo de direccionamiento?
• Sintaxis : movlw k
• ‘k’ es el valor que se quiere mover al registro ‘W’
• Ejemplo : Cargar en W el valor 31 decimal….. movlw 0x1F
Instrucciones de Carga
Instrucción MOVLW
L (Constante), W (Registro de Trabajo)
• Esta instrucción mueve al registro W un valor inmediato
determinado por ‘K’.
• Modo de direccionamiento?
• Sintaxis : movlw k
• ‘k’ es el valor que se quiere mover al registro ‘W’
• Ejemplo : Cargar en W el valor 31 decimal….. movlw 0x1F
Instrucciones de Carga
Instrucción MOVWF
F (dirección de memoria especifica)
• Esta instrucción mueve el valor del registro W un al registro
indicador por ‘f’
• Modo de direccionamiento?
• Sintaxis : movwf f

• Ejemplo : Cargar en W el valor 31 decimal….. movlw 0x1F


Instrucciones de Carga
Instrucción MOVWF
• Ejemplo : Cargar en W el valor 10 decimal, y transferirlo a la
dirección 0x0C de la RAM
• movlw .10
• movwf 0x0C
Arquitectura Ortogonal?
Instrucciones de Carga
Instrucción MOVF
• Esta instrucción mueve el registro indicado por ‘f’(dirección
dato), d(destino). Porque no a una dirección de memoria?
• Procesador RISC…..Sintaxis : movf f,d
• Donde ‘d’ es el que determina donde se almacenara el
resultado, de modo que si :
• d= ‘0’ ; se guarda el resultado en el registro W
• d = ‘1’; se guarda el resultado en el registro f(mismo registro)
Instrucciones de Carga
Instrucción MOVF
• Ejemplo : Almacenar en la dirección 0x0C el valor 255
decimal, en la dirección 0x0D el valor 8,finalmente copiar el
contenido de la dirección 0x0C a la 0X0E
• movlw 255
Instrucciones de Carga
Instrucción MOVF
• Ejemplo : Almacenar en la dirección 0x0C el valor 255
decimal, en la dirección 0x0D el valor 8,finalmente copiar el
contenido de la dirección 0x0C a la 0X0E
• movlw 255
• movwf 0x0C
Instrucciones de Carga
Instrucción MOVF
• Ejemplo : Almacenar en la dirección 0x0C el valor 255
decimal, en la dirección 0x0D el valor 8,finalmente copiar el
contenido de la dirección 0x0C a la 0X0E
• movlw .255
• movwf 0x0C
• movlw .8
Instrucciones de Carga
Instrucción MOVF
• Ejemplo : Almacenar en la dirección 0x0C el valor 255
decimal, en la dirección 0x0D el valor 8,finalmente copiar el
contenido de la dirección 0x0C a la 0X0E
• movlw .255
• movwf 0x0C
• movlw .8
• movwf 0x0D
Instrucciones de Carga
Instrucción MOVF
• Ejemplo : Almacenar en la dirección 0x0C el valor 255
decimal, en la dirección 0x0D el valor 8,finalmente copiar el
contenido de la dirección 0x0C a la 0X0E
• movlw .255
• movwf 0x0C
• movlw .8
• movwf 0x0D
• movf 0x0C,0
Instrucciones de Carga
Instrucción MOVF
• Ejemplo : Almacenar en la dirección 0x0C el valor 255
decimal, en la dirección 0x0D el valor 8,finalmente copiar el
contenido de la dirección 0x0C a la 0X0E
• movlw .255
• movwf 0x0C
• movlw .8
• movwf 0x0D
• movf 0x0C,0
• movwf 0x0E
Instrucciones de Carga
Instrucción CLRW
• Esta instrucción borra el contenido del registro ‘W’
• Sintaxis : clrw

• Instrucción CLRF
• Esta instrucción borra el contenido del registro especificado
por la dirección ‘f’
• Sintaxis : clrf f , ‘f’ es la dirección del registro a borrar
Instrucciones de Bit
Instrucción BCF
• Esta instrucción borra un bit ‘b’ del registro ‘f’
• Sintaxis : bcf f,b ‘b’ es el bit a borrar

• Instrucción BSF
• Esta instrucción pone a uno un bit del registro ‘f’
• Sintaxis : bsf f,b ‘b’ es el bit a activar(set)
Instrucciones de Bit
Ejemplo : Escriba un código que haga lo siguiente: a) Borre el
contenido del registro 0x0C; b) borre el bit 0 del registro 0x0E y ; c)
active el bit 5 del registro 0x0D.
• clrf 0x0C
Instrucciones de Bit
Ejemplo : Escriba un código que haga lo siguiente: a) Borre el
contenido del registro 0x0C; b) borre el bit 0 del registro 0x0E y ; c)
active el bit 5 del registro 0x0D.
• clrf 0x0C
• bcf 0x0E,0
Instrucciones de Bit
Ejemplo : Escriba un código que haga lo siguiente: a) Borre el
contenido del registro 0x0C; b) borre el bit 0 del registro 0x0E y ; c)
active el bit 5 del registro 0x0D.
• clrf 0x0C
• bcf 0x0E,0
• bsf 0x0C,5
Instrucciones aritméticas
Registro STATUS :Contiene el estado aritmético de la ALU , el
estado del reset y los bits para la selección del banco
Instrucciones aritméticas
Instrucción ADDLW :
Esta instrucción suma al valor ‘k’ al registro w
• Sintaxis : addlw k
Donde ‘k’ es el valor que se desea sumar al registro W

Ejemplo : Escriba un código que haga que sume un 20h al


contenido del registro W

Addlw 0x20
Instrucciones aritméticas
Instrucción ADDWF :
Esta instrucción suma al el registro W con el registro indicado
por ‘f’.
Sintaxis : addwf f,d
Si d= ‘0’ el resultado de la suma se almacenara en el registro W,
pero si d=‘1’, el resultado será en el registro ‘f’
Ejemplo : Escriba un código que almacene en 0x0D, la suma del
contenido del registro 0x0C mas 20h.

movlw 0x20
Instrucciones aritméticas
Instrucción ADDWF :
Esta instrucción suma al el registro W con el registro indicado
por ‘f’.
Sintaxis : addwf f,d
Si d= ‘0’ el resultado de la suma se almacenara en el registro W,
pero si d=‘1’, el resultado será en el registro ‘f’
Ejemplo : Escriba un código que almacene en 0x0D, la suma del
contenido del registro 0x0C mas 20h.

movlw 0x20
addwf 0x0C, 0
Instrucciones aritméticas
Instrucción ADDWF :
Esta instrucción suma al el registro W con el registro indicado
por ‘f’.
Sintaxis : addwf f,d
Si d= ‘0’ el resultado de la suma se almacenara en el registro W,
pero si d=‘1’, el resultado será en el registro ‘f’
Ejemplo : Escriba un código que almacene en 0x0D, la suma del
contenido del registro 0x0C mas 20h.
movlw 0x20
addwf 0x0C, 0
movwf 0x0D
Instrucciones aritméticas
Instrucción SUBLW :
Esta instrucción Resta el valor del registro a un valor inmediato
determinado por ‘k’
Sintaxis : sublw k

Instrucción SUBWF:
Realiza la resta del registro ‘W’ al registro ‘f’ (f-W)
Sintaxis subwf f,d
Donde ‘d’ es el que determinara donde se almacenara el
resultado de modo que si d= ‘0’ el resultado de la operación se
guardara en el registro W, pero si d=‘1’ el resultado de la
operación se almacenara en 0 ‘f’
Instrucciones de salto
• Instrucción GOTO :
• Esta instrucción realiza un salto incondicional a la dirección
especificada por ‘k’ o a la etiqueta especificada. Si k =$ , el salto
se produce en la misma posición .
• Sintaxis : goto k
FORMATO DE LAS INSTRUCCIONES
❖ ADDLW (Suma W con un literal)
FORMATO DE LAS INSTRUCCIONES
❖ ADDWF (Suma W con un registro)
FORMATO DE LAS INSTRUCCIONES
❖ ANDLW (AND de W con un literal)
FORMATO DE LAS INSTRUCCIONES
❖ ANDWF (AND de W con un registro)
FORMATO DE LAS INSTRUCCIONES
❖ BCF (poner a 0 un bit del registro f)
FORMATO DE LAS INSTRUCCIONES
❖ BSF (poner a 1 un bit del registro f)
FORMATO DE LAS INSTRUCCIONES
❖ BTFSC (Testea un Bit y Salta si Cero)
FORMATO DE LAS INSTRUCCIONES
❖ BTFSC (Testea un Bit y Salta si Cero)
FORMATO DE LAS INSTRUCCIONES
❖ BTFSC (Testea un Bit y Salta si Cero)

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
FORMATO DE LAS INSTRUCCIONES
❖ BTFSC (Testea un Bit y Salta si Cero)
FORMATO DE LAS INSTRUCCIONES
❖ BTFSS (Testea un Bit y Salta si Set)
FORMATO DE LAS INSTRUCCIONES
❖ CALL (Llamada a subrutina)

También podría gustarte