Estoy trabajando en un proyecto básico para un sistema de seguridad con PIC16f877 en MikroC, y tuve un problema relacionado con la interrupción del temporizador. Quiero que la interrupción se cancele cuando se alcanza la cantidad de tiempo elegida y quiero que el programa se vuelva a ejecutar desde el principio (comenzando desde cero). Esto es lo que he hecho hasta ahora (gracias de antemano, chicos):
void InitTimer1()
{
T1CON = 0x39;
TMR1IF_bit = 0;
TMR1H = 0x0B;
TMR1L = 0xDB;
TMR1IE_bit = 1;
INTCON = 0xC0;
}
void Interrupt()
{
if (TMR1IF_bit){
TMR1IF_bit = 0;
TMR1H = 0x0B;
TMR1L = 0xDB;
time++;
if(time == 38){ //20 == 5 sec, 38 == 10 sec
PORTB.RB1=0;
//i want the interruption to be cancelled here and rerun
// the program since the begining of main function
}
}
}
void main()
{ //declaraion ...
//i want the program to restart from loop
LOOP :
//some code
else
{
InitTimer1();
// some code running with the interrupt
//if condition then rerun(no need to w8 for the 10seconds set in the interrupt)
{goto LOOP ;}
}while (1);
}
}