注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
mcuhao123的个人空间 https://home.eeworld.com.cn/space-uid-146538.html [收藏] [复制] [分享] [RSS]
日志

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

已有 1003 次阅读2009-9-9 15:56 |

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

中断精确定时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个机器周期

完整版:javascript:;

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章