Timer0 sayıcı hesaplama ccs compiler
Kesme oluşma sayısı = (256 - TMR0) * (Bölme oranı)
kesme oluşma sayısı = (256 - 254) * (2) = 4 Dört kere butona basınca 1 kesme oluşacak
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 <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use fast_io(a)
#use fast_io(b)
int sayi=0;
#int_timer0 // Timer0 kesmesi
void timer0_kesme ()
{
set_timer0(254);
sayi++;
output_b(sayi);
if (sayi==15)
sayi=0;
}
void main ( )
{
set_tris_a(0xff);
set_tris_b(0x00);
output_b(0x00);
output_a(0xff);
setup_timer_0(RTCC_EXT_H_TO_L | RTCC_DIV_2);
set_timer0(254);
enable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);
while(true)
{
}
}
Hiç yorum yok:
Yorum Gönder
Her yorum bilgidir. Araştırmaya devam...