独闷闷网

 找回密码
 立即注册
搜索
查看: 2193|回复: 0
打印 上一主题 下一主题
收起左侧

[原创] 每次进定时中断就关闭定时器,执行完程序再打开定时器,时间误差会不会很大?已解答。

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-29 10:35:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jianhong_wu 于 2014-10-29 11:09 编辑

土豆づMr.--浙江:
鸿哥,你的按键扫描都放在终端里的。而且每次进去就要关闭定时器,执行完程序再打开定时器,这样 会不会让每次进入中断的时间误差很大?
  1. void T0_time() interrupt 1
  2. {
  3.   TF0=0;  //清除中断标志
  4.   TR0=0; //关中断

  5.   key_scan(); //按键扫描函数
复制代码

鸿哥--深圳:
误差是会有的,但是误差不大,一般的项目不会有影响的。如果要求很高的项目,中断里就不要放按键扫描,直接放在main函数的while(1)循环里就可以了.

土豆づMr.--浙江:
前面您不是说while 中也有很大的弊端呀,会被遗漏.

鸿哥--深圳:
要看具体项目的情况,一般被遗漏的可能性不大。我在我个人最所做过的最难项目中,就是把按键扫描放在主函数的while循环里的。当然,大部分普通的项目我还是把它放在定时中断里。

土豆づMr.--浙江:
要是我用一个定时器输出PWM驱动电机的话,能不能把keyscan放到另一个定时器去呢?

鸿哥--深圳:
这个你自己去判断吧,凭感觉。

土豆づMr.--浙江:
放在中断不好的,如果不关定时器就溢出,关了就会增加进入时间。我觉得前提是中断进入时间要稍长,至少大于终端函数中所有代码的执行时间。

鸿哥--深圳:
是不是好纠结呀?所以我们搞单片机的跟做人一样,要明白舍得这个道理。没有十全十美的,必然要进行取舍。只要满足系统要求就可以了,时间有点误差又如何,很多项目根本就不在乎这个时间误差,能满足系统就行了。

土豆づMr.--浙江:
嗯,但是,如果PWM输出频率过高,我就怕影响程序运行了呀。

鸿哥--深圳:
所以你要进行取舍。如果怕影响定时时间误差,你就把按键放在主函数里。这个你自己去选择
。大胆一点,不要啥事都问鸿哥,我只能给你一些建议。你自己挂帅做项目,最终选什么方案你要自己拍板。

土豆づMr.--浙江:
谢谢鸿哥,多问问长知识多好呀,反正有这个机会嘛。
乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-4-26 14:38 , Processed in 0.173124 second(s), 17 queries .

快速回复 返回顶部 返回列表