LABORATORIO 12
Manejo de Timer y las Interrupciones
1. OBJETIVOS
- Conocer el funcionamiento y la configuración de las Interrupciones
- Conocer el funcionamiento y la configuración del Timer cero
- Aplicar estos conocimientos en la realización de un cronómetro.
2. MARCO TEÓRICO
TIMER0 PIC 16F877A
El timer0 PIC es un temporizador contador de 8 bits, el registro TMR0 es el temporizador, es donde se guardan los valores del timer0 PIC, cuando es utilizado como temporizador sus valores aumentaran de uno en uno entre 0 y 255 con cada 4 ciclos de reloj, no olvidar que cada ciclo de instrucción del microcontrolador PIC es realizado en 4 ciclos de reloj, por ejemplo si el oscilador con el que está funcionando el microcontrolador PIC es de 4MHz, entonces el registro TMR0 aumentará una unidad en cada 1us, si el registro TMR0 se incrementa en 100 unidades habrán transcurrido 100us; cuando el timer0 PIC es utilizado como contador el registro TMR0 ya no aumenta su valor de uno en uno en cada 4 ciclos de reloj, sino que lo hará mediante el flanco de subida o el flanco de bajada de alguna señal que llegue a un pin especial del PIC conectado al timer0 PIC, este pin es identificado como T0CKI que en el PIC16F877A es el pin6 o RA4, esto puede variar de acuerdo al microcontrolador PIC utilizado, pero siempre se llamará T0CKI.
3. TAREAS REALIZADAS
a) Problema planteado:
4.VIDEO
a) Problema planteado:
A partir del código mostrado, realice los cambios necesarios para realizar un programa que CUENTE EN FORMA DESCENDENTE, (temporizador regresivo), bajo las siguientes condiciones:
- Al presionar pulsador en D0, incrementar SEGUNDOS, el temporizador aún no debe estar contando el tiempo. (sirve para configurar tiempo de cuenta).
- Al presionar pulsador en E0, incrementar MINUTOS, el temporizador aún no debe estar contando el tiempo. (sirve para configurar tiempo de cuenta).
- Al presionar pulsador en D1, iniciar CUENTA REGRESIVA desde los minutos previamente configurados.
- Si la cuenta llega a 00:00, congelar la cuenta y sonar BIP 3 veces.
4.VIDEO
5. OBSERVACIONES
- Durante el presente
laboratorio se aprendió el correcto funcionamiento del Timer0 en el PIC
16F877A, así como los algoritmos necesarios en relación a la programación
para su adecuado manejo.
- Tanto en un temporizador
ascendente como descendente la variable centena debe estar siempre
incrementándose y no decrementándose, ya que esta variable realiza la
operación de funcionamiento del temporizador ya sea para aumentar tiempo o
quitar tiempo.
- Se utilizó una “variable
contador”, el cual me permite saber si el temporizador ya realizó la
cuenta regresiva programada y de esa manera recién hacer sonar los bips
correspondientes.
- Se utilizó la función Bip en
la programación, esto con la finalidad del funcionamiento de la bocina, ya
que esta trabaja no con señal continua sino con alterna; y para simularlo
se utilizó un bucle for que activa y desactiva el mismo.
6. CONCLUSIONES
- En conclusión, para el
desarrollo del problema propuesto en el laboratorio, se hizo uso de 3 pulsadores
D0, E0, D1. Con el D0 y E0 podemos incrementar el cronometro en segundos y
minutos respectivamente, y con el D1 podemos iniciar la cuenta regresiva
de dicho temporizador.
- Se concluye que se realizó un
algoritmo de programación utilizando condicionales “if”, para poder
limitar la subida ascendente de los segundos, ya que, al no realizarlo,
aparecería en nuestro LCD 60, 61 a más segundos, lo cual sería incorrecto.
- Se logró
congelar el temporizador en cero minutos y ceros segundos se utilizó la
relación condicional de que si minutos es igual a -1, se detenga el
temporizador, ya que de lo contrario empezaría la cuenta otra vez en 255.
- También se concluyó que se debe usar un delay después
de presionar cada pulsador, esto con la finalidad de evitar falsos
disparos y hacer que nuestra configuración de segundos y minutos sea lo
más precisa posible ya que de lo contrario, al presionar un pulsador,
este aumentaría desproporcionalmente.