Vous êtes sur la page 1sur 8

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO

ECP 1 de 8

I. TEMA

INSTRUCCIONES BASICAS DEL PIC 16F84A

II. OBJETIVOS El estudiante al finalizar la prctica ser capaz de: 1. Identificar las instrucciones ensamblador bsicas del PIC 16F84. 2. Escribir programas bsicos en el lenguaje ensamblador del PIC 16F84. III. MATERIALES NECESARIOS Para el desarrollo de la presente prctica, es necesario: 1. IDE MPLAB versin 8.x o superior. IV. TRABAJO PREPARATORIO 1. Conocimiento de la arquitectura del microcontrolador 16F84A 2. Conocer el uso del IDE MPLAB para el desarrollo de aplicaciones en el lenguaje ensamblador del microcontrolador 16F84A V. MARCO TEORICO Las caractersticas y capacidad de un procesador estn definidas por el conjunto de instrucciones que esta pone a disposicin del programador. Por tal razn, es fundamental conocer el conjunto de instrucciones del microcontrolador que estamos utilizando en la presente asignatura. Si bien es cierto que se puede escribir programas para el PIC 16F84A utilizando lenguajes de alto nivel como el C o el Basic, que permitiran tiempos de desarrollo ms rpidos; en la asignatura, orientada al estudio de los microprocesadores y su arquitectura, estudiaremos y utilizaremos el lenguaje ensamblador del PIC 16F84A. El PIC 16F84A comprende un conjunto de 35 instrucciones. Un nmero pequeo comparado con las ms de 300 instrucciones que tiene un microprocesador como el Pentium IV de Intel. Clasificaremos, para su estudio, las instrucciones del microcontrolador 16F84A como instrucciones bsicas e instrucciones avanzadas

INSTRUCCIONES BASICAS Dentro de estas incluimos las instrucciones aritmticas, de movimiento, lgicas, de complemento, de puesta en cero, de intercambio y de rotacin.

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO
ECP 2 de 8

INSTRUCCIONES DE COPIA (MOVIMIENTO)


MOVLW Sintaxis movlw k Move Literal to W Mover literal a W Operandos 0 k 255 Operacin K => W Indicadores Ninguno

Mueve los 8 bits del literal 'k' al registro de trabajo 'W'.

MOVWF Sintaxis movwf f

Move W to f Mover W a F Operandos 0 f 127 Operacin W => f Indicadores Ninguno

Mueve el contenido del registro de trabajo 'W' al registro 'f'.

MOVF Sintaxis movf f,d

Move f Mover F Operandos 0 f 127, d [0,1] Operacin f => d Indicadores Z

Mueve el contenido del registro 'f' al registro destino indicado con 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. El indicador 'Z' del registro 'STATUS' queda afectado: 'Z=1' si el contenido movido es CERO.

INSTRUCCIONES DE SUMA
ADDLW Sintaxis addlw k Add Literal to W Sumar literal a W Operandos 0 k 255 Operacin k + W => W Indicadores C, DC, Z

Suma los 8 bits del literal 'k' con el registro de trabajo 'W' y el resultado lo almacena en el registro de trabajo 'W'.

ADDWF Sintaxis addwf f,d

Add W and f Sumar W y F Operandos 0 f 127, d [0,1] Operacin f + W => d Indicadores C, DC, Z

Suma el contenido del registro 'f' al contenido del registro de trabajo 'W' y el resultado se almacena en el destino 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'.

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO
ECP 3 de 8

INSTRUCCIONES DE SUSTRACCIN
SUBLW Sintaxis sublw k Subtract W from Literal Restar W de literal Operandos 0 k 255 Operacin k - W => W Indicadores C, DC, Z

Resta de los 8 bits del literal 'k' el contenido del registro de trabajo 'W' y el resultado lo almacena en el registro de trabajo 'W'.

SUBWF Sintaxis subwf f,d

Subtract W from f Restar W de F Operandos 0 f 127, d [0,1] Operacin f - W => d Indicadores C, DC, Z

Resta del contenido del registro 'f' el contenido del registro de trabajo 'W' y el resultado se almacena en el destino 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'.

INSTRUCCIONES DE PUESTA EN CERO


CLRW Sintaxis clrw Clear W Limpiar W Operandos ninguno Operacin 0 => W Indicadores Z

Carga cero al registro de trabajo 'W' y se establece el indicador cero, 'Z=1'.

CLRF Sintaxis clrf f

