dai_wei

    1. stc单片机测频率问题 14/6598 嵌入式系统 2009-10-28
      引用楼主 xmjmengmeng 的回复: 我用STC单片机测量频率(0-26HZ).频率信号由外部中断1—INT1引进,采用下降沿触发方式,由TIMER1测量两个下降沿之间的时间。我写的程序只能测量1—3HZ的,频率再高一点就乱跳 下面是我的代码。主程序应该没什么问题,已经调好久了,就是找不出原因,哪位能帮我看看,不胜感激!! /********************************************************************************************* 定时器一中断程序 ********************************************************************************************/ void init_TIMER1() {   TMOD=0x11;//TMOD=#00010001,定时器,工作方式1(16位定时器/计数器) TH1=0x00; TL1=0x00; ET1=1;//定时器1开中断 TR1=1;//定时器启动计数 } TIMER1_serv() interrupt 3 { if(flg==1)   {TF1=0; t1_cut++;  } //TF1=1时,计数溢出 } /************************************************************************************************************* 外部中断1 *************************************************************************************************************/ void init_INT1() { dely(100);   EA=1;//CPU所有中断开   dely(100);   EX1=1;  //INT1中断开   dely(100);   IT1=1;  //INT1下降沿触发 } void INT1_sevr() interrupt 2 using 1 {   if(flg==0)       { puls_1=TH1*256+TL1;       flg=1;       IE1=0;}   else if(flg==1)       { puls_2=TH1*256+TL1;       //TR1=0;//停止计数       //ET1=0;//关定时器一           [color=#FF0000]period = 65536*t1_cut + puls_2 + 0x01 - puls_1;[/color] t1_cut=0; flg=0;     [color=#FF0000]freq =500000/period;[/color]     IE1=0;//外部中断一请求标志位清零       } }复制代码
      注意一下红色的这两句,我担心可能已经超出了运算范围,从代码里看不到各变量都是什么类型的。
    2. 不懂计算时间啥事都干不成,首先得会计算时间 得先保证接收的数据不发生溢出掉失。

最近访客

< 1/1 >

统计信息

已有53人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:2

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言