zfzdhz 发表于 2011-3-3 20:20:03

用过定时器捕获功能的看看

我用AT89S52的定时器T2捕获功能进行测频率,发现频率大小处于100HZ以下,挺准的,超过100HZ,就相差很大,这是什么原因?
下面的程序:
void Timer2(void) interrupt 5
{
   static unsigned int timer = 0;
   unsigned long temp;

   if (EXF2)
   {
         TH2 = 0;
         TL2 = 0;                  
         temp = 1000000/(timer*65536+RCAP2H*256+RCAP2L);timer = 0;
           printf(temp);
         EXF2 = 0;
      }

      if (TF2)
      {
          timer++;
          TF2 = 0;
      }

lylatyou 发表于 2011-3-3 20:38:36

你用的是T法测频,T法本身就是测量低频准确的。还有你的代码很需要优化,多用移位操作。
还有就是用高速的晶振,比如24M,我同样用S52做的,配合24M的晶振,测量到800HZ都是比较准的,误差0.2%

zfzdhz 发表于 2011-3-3 20:48:47

回复【1楼】lylatyou张伯伦
-----------------------------------------------------------------------

”T法本身就是测量低频“,张大侠,T法测频不能用来测高频,只能用来测低频?

lylatyou 发表于 2011-3-4 09:22:58

你想想,在你的计时频率恒定的时候,被测频率越高,精度越差啊。而且中断延迟响应的时间的固有延迟,随着被测频率的增加,使得总误差越来越大。

zfzdhz 发表于 2011-3-5 13:57:58

回复【3楼】lylatyou张伯伦
-----------------------------------------------------------------------

多谢 呵呵

竹风xu 发表于 2012-8-6 14:59:17

受教了,多谢了
页: [1]
查看完整版本: 用过定时器捕获功能的看看