Hola championz,
Usa el siguiente código:
byte const NInts=11; // Numero de interrupciones para 300 ms
// VARIABLES GLOBALES
char C_Ints=0; // Contador de Interrupciones ocurridas
char Flag=0; // Flag que cambia cada NInts interrupciones
char K=0; // Estado anterior del Flag
#int_RTCC // Interrupción por desbordamiento
RTCC_isr() { // del TIMER0 RTCC
if(C_Ints > NInts){ // Si las ints ocurridas > ints para 0.30 seg.
if(Flag==0){
Flag=1;
}
else{
Flag=0;
}
C_Ints=0; // Reinicializo Contador de Ints
}
++C_Ints; // Incremento el número de interrupciones
} // Ocurridas
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
enable_interrupts(INT_RTCC); // Habilito Interrupción RTCC
enable_interrupts(global); // Habilito Interrupciones
output_low(PIN_B7); // Empiezo apagando el Led
do{ // Bucle infinito
if(Flag!=K)
{ // si ha cambiado Flag ...
if(Flag==0){ output_low(PIN_B7); } // Si es 0 Apago el Led
if(Flag==1){ output_high(PIN_B7); } // si es 1 Enciendo el Led
k=Flag; // Guardo estado anterior de Flag
}
}
While(TRUE);
}
Un saludo,