Timer0 zamanlayıcı ve hesaplama ccs compiler
Fkomut = osilatör frekansı / 4 => 4000000 / 4 =1Mhz
Tkomut = 1 / Fkomut => 1 / 1000000 = 0,000001 saniye
Kesme oluşma süresi = Tkomut * (Bölme oranı) * (256 - TMR0 yazılan değer)
kesme oluşma süresi = 0,000001 * (256) * (256 - 60) = 0,050176 saniye
Bölme oranı (Prescaler) = RTCC_DIV_2 , RTCC_DIV_4 , RTCC_DIV_8 , RTCC_DIV_16
RTCC_DIV_32 , RTCC_DIV_64 , RTCC_DIV_128 , RTCC_DIV_256
Sabit değer 256 sayısı 8 bitlik zamanlayıcı olduğu için bu değer sabit alınıyor.
#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use fast_io(b)
int i=0;
#int_timer0 // Timer0 kesmesi
void timer0_kesme ()
{
set_timer0(60);
i++;
if (i==10)
output_high(pin_b0);
if (i==20)
{
output_low(pin_b0);
i=0;
}
}
void main ( )
{
set_tris_b(0x00);
output_b(0x00);
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256);
set_timer0(60);
enable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);
while(true)
{
}
}
Hiç yorum yok:
Yorum Gönder
Her yorum bilgidir. Araştırmaya devam...