用过定时器捕获功能的看看
我用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;
} 你用的是T法测频,T法本身就是测量低频准确的。还有你的代码很需要优化,多用移位操作。
还有就是用高速的晶振,比如24M,我同样用S52做的,配合24M的晶振,测量到800HZ都是比较准的,误差0.2% 回复【1楼】lylatyou张伯伦
-----------------------------------------------------------------------
”T法本身就是测量低频“,张大侠,T法测频不能用来测高频,只能用来测低频? 你想想,在你的计时频率恒定的时候,被测频率越高,精度越差啊。而且中断延迟响应的时间的固有延迟,随着被测频率的增加,使得总误差越来越大。 回复【3楼】lylatyou张伯伦
-----------------------------------------------------------------------
多谢 呵呵 受教了,多谢了
页:
[1]