aqui te dejo un pequeño programita que cuenta asta 30 segundos y prende un led en pin_a0 y cuando cuenta 60segundos lo apaga y vuelve el contador "tiempo " a cero.
saludos.
#include <16F84A.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
#byte port_a=5
#byte port_b=6
unsigned int32 tiempo=0;
#int_RTCC
RTCC_isr()
{
tiempo++;
set_rtcc(0);
}
void main() {
int8 num=0;
/* para calcular en periodo de cada interrupcion
((256-0)*4*256)/4000000=0,065536
y
30seg / 0,065536 = 457.7 --> 458 redondeado
*/
setup_counters(RTCC_INTERNAL,RTCC_DIV_256);
enable_interrupts(INT_RTCC);
enable_interrupts(global);
set_rtcc(0);
set_tris_a(0);
set_tris_b(0);
port_a=0;
port_b=0;
while(true)
{
if(tiempo>=458) // cuando la variable tiempo llega a 458 an pasado 30 seg. aprox.
{
output_high(pin_a0);
}
if(tiempo>=916) // cuando la variable tiempo llega a 916 an pasado 60 seg. aprox.
{
output_low(pin_a0);
tiempo=0;
}
}
}
aqui te dejo un ejemplo un poquito mas completo con proteus.
un contador de tiempo con rtcc activado por botones.
link:
http://miarroba.com/foros/ver.php?foroid=348538&temaid=4235884