51定时器的问题

[复制链接]
 楼主| luotianzhi 发表于 2010-1-26 09:21 | 显示全部楼层 |阅读模式
我用51单片机的定时器来做计数,大部分数据是稳定的,但是固定的时间内就会有一两个数据跳出来。并且就是相差256
HWM 发表于 2010-1-26 09:27 | 显示全部楼层
取数的方法欠妥。当T在运行(计数)时取TH和TL,由于取数并非“同时”,故会发生类似现象。
HWM 发表于 2010-1-26 09:35 | 显示全部楼层
解决办法:

先取TH;
然后取TL;
再取TH,判别TH是否改变;
若未改变,则就是所取值TH:TL;否则再取一次TL,值为最新的TH:TL
maychang 发表于 2010-1-26 09:37 | 显示全部楼层
同意HWM。
这是因为读第一个字节之后发生了低字节向高字节的进位。
解决的方法是读两次,看看是否发生了进位。
ATmega16等就不会出现这种事。
g1234567 发表于 2010-1-26 09:40 | 显示全部楼层
:)补充:
解决办法2:先停止计数-->读取数据-->重新开启计数

否则可能是其他计算错误了。
HWM 发表于 2010-1-26 09:46 | 显示全部楼层
to 5L:

计数停顿会引起累计误差。
g1234567 发表于 2010-1-26 09:56 | 显示全部楼层
停止计数,有累计的话肯定不适用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:舍我其谁

14

主题

51

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部