Sayfalar

Menü

2 Temmuz 2022 Cumartesi

Timer0 zamanlayıcı ve hesaplama ccs compiler

 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...