Clear f Limpiar F Operandos 0 f 127 Operacin 0 => f Indicadores Z

Carga cero al registro 'f' y se establece el indicador cero, 'Z=1'.

INSTRUCCIONES DE INCREMENTO Y DECREMENTO


DECF Sintaxis decf f,d Decrement f Decrementar F Operandos 0 f 127, d [0,1] Operacin f - 1 => d Indicadores Z

Decrementa el contenido del registro 'f'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Si el resultado del incremento es cero, se establece el indicador cero, 'Z=1'.

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO
ECP 4 de 8 INCF Sintaxis incf f,d Increment f Incrementar F Operandos 0 f 127, d [0,1] Operacin f + 1 => d Indicadores Z

Incrementa el contenido del registro 'f'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Si el resultado del decremento es cero, se establece el indicador cero, 'Z=1'.

INSTRUCCIN LGICA Y (AND)


ANDLW Sintaxis andlw k And Literal with W And literal con W Operandos 0 k 255 Operacin k .AND. W => W Indicadores Z

Efecta la operacin AND de los 8 bits del literal 'k' con el registro 'W' y almacena el resultado en 'W'. Actualiza el indicador 'Z'.

ANDWF Sintaxis andwf f,d

And W with f And W con F Operandos 0 f 127, d [0,1] Operacin f .AND. W => d Indicadores Z

Efecta la operacin AND del contenido del registro 'f' con el registro 'W' y almacena el resultado en 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Actualiza el indicador 'Z'.

INSTRUCCIN LGICA O INCLUSIVA (OR)


IORLW Sintaxis iorlw k Inclusive OR Literal with W Or literal con W Operandos 0 k 255 Operacin k .OR. W => W Indicadores Z

Efecta la operacin OR de los 8 bits del literal 'k' con el registro 'W' y almacena el resultado en 'W'. Actualiza el indicador 'Z'.

IORWF Sintaxis iorwf f,d

Includive OR W with f Or W con F Operandos 0 f 127, d [0,1] Operacin f .OR. W => d Indicadores Z

Efecta la operacin OR del contenido del registro 'f' con el registro 'W' y almacena el resultado en 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Actualiza el indicador 'Z'.

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO
ECP 5 de 8

INSTRUCCIN LGICA O EXCLUSIVA (XOR)


XORLW Sintaxis xorlw k Exclusive OR Literal with W Xor literal con W Operandos 0 k 255 Operacin k .XOR. W => W Indicadores Z

Efecta la operacin XOR de los 8 bits del literal 'k' con el registro 'W' y almacena el resultado en 'W'. Actualiza el indicador 'Z'.

XORWF Sintaxis xorwf f,d

Exclusive OR W with f Xor W con F Operandos 0 f 127, d [0,1] Operacin f .XOR. W => d Indicadores Z

Efecta la operacin XOR del contenido del registro 'f' con el registro 'W' y almacena el resultado en 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Actualiza el indicador 'Z'.

INSTRUCCIN DE COMPLEMENTO
COMF Sintaxis comf f,d Complement f complementar F Operandos 0 f 127, d [0,1] Operacin ~f => d Indicadores Z

Efecta el complemento bit a bit del contenido del registro 'f' y almacena el resultado en 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Actualiza el indicador 'Z'.

INSTRUCCIN DE INTERCAMBIO DE NIBLES


SWAPF Sintaxis swapf f,d Swap Nibbles in f Intercambiar nibles en F Operandos 0 f 127, d [0,1] Operacin f[3:0]=>d[7:4],f[7:4]=>d[3:0] Indicadores ninguno

Efecta el intercambio del nible menos significativo con el nible ms significativo del registro 'f' y almacena el resultado en 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Actualiza el indicador 'Z'.

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO
ECP 6 de 8

INSTRUCCIONES DE ROTACIN
RLF Sintaxis Rotate Left f through Carry Rotar F a la izquierda a travs del bit de Acarreo Operandos Operacin Indicadores

rlf f,d

0 f 127, d [0,1]

Rota un bit a la izquierda, el contenido del registro 'f' pasando por el indicador de acarreo 'C' y almacena el resultado en 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Actualiza el indicador 'C'.

RRF Sintaxis

Rotate Right f through Carry - Rotar F a la derecha a travs del bit de Acarreo Operandos Operacin Indicadores

rrf f,d

0 f 127, d [0,1]

Rota un bit a la derecha, el contenido del registro 'f' pasando por el indicador de acarreo 'C' y almacena el resultado en 'd'. Si 'd=0' el destino es el registro de trabajo 'W'. Si 'd=1' el destino es el propio registro 'f'. Actualiza el indicador 'C'.

