UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO ECP 1 de 5 I. TEMA : ENTRADA/SALIDA EN EL PIC 16F84A II. OBJETIVOS El estudiante al finalizar la práctica será capaz de: 1. Comprender la gestión de las operaciones de entrada/salida en el PIC 16F84A 2. Escribir aplicaciones para el PIC 16F84A que interactúen con dispositivos externos a través de sus puertos de entrada/salida. III. MATERIALES NECESARIOS Para el desarrollo de la presente práctica, es necesario: 1. IDE MPLAB versión 8.x o superior. IV. TRABAJO PREPARATORIO 1. Comprensión de las operaciones de entrada/salida utilizando el PIC 16F84A 2. Conocer el uso del IDE MPLAB para el desarrollo de aplicaciones en el lenguaje ensamblador del microcontrolador 16F84A. V. MARCO TEORICO En la presente práctica, estudiaremos las opciones que ofrece el PIC 16F84A para realizar operaciones de entrada/salida, que le permita interactuar con dispositivos periféricos. ENTRADA/SALIDA EN EL PIC 16F84A El PIC 16F84A utiliza, para comunicarse con dispositivos externos, dos puertos: el puerto A (PORTA) y el puerto B (PORTB), los cuales pueden configurarse como puertos de entrada o de salida. PORTA es un puerto de 5 bits (RA4: RA0) mapeado en la posición 05h del banco 0. PORTB es un puerto de 8 bits (RB7: RB0) mapeado en la posición 06h del banco 0. REGIMEN DE OPERACIÓN DE LOS PUERTOS A Y B El régimen (entrada o salida), se controla por los registros TRISA y TRISB respectivamente. El registro TRISA ubicado en la posición 85h del banco 1, controla el régimen de operación de los pines de PORTA. Si un bit esta puesto en 0, el bit correspondiente de UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO ECP 2 de 5 PORTA será de salida, mientras que el bit puesto a 1 hará que el bit correspondiente en PORTA funcione como un puerto de entrada. El registro TRISB, ubicado en la posición 86h del banco 1 controla PORTB de manera igual a como el registro TRISA controla PORTA. VI. DESARROLLO DE LA PRACTICA 1. Escriba un programa que encienda un LED del puerto B al conmutar un interruptor del puerto A. Solución ;****************************************************** ;* Nombre : apPrenderLED.asm ;* Proposito : enciende un led en el puerto B ;* de acuerdo el estado del puerto A ;* Autor : Edwin Carrasco ;* FCreacion : 22/09/2009 ;* FModificacion : ------;****************************************************** * * * * * * * * list p=16f84 ;Tipo de dispositivo ;Zona de etiquetas STATUS PORTA PORTB RP0 EQU EQU EQU EQU 0x03 0x05 0x06 0x05 ORG 0 Goto INICIO ORG 5 INICIO bsf STATUS, RP0 clrf PORTB movlw b'00000100' movwf PORTA bcf STATUS, RP0 clrf PORTB ; Pone en 1 el bit 5 del registro STATUS (ir al banco 1) ; Configura B como salida ; Se configura el pin 2 del puerto A como entrada ; Pone en 0 el bit 5 del registro STATUS (ir al banco 0) ; Pone en 0 el puerto B UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO ECP 3 de 5 BUCLE btfss PORTA, 2 goto APAGAR goto ENCENDER ; Si (RA2 = 1 ) ; => apagar ; [] encender ENCENDER bsf goto PORTB, 0 BUCLE ; Pone en 1 el bit RB0 APAGAR bcf goto PORTB, 0 BUCLE ; Pone en 0 el bit RB0 END 2. Escriba un programa que encienda los puertos LED del puerto B, al establecerse el código 0110 en los interruptores del puerto A. Solución ;****************************************************** ;* Nombre : apMultiLED ;* Proposito : controla los LEDs del puerto B de ;* acuerdo al estado del registro A ;* Autor : Edwin Carrasco ;* FCreacion : 23/09/2009 ;* FModificacion : ------;* Algoritmo : ;****************************************************** list P=16f84 ;tipo de dispositivo STATUS PORTA PORTB RP0 Z EQU EQU EQU EQU EQU ORG 0 0x03 0x05 0x06 0X05 0X02 ;Registro de estado ;puerto A ;puerto B ;vector de reset goto INICIO ORG 5 ;saltamos el vector de interrupción. ;inicio del programa INICIO bsf STATUS,RP0 * * * * * * * * * UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO ECP 4 de 5 clrf movlw movwf bcf clrf PORTB b'00001111' PORTA STATUS,RP0 PORTB ;bucle que espera la combinación 0-1-1-0 BUCLE movf PORTA, W andlw b'00001111' xorlw b'00000110' btfss STATUS,Z goto BUCLE movlw 0xff movwf PORTB FIN goto FIN END ;Fin del programa 3. Escriba un programa que muestre por el puerto A, el resultado de sumar dos números de 4 bits ingresados por el puerto B. Solución ;****************************************************** ;* Nombre : apSumaNibbles ;* Proposito : calcula la suma de dos nibbles ;* ingresados por el puerto B ;* Autor : Edwin Carrasco ;* FCreacion : 23/09/2009 ;* FModificacion : ------;****************************************************** list P=16F84A include "p16f84a.inc" CBLOCK 0x0C Temp ENDC ORG goto ORG * * * * * * * * ;Configuración del 16F84A ;define la posición del inicio de las variables 0x00 INI 0x05 INI bsf STATUS,RP0 movlw 0xFF ;Banco 1 UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO MICROPROCESADORES GUIA DE LABORATORIO ECP 5 de 5 movwf PORTB clrf PORTA ;PuertaB entrada ;Puerta salida bcf clrf STATUS,RP0 PORTA ;Banco 0 ;Las lineas de salida de PuertaA a 0 PORTB,W 0x0F Temp PORTB,W 0x0F Temp,W PORTA BUCLE ; ; ; ; ; ; ; BUCLE movf andlw movwf swapf andlw addwf movwf goto END PuertoB => W Nible0(W) => W W => Temp Swap(PuertoB) => W Nible0(W) => W Temp + W => W W => PuertA VII. EJERCICIOS PROPUESTOS 1. Escriba un programa que lea 2 nibles por el puerto B y calcule la diferencia entre el nible mas significativo y el nible menos significativo y muestre el resultado por el puerto A. Utilice aritmética Complemento a 2. 2. Escriba un programa que rote el contenido del registro W tantas veces como sea el valor del puerto A y muestre el resultado por el puerto B. VIII. BIBLIOGRAFIA BIBLIOGRAFIA BÁSICA 1. Angulo Jose et. al. “Microcontroladores PIC. Diseño práctico de aplicaciones”. 3ed. McGraw Hill 2003 2. Carrasco E. http://in.unsaac.edu.pe/ecarrasco/microproc/mp.html sitio web de la asignatura. 3. Gardner Niguel. “A Beginners Guide To The Microchip PIC”. 1ed. Blueprint Technical Press 1998. 4. Microchip www.microchip.com – Sitio Web del fabricante del PIC 16F84 y del IDE MPLAB 5. Microchip http://ww1.microchip.com/downloads/en/DeviceDoc/35007b.pdf - Ficha técnica del PIC 16F84 6. Palacios Enrique et. al. “Microcontrolador PIC 16F84. Desarrollo de proyectos” 2Ed. Alfaomega 2006 BIBLIOGRAFIA COMPLEMENTARIA 1. http://www.hispavila.com/3ds/chipspic/microspic1.html 2. http://sputnik.epsj23.net/%7Eeserra/elect/pics/pic16f84.html