打印

额,准确的定时是这样的。。。

[复制链接]
1661|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuri714|  楼主 | 2009-7-3 22:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/计划每100ms中断一次

/定时器重装载的值
#define TIMER_COUNT 0xDC11 /10000-(100ms/机器周期)+17

/定时器中断函数
void timer_isr() interrupt 1 using 1
{
  TR=0;/停止计数
  TL=TL+(TIMER_COUNT&0xFF);/重装载定时器计数起始值
  TH=TH+(TIMER_COUNT>>8);/但不是简单的重装DC11
  TR=1;
}

/为了准确的定时,采用了2个修正,+17以及TL=TL+

O(∩_∩)O哈哈~,虽然很简单,但是很精致

相关帖子

沙发
yuri714|  楼主 | 2009-7-3 22:13 | 只看该作者

以前只知道重装DC11。。。

~

使用特权

评论回复
板凳
ayb_ice| | 2009-7-4 11:48 | 只看该作者

补偿一下即可

最好是初值是0xXX00,这样TL0不用理它...

使用特权

评论回复
地板
救火车| | 2009-7-4 16:56 | 只看该作者

同意楼上

对TL0是越修正,毛病越多。
TL0最好的修正就是不修正,最好是算成整数.

下面是我写有一篇有关定时器的贴子。
https://bbs.21ic.com/club/bbs/bbsview.asp?essenceid=9811

使用特权

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

本版积分规则

27

主题

180

帖子

0

粉丝