Lab 10 Timer e Interrupciones V2
Lab 10 Timer e Interrupciones V2
LABORATORIO MICROCONTROLADORES
Página 1 de 9
MICROCONTROLADORES
LABORATORIO N° 10
Timer e Interrupciones
Participantes(s)
Foto:
1. Vamos a realizar un programa que genere una interrupción por desbordamiento del Timer
cada medio segundo. La función de interrupción cambiará el estado de una salida conectada
a un Led y al mismo tiempo incrementará el valor de una variable. Este valor se mostrará en
un display LCD. Mostrar los APELLIDOS de los integrantes en lugar de “Timer 0 con
PIC”
1. Esta vez vamos a mostrar en la pantalla LCD un RELOJ de minutos – segundos, cuya
temporización de 1 segundo (base de tiempo) será generada por el Timer 0.
Cambiar la condición de tal manera que si transcurre 1 minuto con 15 segundos, suene
el Buzzer. Mostrar los APELLIDOS de los integrantes en lugar de “Reloj con TIMER 0”
1. 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 D1, iniciar CUENTA REGRESIVA desde los minutos previamente
configurados.
• Para verificar que una variable de tiempo (digamos “minutos”) llegó a cero, hacerlo con la
instrucción “if (minutos==-1)”
https://www.youtube.com/watch?v=SwpTo2hfL_Q
Nro.
LABORATORIO MICROCONTROLADORES
Página 8 de 9
//Integrantes
//Ccotahuana Huarca Dilman
//lupaca magaño
//luza guillen
#include <16F877A.h>
#use delay(clock=20M)
#fuses HS, NOPROTECT, NOWDT
#include <lcd.c>
int centesimas=0,segundos,minutos,y;
int v;
#INT_TIMER0
void TIMER(VOID)
{ ++centesimas;
if (centesimas==5)
{ --segundos;
centesimas=0; }
if (segundos==0) {
--minutos;
segundos=59; }
void main()
{
lcd_init ();
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
set_timer0(61);
printf(lcd_putc,"\fCcotahuana-Luza-Lupaca ");
while (true) {
printf(lcd_putc,"\nTiempo %02u:%02u hrs",minutos, segundos);
if (!input(PIN_E0))
{ delay_ms(500);
minutos=v+1;
v=minutos; }
Nro.
LABORATORIO MICROCONTROLADORES
Página 9 de 9
OBSERVACIONES:
CONCLUSIONES:
➢ Se utilizó el software PIC Timer Calculator and Source Code Generator para hacer los cálculos
y facilitar mejor el desempeño en este laboratorio, y evitar falsos errores
➢ En conclusión, de software PIC Timer Calculator and Source Code Generator cuenta para
configurar la frecuencia del oscilador, el preescaler del timer0 y variar la cuenta de 0 a 255 y una
vez configurado nos genera el tiempo con su frecuencia calculada. Todo eso podemos hacer los
cálculos en el Timer0, y a su vez el software, también cuenta para los cálculos del Timer1 y
Timer2
➢ Si utilizamos la frecuencia del oscilador interno (cristal 20MHz|4MHz) estará en modo
temporizador y si viene de un pin externo está en modo contador. Todo esto pasa por un
preescalador.
➢ El timer0 en resumen es un registro de 8 bits contando de 0-255 bits; cuando supera esa cuenta
pasa a desbordamiento y activa un bit
➢ Concluimos que al momento de escribir el “timer0” se escribía en el PIC COMPILER
“set_timer0(valor);” lo cual el valor era de 8 bits o también se podría escribir “valor = get_timer0
();” ya que ambos son enteros de 8bits.
➢ Concluimos que en la experiencia1 la función “outpout_toggle(BIN_B1)” nos indicamos que el
BIN_B1 ósea el pin B1 si está apagado se va a encender, si en caso este encendido se va a pagar
donde habrá un led que haga la función prendido y apagado cada segundo.