tmr0 ve tmr1 ile frekans ölçme hakkında yardım

Başlatan umit2006, 31 Temmuz 2012, 22:01:44

umit2006

pic16f628 ile frekans ölçmek için timer0 ile 1 saniyelik referans süresi oluşturup,timer1 ile de RB6/T1OSO/T1CKI ucundan darbeleri saymak istiyorum.
3,2768 MHz kristal ile bölme oranını 96 seçerek 50ms'lik kesme elde ettikten sonra bunu döngüde kullanarak 1 saniyelik referans süresi elde ediyorum.
bu 1 saniyelik referans süresi içinde timer1 ile RB6/T1OSO/T1CKI ucundan gelen darbeleri nasıl ölçerim?yardımcı olmanız dileklerimle iyi günler diliyorum

#include <16F628.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=3276800)
int i=0;
unsigned int16 sayac=0,

#int_timer0
void timer0_kesme()
{
set_timer0(96);// timer 0 160 sayacak böylece 50 ms elde edilecek
set_timer1(0x0000);//timer 1 ölçüm için sıfırlanıyor
i++;
   if (i=20)//50x20=1000ms referans süresi elde edilecek
   {
   sayac=get_timer1();//1000ms'lik referans süresi sonunda timer1 okunup 16 bitlik sayac değişkenine aktarılıyor
  set_timer1(0x0000);//yeni ölçüm için timer 1 ölçüm için sıfırlanıyor
   set_timer0(96);//timer0 yeni ölçüm için tekrar hazırlanıyor.
   
   }

}



void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
    enable_interrupts(INT_TIMER0);
   
   enable_interrupts(GLOBAL);

   // TODO: USER CODE!!

}