Hola, no consiog hacerlo funiocar, estas seguro que esos son los calculos?. Pego mi codigo:
si pongo el rtcc_div_256, tarda años en encenderse el primer led
, si lo pongo como en el ejemplo , tarda como un segudno y medio.
Tengo el timer configurado para 20 segndos, el de rb0, y para 20 ms el de b1.
Segun mis calculos seria:
4.000.000 mhz/(4*256*256)
4 = pq se produce el flanco por cada 4 ciclos de reloj
256, del preescaelr y el otro del valor a cargar en set_timer0();
lo que da que cada 15 interrupciones, tendriamos un segundo.
es correcto?
#include <16F84A.h>
#use delay(clock=4000000)
#fuses XT
#define OFF 0
#define ON 1
int16 n_t0=0;
int led=OFF;
#int_RTCC
RTCC_isr()
{
n_t0++;
if (n_t0==1000)
{
n_t0=0;
if(led==OFF)
{
output_high(PIN_B0);
led=ON;
}
else
{
output_low(PIN_B0);
led=OFF;
}
}
if(led==OFF)
{
output_high(PIN_B1);
led=ON;
}
else
{
output_low(PIN_B1);
led=OFF;
}
set_rtcc(0);
}
void main()
{
set_tris_b(0x00);
output_low(PIN_B0);
output_low(PIN_B1);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
set_rtcc(177);
enable_interrupts(INT_RTCC);
enable_interrupts(global);
while(ON)
{
sleep();
}
}