Lo q podrias hacer es dentro de la interrupcion levantar un flag y recargar el valor del timer. Luego en tu while, verificas el flag constantemente, y cuando se levante, haces todo lo necesario.
Saludos!
Bueno eso he hecho y los resultados son poeres a hacer las operaciones dentro de la interrupción del tmr0. Me sale en la pata 9 22,32Khz y en la pata 10 197.6Hz
Este es el programa:
#include <16f84a.h>
#fuses HS,NOWDT,NOPROTECT,PUT
#use delay(clock=20000000)
#use fast_io(b)
int NInts=0;
char bandera=0;
#int_RTCC
RTCC_isr()
{
bandera=1;
Set_timer0(216); //Interrumpir cada 16us
}
void main()
{
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
Set_timer0(216);
enable_interrupts(INT_RTCC);
enable_interrupts(global);
set_tris_b(0xCF);
while(1)
{
if(bandera==1){
bandera=0;
Output_Toggle(PIN_B4);
++NInts;
}
if(NInts==625){
Output_Toggle(PIN_B5);
NInts=0;
}
}
}
Estoy empezando a pensar que si no se hace en assembler no voy a tener un control exacto de los tiempos. El problema es que de assembler se poco y nada, por eso es que esperaba que alguien me salvara.
Saludo a todos.