ปรึกษาเรื่อง timer เป็นตัวนับเวลาครับ

ผมทำวงจรนับความถี่ ซึ่งมีโค๊ดตามด้านล่างครับ

#include <16f877a.h>
#use delay(clock=20M)
#include <LCD.c>
#fuses hs,nowdt,nocpd,nolvp,noprotect
#define use_portb_lcd
#byte portc=0x07
#bit  led=portc.4

volatile unsigned int32 cnt_value;
unsigned int32 sum_value;
unsigned int32 value;

#int_TIMER1
void  TIMER1_isr(void)
   {  
      cnt_value += 65536; //65536  is maximum timer1 count
   }

void main(void)
{
  
     lcd_init();
   lcd_gotoxy(1,1);
      printf(lcd_putc,"Frequency");
    

   set_tris_c(0x00);
   led=1;
   delay_ms(100);
      
      setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);
      
unsigned int measure_freq(void);
{
   while(1)
   {   cnt_value = 0;
       set_timer1(0);
       enable_interrupts(INT_TIMER1);
       enable_interrupts(GLOBAL);
      
       delay_us(1000);
       disable_interrupts(INT_TIMER1);
       disable_interrupts(GLOBAL);      
      
       sum_value = get_timer1();
       sum_value += cnt_value;

       lcd_gotoxy(1,2);
       printf(lcd_putc,"%lu HZ   ",sum_value*1000/3);
   }
  
}
    
}

แต่ปัญหาคือ ความถี่ที่คำนวนได้มีค่าไม่นิ่ง และ แปรปรวนอยู่เล็กน้อย ผมจึงอยากใช้ timer อีกตัวมาเป็นตัวช่วยนับ เป็นตัว interrupts แต่ผมไม่รู้จะเริ่มต้นตรงไหน ขอคำแนะนำด้วยครับ หากแก้โค๊ดให้จะเป็นความกรุณาอย่างมากครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่