P4 Micro 13 E3
P4 Micro 13 E3
P4 Micro 13 E3
Puebla
8 de Octubre de 2021
Microcontroladores
Álvarez González Ricardo
Práctica 4
“Contador 0000-9999 (Timer0)”
Objetivo 3
Desarrollo Teórico 3
Temporizador/Contador 0 3
Instrucciones de lectura de tabla 3
Desarrollo Practico 4
Programa para 4MHz 4
Diagrama 7
Programa para 31kHz 7
Diagrama 10
Evidencia de funcionamiento 11
Conclusiones 14
Bibliografía 14
● Objetivo
Usando cuatro displays de 7 segmentos, diseñar un contador de 000 hasta 9999 ascendente, el
incremento será por un tiempo aproximado de 1 s utilizando el timer 0. Usar las
instrucciones específicas de lectura de tablas. Mediante la interrupción externa INT0, cada
vez que se pulse el botón pre cargar la cuenta al valor 0810.
● Desarrollo Teórico
Temporizador/Contador 0
Puede funcionar en dos modos: reloj (temporizador) o contador. Si funciona como
temporizador (poniendo a ‘0’ el bit T0CS) el registro aumentará una unidad con cada ciclo de
instrucción. Si funciona como contador (un ‘1’ en el bit T0CS), el registro aumentará con
cada subida o bajada del pin RA4/T0CKI. Este aumento será producido con el flanco de
bajada o de subida según se programe en el bit T0SE.
El pre divisor sirve para incrementar la capacidad del timer, si no está asignado, el timer se
incrementará cada vez que reciba un flanco, ó con cada ciclo de instrucción, según se halla
programado como contador o temporizador, respectivamente. Este divisor se puede
programar con los bits T0PS (Timer0 Preescaler Select).
Al oprimir el botón, el cambio a mostrar es el 0810 por lo que en el programa se debe cargar
el 0809. Además en esta práctica usaremos TRISC para el control de los transistores que
multiplexan a los display, para eso usaremos las siguientes líneas de código.
Este valor tenemos que cargarlo en los registros TMR0H y TMR0L, por lo que debemos usar
las siguientes instrucciones
movlw 0xc2
movwf TMR0H,0
movlw 0xf7
movwf TMR0L, 0; valor de precarga para 1s a 4MHz, prescaler 64
T0CON
1 0 0 1 0 1 0 1
Este valor binario 1001 0101 equivale a 0x95, que debemos cargar en el registro T0CON.
Diagrama
Este valor tenemos que cargarlo en los registros TMR0H y TMR0L, por lo que debemos usar
las siguientes instrucciones
movlw 0x87
movwf TMR0L, 0; valor de precarga para 1s a 31kHz, prescaler 64
Ahora debemos configurar los registros necesarios para activar el timer0 en 8 bits:
T0CON
1 1 0 1 0 1 0 1
Este valor binario 1101 0101 equivale a 0xD5, que debemos cargar en el registro T0CON.
Diagrama
Evidencia de funcionamiento
Al correr el código en MPLAB obtenemos lo siguiente:
➢ Puerto D Configurado como salida
● Conclusiones
Al inicio de la práctica se presentaron dudas sobre si nuestro código estaba bien elaborado o
no debido a que a la hora de correr la simulación en Proteus nos aparecía un error y no se
apreciaba el funcionamiento del contador, no obstante, después de descubrir que el error se
debía a la frecuencia en la que operaba el PIC y cambiar el modelo de cuatro displays
multiplexados por un display de cuatro dígitos se concluyó de manera satisfactoria la
práctica.
Se pudo realizar un contador ascendente-descendente con displays de unidades, decenas,
centenas y unidades de millar con el uso de tablas de búsqueda en memoria de programa; en
especial con el uso instrucciones de lectura de tabla del registro TABLAT de ocho bits, con
lo que se optimizó el uso de la memoria porque como vimos en la práctica anterior,
almacenamos cada código del contador usando un solo byte.
● Bibliografía
Álvarez, R. (2021). Apuntes de la asignatura Microcontroladores.
Edipame. (s.f.). Compilador de C para el microcontrolador Microchip PIC18F4550.
Recuperado el 25 de septiembre de 2021 de: ttps://pdfcoffee.com/pic18f4550pdf-5-pdf-
free.html
Universidad de Sevilla. (s.f.). Sistema de desarrollo PIC18F452: Capítulo 3.
Microcontroladores PIC, Recuperado el 25 de septiembre de 2021 de:
http://bibing.us.es/proyectos/abreproy/11301/fichero/Memoria%252FCap
%C3%ADtulo+3.pdf+