打印

测频率问题?

[复制链接]
1237|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 victor3l 于 2012-8-17 14:41 编辑

我用测频率法测量信号的频率。定时器0用于定时,定时器1用于计数。为什么在定时器1中的数据有时候读到有时候读不到?我定时1s中,将计数器中计的数就当成信号的频率。程序如下:
void main()
{
TMOD = 0x51;//把t0设置成定时器16位的,把t1设置成计数器16位的
TH0 = (65535 - 50000) / 256;
TL0 = (65535 - 50000) % 256;
ET0 = 1;
TR0 = 1;
TH1 = 0;
TL1 = 0;
ET1 = 0;//t1用于计数,不开中断
TR1 = 1; //t1 已经打开了,已经开始计数了
EA = 1;
while(1)
{
  if(timerCount > 20)
  {
   EA = 0;//
   timerCount = 0;
   temp = (TH1<<8) +TL1;  //读到数据
   TH1 = 0;
   TL1 = 0;//把计数值清零
   EA = 1;//
  }
      if(temp > 10)  //这里判断有没有读到数据。
   {
    temp = 0;
    speak = ~speak;
   }
}
}
void ser()interrupt 1 //说明中断进来了   2012年8月17日12:06:55
{
TH0 = (65535 - 50000) / 256;
TL0 = (65535 - 50000) % 256;
timerCount++;

}

波形图2.jpg (1.85 MB )

实际输入信号的波形图

实际输入信号的波形图

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

308

帖子

5

粉丝