单片机外部中断进行时,定时器会停止工作吗如果在工作,进入外部中断后对定时器重新赋值,是按新值计算

单片机外部中断进行时,定时器会停止工作吗如果在工作,进入外部中断后对定时器重新赋值,是按新值计算,第1张

单片机外部中断进行时,定时器会停止工作吗?

——不会。定时器仍然会默默运行。

如果在工作,进入外部中断后对定时器重新赋值,定时器会按新值继续定时吗?

——是的,会按照新值重新工作。但是假如在这个期间定时器已经溢出产生了中断源,那么在退出外部中断处理程序之后,会很快进去定时器中断服务程序。

外部中断设置为下降沿触发,在那个瞬间需要对定时器重新赋值,每到一个下降沿就重新赋值,请问单片机进入外部中断后赋值的所消耗时间与定时器的时间会有误差吗?

——当然会有误差,从单片机检测到下降沿开始,先要等一个周期转移控制权(如果没有其他更高优先级中断占用),然后要进入中断入口、压栈、之后才进入中断服务程序顺序执行,到你改写定时器计数值的位置已经过了好多个周期了。如果你追求精确实时,这部分滞后的时间一定要测出来并从计数值中减掉。

外部中断执行过程中,只要定时中断能产生并且能进入定时中断子程序,定时器就可以计数,这跟你设置的中断优先级有关系。你的这段程序里好像没有体现中断优先级。如果定时器中断的优先级高于外部中断,这样就可以,否则就不行。

举个简单的例子:执行中断好比一位老师讲课,没有设置中断优先级(默认设置)的犹如两个班的学生,老师讲课当然要按顺序一个一个来讲。但是如果设置了中断优先级,那么优先级高的就会被优先处理,当正在讲课(正在处理优先级低的任务)时突然校长在门外敲门找老师(校长的优先级比较高),所以老师就会停止给学生讲课去处理校长的事情,等处理完了再回来继续给学生讲课。

思路是这样的:

1

必须要有两个中断服务程序。1个为外部中断,另一个为定时器中断。

2

两个中断优先级需要外部中断程序比定时中断高。

3

xn为全局变量,可以由两个中断程序改写。

以上就是关于单片机外部中断进行时,定时器会停止工作吗如果在工作,进入外部中断后对定时器重新赋值,是按新值计算全部的内容,包括:单片机外部中断进行时,定时器会停止工作吗如果在工作,进入外部中断后对定时器重新赋值,是按新值计算、51单片机外部中断函数执行时,定时器还在计时吗、定时器中断和外部中断一起用,主程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10104646.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存