VI. DESARROLLO DE LA PRACTICA 1. Escriba un programa que calcule la diferencia de dos nmeros de 8 bits, sin utilizar las instrucciones de sustraccin

Solucin
;**********************************************************; ; Nombre : apComplemento ; ; Proposito : Calcula la diferencia entre 2 variables; ; Autor : Edwin Carrasco ; ; FCreacion : 31/12/2007 ; ; FModificacion : -----; ;**********************************************************; LIST P=16f84A ; Modelo de PIC utilizado INCLUDE <P16f84A.INC>; Contiene definiciones del PIC

;********DATOS num1 equ 0xA num2 equ0xB resul equ0xC ; ; ; primer numero segundo numero almacena la diferencia

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO
ECP 7 de 8

;********CODIGO ORG 5 Inicio movlw movwf movlw movwf comf addlw addwf movwf END ; Indica donde comienza el programa

.20 num1 .10 num2 num2,0 .1 num1,W resul

; ; ; ; ; ; ; ;

W <- 20 num1 <- 20 W <- 10 num2 <- 10 W <- ~num2 W <- ~num2 + 1 = -num2 W <- num1 + ~num2 + 1 = num1 - num2 resul <- W

2. Escriba un programa que intercambie los valores almacenados en dos variables v1 y v2, sin utilizar variables auxiliares

Solucin
;**********************************************************; ; Nombre : apSwap ; ; Proposito : Intercambia dos variables, sin utilizar variables auxiliares ; ; Autor : Edwin Carrasco ; ; FCreacion : 05/01/2008 ; ; FModificacion : -----; ;**********************************************************; LIST P=16f84A ; INCLUDE <P16f84A.INC>; Modelo de PIC utilizado Contiene definiciones del PIC

;********DATOS v1 v2 equ 0xA equ 0xB ; ; primer numero segundo numero

;********CODIGO ORG 5 Inicio movlw movwf movlw movwf xorwf xorwf ; Indica donde comienza el programa

.7 v1 .5 v2 v1, 1 v1, 0

; ; ; ; ; ;

W <- 10 num1 <- 10 W <- 15 num2 <- 15 v1 <- v1 .xor. v2 W <- v1 .xor. v2

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO
ECP 8 de 8

xorwf v1, 1 movwf v2 END

; ;

v1 <- v1 .xor. v2 v2 <- W

VII. EJERCICIOS PROPUESTOS 1. Escriba un programa que cargue el nmero 79 en la variable nro1 y almacene en la variable nro2 el resultado de aplicar la mscara 00001111 al contenido de la variable nro1. 2. Escriba un programa secuencial que multiplique -9 y 4 y almacene el resultado en la variable total. 3. Escriba un programa que calcule la diferencia de dos nmeros de 8 bits var1 y var2, sin utilizar las instrucciones de sustraccin. 4. Un nible es una agrupacin de 4 bits (medio byte). Escriba un programa que sume el nible ms significativo de una variable de 8 bits denominada msn, con el nible menos significativo de otra variable de 8 bits denominada lsn. El resultado debe almacenarse en una tercera variable denominada sumaNibles. 5. Escriba un programa secuencial que calcule prod = nro01 * 8. 6. Escriba un programa secuencial que calcule el cociente entero de dividir var01 entre el nmero 4. VIII. BIBLIOGRAFIA BIBLIOGRAFIA BSICA 1. Angulo Jose et. al. Microcontroladores PIC. Diseo prctico de aplicaciones. 3ed. McGraw Hill 2003 2. Bates Martin. PIC Microcontrollers. An Introduction To Microelectronics 2ed. Newnes 2004. 3. Gardner Niguel. A Beginners Guide To The Microchip PIC. 1ed. Blueprint Technical Press 1998. 4. Palacios Enrique et. al. Microcontrolador PIC 16F84. Desarrollo de proyectos 2Ed. Alfaomega 2006 5. www.microchip.com Sitio Web del fabricante del PIC 16F84 y del IDE MPLAB 6. http://ww1.microchip.com/downloads/en/DeviceDoc/35007b.pdf - Ficha tcnica del PIC 16F84 BIBLIOGRAFIA COMPLEMENTARIA 1. http://www.hispavila.com/3ds/chipspic/microspic1.html 2. http://sputnik.epsj23.net/%7Eeserra/elect/pics/pic16f84.html