You are on page 1of 5

Instrucciones.

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.

Figura 1. Identificacin de los segmentos en el display.

Pgina 1 de 5

INICIO

Configuracin PIC

Configuracin de los bits para interrupcin Contador = 0 B -> Contador

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

Contador = Contador + 1 B -> Contador Contador = 0 B -> Contador

Figura 2. Diagrama de flujo del programa.

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

INTCON,GIE STATUS,RP0 PORTB COUNT COUNT,0 TAB PORTB CICLO INTCON,INTF

; ; ; ; ; ; ; ; ; ;

INTCON,INTF COUNT,1 COUNT,0 010H STATUS,C COUNT COUNT,0 TAB PORTB

; ; ; ; ; ; ; ; ; ;

PCL,1

DT

7EH,0CH,0B6H,9EH, 0CCH,0DAH,0FAH,0EH, 0FEH,0CEH,0EEH,0F8H, 72H,0BCH,0F2H,0E2H

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

; FIN DEL PROGRAMA

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

Figura 3. Diseo del circuito requerido en la prctica en Proteus utilizando el PIC16F84A.

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

You might also like