单片机定时器的初值设置将会对整体系统的时间控制产生直接影响,需要工程师们谨慎对待。但是在实际工作中,常常会遇到继续定时的情况,那么有没有一种能够在中断处理程序中帮助单片机定时器继续定时的技术呢?本文将会为大家介绍一种能够让定时器重载初值的技术,大家一起看过来吧。
通常来说,在设置单片机定时器第一次初值启动定时器后,则定时器就已经开始计数了。如果定时器中断处于开放状态,当定时器的时间计满之后,系统将会自动引发定时中断(注意,T0中断的入口地址为000BH)并执行相应的中断处理程序。我们从定时器的选择位D1和D0的设置可知,定时器只有工作在方式2下方可自动重载前次初值,如果选择的是其余的三种方式都不能自动重载。因此,当希望定时器继续定时时,需要在中断处理程序中重新赋定时器初值。我们称这种在中断处理程序中重新赋定时器的初值为定时器的重载初值。
在了解了单片机定时器重载初值的具体内容和引发原因之后,接下来我们就来看一下,如何完成重载初值的设置。如果是在定时精度要求不高的系统中,那么想要定时器的重载初值可以选择与第一次初值设置相同的方法,即可按转化公式重载。
但是,如果是在定时精度要求较高的场合,那这种方法还是可以套用的吗?答案是否定的。在这种情况下我们就不能简单地按转化公式重载了。因为从定时器计满发出溢出中断请求到重载初值,存在一定的时间间隔,这将会造成定时的延迟。这个时间间隔包含两部分的延迟,第一是中断响应所需的延迟,包括执行转向中断服务程序的跳转指令所需要的2个机器周期和等待正在执行的指令执行完毕所需要1-4个机器周期。第二是重载初值所需的延迟,包括从中断服务程序第一条指令到重载初值之间所有指令的执行机器周期数。
综合上面提及的两个时间延迟因素,再加上对计数的方便性考虑,此时我们可以在中断服务程序中加入一条定时器停止计数指令,待重载初值后,再另行加入一条定时器启动计数指令,使定时器重新计数。通过这样的技术处理后,以上的延迟时间等效于两个部分,即从定时器计数溢出后自动从0开始计数到关闭定时器计数所消耗的时间和关闭定时器到打开定时器所消耗的时间。前部分时间可从定时器读出,后部分时间为从关闭定时器到打开定时器之间所有指令的执行时间。综上所述,设Y定时器计数溢出后自动从0开始计数到关闭定时器计数所需要的时间,Z关闭定时器到打开定时器所需要的时间,X1为重载初值,则其计算公式为:
怎么样,这种单片机定时器的重载初值设置计数,大家是不是都已经了解了呢?希望通过本文的介绍,能够对各位工程师和研发人员的工作有所帮助。
声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。
新人必看 单片机定时器应用实例解析 | 16-01-11 09:20 |
---|---|
解疑答惑 单片机定时器常见两大应用问题解析 | 15-12-10 09:25 |
新人小白必看 单片机定时器基础概念科普 | 15-12-03 09:37 |
基于51单片机定时器的电子时钟设计方案分享 | 15-11-26 09:41 |
两大单片机定时器中断时间误差原因总结分析 | 15-11-19 09:25 |
微信关注 | ||
技术专题 | 更多>> | |
2024慕尼黑上海电子展精彩回顾 |
2024.06技术专题 |