LAB 9 - Funcionamiento de los Timer en el PIC

FUNCIONAMIENTO DE LOS TIMER EN EL PIC

SIMULACIÓN EN PROTEUS


CÓDIGO BASE
----------------------------------------------------------------------------------------------------------------

// TIMER 0

#include <16f877a.h> // Incluimos archivo con PIC a utilizar
#device adc=8 // Utilizamos 8 bits de RESOLUCION de lectura
#use delay (clock=20M) // Indicamos al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT // Configuración básica de los fusibles

#include <lcd.c> // Incluimos librería para manejar Pantalla LCD

int centesimas=0,segundos=0,minutos=2;

#int_TIMER0 // FUNCION DE INTERRUPCION POR
void TIMER(VOID) // DESBORDAMIENTO DEL TIMER 0
{
++centesimas; // incrementar una centésima
if (centesimas>99)
{
++segundos; // si llegamos a 100, incrementar un segundo
centesimas=0;
}
if (segundos>59)

{
++minutos; // si llegamos a 60, incrementar un minuto
segundos=0;
}
if (minutos==3) // si llegamos a 3 minutos, hacer alguna acción
{
minutos=0;
disable_interrupts (INT_TIMER0); //habilita interrupcion de timer0
// agregar cualquier otra acción necesaria.
}

set_timer0 (61); //reinicar cuenta desde 61
}

void main ()
{
lcd_init () ; // Inicializamos pantalla LCD
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); //configuracion del timer0
set_timer0 (61); // interrupción cada centésima
enable_interrupts (INT_TIMER0); //habilita interrupcion de timer0
enable_interrupts (GLOBAL); //todas las interrupciones activadas

printf (lcd_putc, "\f***CRONOMETRO***") ; // Mandamos mensaje por única vez

WHILE (true)
{
lcd_gotoxy(2,2);
Printf(lcd_putc,"Tiempo %02u:%02u",minutos, segundos);
}
}

 --------------------------------------------------------------------------------------------------------------------

CÓDIGO MODIFICADO



SIMULACIÓN EN PROTEUS (INICIA)
SIMULACIÓN EN PROTEUS (CUANDO LLEGA AL MIN 6)

SIMULACIÓN EN PROTEUS (CUANDO LLEGA AL MIN 6:30)


VÍDEO_EXPLICATIVO



RETO DE LA SEMANA

A partir del codigo mostrado, realice los cambios necesarios para realizar un programa que cuente en forma descendente.(temporizador regresivo ), bajo las siguiente condiciones.

a. Al presionar pulsador en A0, incrementar minutos , el temporizador aun no debe estar contando el tiempo.(sirve para configurar tiempo de cuenta).

b. Al presionar pulsador en A1, iniciar cuenta regresiva desde los minutos previamente configurados.

c. si la cuenta llega a 00:00, congelar la cuenta y sonar BIP 3 veces. Salida en RB0.



SIMULACIÓN EN PROTEUS


CODIGO MODIFICADO EN EL COMPILADOR






VIDEO_EXPLICATIVO





Comentarios