原创 [小雨的成长]中断精确定时1S

2009-9-9 14:41 1569 2 2 分类: MCU/ 嵌入式

中断精确定时1S



这一课,我们将告诉大家如何精确定时1S。要精确定时,就需要用到中断方式,并工作在自动重装载方式。这里我们用到了T2定时器,它具有16位的自动重装载功能。我们知道,T0,T1的自动重装载功能都是8位的,用它们将会带来很大的误差。T2定时器,它有一个专门的自动重装载寄存器,当计数满了以后,它将我们预置进去的数自动的载入TH2,TL2这样就都很好的保证精确定时。

我们用的是12MHZ的晶振。就算是计满也只有几十毫秒。要定时一秒,就需要一个变量来保存溢出的次数,积累到了多少次之后,才执行一次操作。这样就可以累加到1秒或者更长的时间才做一次操作了。

T2寄存器还有一个和其他寄存器不一样的地方,就是它的中断标志位TF2要软件清零。

现在我们来计算一下,要精确定时,那么,进去中断的次数是越少越好,这样,数据更精确,还能很好的防止对主函数的影响。

T2定时器预装载值的计算:
设晶振为12MHz,每秒钟可以执行100000012000000/12)个机器周期。而T2每次溢出时最多经过了65536个机器周期。我们应该尽量让T2定时器的溢出中断的次数最少

选择每秒中断14次,每次溢出1000000/14=71428.57个机器周期,不为整数且超出65536
选择每秒中断16每次溢出1000000/16=62500个机器周期,小于65536,有效。
选择每秒中断20次,每次溢出1000000/20=50000个机器周期,小于65536,有效。

其他的就不再算了,我们通过上面的计算,我们可以发现,我们可以选择的方式有很多,但是最佳的是每秒中断16次,每次溢出62500个机器周期


完整版:http://bbs.cepark.com/viewthread.php?tid=2863&extra=page%3D1

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /4 下一条