打印

定时器定时不准是什么原因?

[复制链接]
2718|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
joy晴天|  楼主 | 2007-3-17 13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我程序是这样的:
外部触发中断后,开始定时器1ms计时,
定时器溢出用number计数,每溢出一次number值+1(定时器每次赋值为0xFC18即64536,1000个周期后溢出)
然后,把number从100开始到111的十二个时刻,距离外部触发发生时候的时间差显示出来(除去“计时溢出处理”程序运行的时间,理想的话,应该是显示100,到111)


但是,当显示出来的确实96.3、97.6、98.4、99.2。。。等等
值明显偏小,并且,间隔时间更是明显偏小。
这样,我想到了把定时器时间加长,甚至每次定时1.2ms才溢出,得到结果如下:
116.3、117.1、118.0、118.8。。。等等
问题依然存在,时间还是比预料的小,并且间隔时间一样偏小,几乎没变

89C51+12M晶振平台

请问这是什么原因?

相关帖子

沙发
ayb_ice| | 2007-3-17 14:39 | 只看该作者

随便说说

  使用带自动重装载的定时器,中断程序要简短些。

使用特权

评论回复
板凳
5880527| | 2007-3-17 18:36 | 只看该作者

应该可以精确到加减1个最小计时单位的

什么都不要做,就盯着定时器中断程序开头部分看上一个小时你就什么明白了哈。网上有很多关于这个的帖子的

使用特权

评论回复
地板
cloud2k| | 2007-3-20 15:07 | 只看该作者

不清楚.

没有做过,有没有注意一下定时器付值操作有没有问题.高低字节是不是会同时付值.

使用特权

评论回复
5
aduzzp| | 2007-3-21 14:58 | 只看该作者

c&汇编???

你的程序是用c语言还是用汇编写的????,c语言用于精确定时时误差很大.

使用特权

评论回复
6
ayb_ice| | 2007-3-21 15:08 | 只看该作者

随便说说

  程序的原因,好好看看定时器的原理吧.

使用特权

评论回复
7
xiaopet| | 2007-3-21 15:50 | 只看该作者

RE

你这是手动装载,要考虑手动装载带来的误差,要对装载的数进行补偿
如果是汇编比较好算,C的话就不好算了。一点点补偿进行调整吧,肯定可以调好的。

使用特权

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

本版积分规则

52

主题

159

帖子

0

粉丝