Timer0 ile saat yapımı, saatın saniyesini timer0 ile hesaplanıp 1 saniye göre ayarlandı Hesaplamaya göre SET_TIMER0(60) olursa 0,050176 saniye 20 kesmeye girdiğinde 1,0034 saniye oluyor.
SET_TIMER0(61) yapar isek 0,04992 saniye 20 tekrar ile 0,9984 saniye ile hassas ayarlanabilir. Butonlar ile saat ve dakika ileri doğru artırılarak ayarlanır. istediğnizi tercih edebilirsiniz.
#include <16f628a.h>
#fuses NOWDT, INTRC_IO, NOMCLR, NOBROWNOUT
#use delay (clock=4000000)
#include <flex_lcd.c>
unsigned int saniye=00,dakika=00,saat=00,sayar=0;
#INT_TIMER0
void kesme()
{
SET_TIMER0(60);
sayar++;
if(sayar == 20)
{
sayar=0;
saniye++;
if(saniye > 59)
{
saniye=0;
dakika++;
if(dakika > 59)
{
dakika=0;
saat++;
if(saat > 23)
{
saat=0;
dakika=0;
saniye=0;
}
}
} // dakika sonu
} // saniye sonu
} // kesme sonu
void main ( )
{
lcd_init();
SETUP_TIMER_0(T0_INTERNAL | T0_DIV_256);
ENABLE_INTERRUPTS(INT_TIMER0);
ENABLE_INTERRUPTS(GLOBAL);
SET_TIMER0(60);
while(true)
{
if(input(pin_a0)==1)
{
delay_ms(5);
dakika++;
if(dakika > 59)
dakika=0;
}
if(input(pin_a1)==1)
{
delay_ms(5);
saat++;
if(saat > 23)
saat=0;
}
printf(lcd_putc,"\fS:%d D:%d s:%d\nSifirzero ",saat,dakika,saniye);
delay_ms(200);
}
}
Hiç yorum yok:
Yorum Gönder
Her yorum bilgidir. Araştırmaya devam...