Professional Documents
Culture Documents
Empleando el PIC16F84, realizar un programa que realice un conteo ascendente en hexadecimal de 0 a F el cual ser controlado mediante la tcnica de interrupcin externa empleando el pin RB0/INT del PIC, adems realizar la simulacin e implementacin fsica de este en un circuito donde el conteo se ir mostrando en un display de 7 segmentos.
Descripcin del programa. El programa consta de emplear la tcnica de interrupcin externa del pin RB0/INT para interrumpir la constante ejecucin de una parte cclica del programa y as al realizarse la interrupcin controlar un conteo hexadecimal de 0 a F de manera ascendente e infinita, es decir, una vez que se llegue a F en el conteo regrese a comenzar nuevamente en 0. Para poder obtener dicho conteo en un display de 7 segmentos, se emplea el uso de las tablas de datos en la programacin y as obtener en el puerto B las cadenas de bits que iluminan cada segmento del display de acuerdo al conteo. Debido a que en el puerto B el bit 0 o RB0 ya se esta empleando para la interrupcin, las cadenas de bits para el display tienen un bit mas, siendo as solo los bits despus el primero los que corresponden a los segmentos del display estando acomodados de la manera g-f-e-d-c-b-a-RB0, siendo la identificacin de cada segmento las mostradas en la figura 1. Observe el diagrama de flujo de la figura 2 para entender con mayor claridad el programa.
Pgina 1 de 5
INICIO
Configuracin PIC
INT=1
0 01111110 7EH 1 00001100 0CH 2 10110110 B6H 3 10011110 9EH 4 11001100 CCH 5 11011010 DAH 6 11111010 FAH 7 00001110 0EH 8 11111110 FEH 9 11001110 CEH A 11101110 EEH B 11111000 F8H C 01110010 72H D 10111100 BCH E 11110010 F2H F 11100010 E2H
Contador=0FH
Cdigo.
#INCLUDE <P16F84A.INC> __CONFIG _CP_OFF& _XT_OSC& _WDT_OFF& _PWRTE_ON ; DIRECTIVAS COUNT EQU 0CH ; ASIGNA A COUNT LA DIRECCION DE MEMORIA 0CH ORG 0000H ; DIRECCION DEL INICIO DEL PORGRAMA GOTO BEGIN ; SALTO A LA SECCION BEGIN ORG 0004H ; DIRECCIN ORIGEN PARA LA INTERRUPCION GOTO INTER ; SALTO A LA SECCION INTER BSF STATUS,RP0 ; CAMBIO DEL BANCO 0 AL BANCO 1 MOVLW 01H ; CARGA AL REGISTRO DE TRABAJO UN 1 MOVWF TRISB ; ESTABLECE AL PRIMER BIT DEL PUERTO B COMO ENTRADA BSF INTCON,INTE ; ACTIVACION DE LA INTERRUPCION EXTERNA BSF OPTION_REG,INTEDG ; ASIGNACION DEL FLANCO POSITIVO PARA LA INTERRUPCION
BEGIN:
Pgina 2 de 5
BSF BCF CLRF CLRF MOVF CALL MOVWF CICLO: INTER: GOTO BTFSS RETFIE BCF INCF MOVF SUBLW BTFSS CLRF MOVF CALL MOVWF RETFIE TAB: ADDWF
; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ; ; ; ; ;
PCL,1
DT
ACTIVACION DE INTERRUPCIONES GLOBALES CAMBIO DEL BANCO 1 AL BANCO 0 LIMPIEZA DEL PUERTO B LIMPIEZA DE COUNT COLOCA EL VALOR DE COUNT EN EL REGISTRO DE TRABAJO LLAMA A LA SUBRUTINA TAB MUEVE EL VALOR DEL REGISTRO DE TRABAJO AL PUERTO B CICLO EMPLEADO PARA ESPERAR LA INTERRUPCION PRUEBA EL ESTADO DEL BIT INTF DEL REGISTRO INTCON REGRESA AL PROGRAMA DESPUES DE LA INTERRUPCION LIMPIA EL BIT INTF DEL REGISTRO INTCON INCREMENTA AL CONTADOR COUNT EN 1 CARGA EL VALOR DE COUNT AL REGISTRO DE TRABAJO SE RESTA EL REGISTRO DE TRABAJO DE 16 (010H) PRUEBA EL ESTADO DE LA BANDERA DE CEROS SI EL ESTADO INDICA HABER UN CERO EN EL RESULTADO DE LA RESTA, SE LIMPIA COUNT CARGA EL VALOR DE COUNT AL REGISTRO DE TRABAJO LLAMA A LA SUBRUTINA TAB CARGA EL VALOR DEL REGISTRO DE TRABAJO AL PUERTO B REGRESA AL PROGRAMA DESPUES DE LA INTERRUPCION SE SUMA EL REGISTRO DE TRABAJO CON PCL Y EL RESULTADO SE GUARDA EN PCL PARA SELECCIONAR LA CADENA DE BITS QUE CORRESPONDA AL VALOR DEL CONTEO CADENAS BINARIAS REPRESENTADAS EN HEXADECIMAL
END
Simulacin. Como en las dos anteriores prcticas, se emple el mismo esquemtico base del PIC16F84A. La totalidad del puerto A se dej sin conectar y solamente fue colocado un estado lgico en RB0 para el incremento o decremento mediante interrupcin. Al resto de los pines del puerto B le fueron colocados un display de 7 segmentos de ctodo comn de color verde. Ya armado el diseo correcto (ver Figura 3), se carg el programa practica9.hex al PIC virtual.
Pgina 3 de 5
La simulacin del diseo y del programa realizado si fue el esperado, a la par que diversas pruebas fueron realizadas. Todos los nmeros de la serie se muestran en la figura 4. Al momento en que se colocaba en alto el estado lgico correspondiente al bit de interrupcin RB0, el conteo de 0 a F se iba recorriendo nmero por nmero de forma ascendente, como se observa en las figuras 5, 6 y 7. Como se sabe, en esta simulacin y en toda la prctica, esta vez no existi un conteo de forma descendente.
Figura 4. Nmeros mostrados en el display de 7 segmentos virtual de todo el conteo de forma ascendente.
Figura 5. Simulacin del cdigo, mostrando en el display el nmero 0 en modo de corrimiento ascendente.
Figura 6. Simulacin del cdigo, mostrando en el display el nmero 1 en modo de corrimiento ascendente.
Pgina 4 de 5
Figura 7. Simulacin del cdigo, mostrando en el display el nmero 2 en modo de corrimiento ascendente.
Pgina 5 de 5