Arkadaşlar;
Aşağıdaki komutla hergün saat 8'de yanan led'in çalışmasında sorun yok. Sorun saati ertesi gün saati 8'e tekrar ayarladığımda program b2 led'ini yakarak başlamak yerine b1 led'ini 1 saniye yakıp daha sonra b2 led'ini olması gerektiği gibi yakarak devam ediyor. Sizce sorun ne olabilir? Program b2 lediyle değil de b1 ledini yakarak başlıyor daha sonra b1 led'ini yakıyor.
void main()
{
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
lcd_init(); //lcd yi hazırla
rtc_init(); //saat entegresini hazırla
rtc_set_datetime(24,04,14,4,8,00,); // Tarih ve Saat ayarları yapılıyor
delay_ms(5);
printf(lcd_putc,"\f DENEME \n DENEME");
delay_ms(200);
printf(lcd_putc,"\f");
delay_ms(5);
while(1)
{
if(ayar==0){rtc_get_time(saat,dakika,saniye);rtc_get_date(gun,ay,yil,hafta);}
lcd();
ayaryap();
if(saat==8&&dakika==00&&saniye==00)
{
set_tris_b(0b00010001);
output_b(0x00);
//output_low(pin_b1);
output_high(pin_b2);
ext_int_edge(H_TO_L);
enable_interrupts(INT_EXT);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
}
if (bekle==true)
{
output_low(pin_b2);
output_high(pin_b1);
delay_ms(1000);
output_low(pin_b1);
output_high(pin_b2);
bekle=false;
}
}
}
kesme komutları da aşağıdaki gibidir.
int1 bekle=false;
int i=1;
#int_ext
void kesme(void)
{
if ((i==4))
{
disable_interrupts(INT_EXT);
disable_interrupts(GLOBAL);
output_low(pin_b1);
output_low(pin_b2);
output_high(pin_b3);
}
else {
bekle=true;
}
i++;
}
#int_RB
void B_degisiklik()
{
if(input(pin_b4))
{
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_b3);
i=0;}
}
Tavsiyeleriniz için şimdiden teşekkürler.