单片机中中断服务程序过长会有什么后果?

单片机中中断服务程序过长会有什么后果?,第1张

中断服务程序过长,可能会出现两种情况:

1.运行时间过长,影响同优先极及低优先级的中断的响应,可能单片机就忙着处理中断去了,进而影响后台程序的运行;高优先级的中断在当前中断仿液则响应,会作压栈处理,堆栈空间需求量增大,严重的情况是堆栈备棚空间不够用,程序混乱。

2.中断内部函数嵌套过多,堆栈空间需求量增大,严重的情况是埋誉堆栈空间不够用,程序混乱。

纯手打,望采纳

我直接从原理上说吧

以12M晶振为例:

①.每一个机器周期镇告(1微秒)我们分为6部分,S1~S6。每一个机器周期,按顺序检测中断源(是否有中断),在S6时将(待响应的中断)排好顺序,在下一个S1时先响应高级中断。(可以看出,检测中断与程序运行是同步的,且检测中断所需时间很短——不足1个机器周期)

②.运行主程序时,当突然来了一个中断,则PC(程序计数器)指向老颂的地址存入堆栈(即在主程序做个标记,执行完中断后回来),PC指向中断子程序,此时单片机执行中断子程序。总结来说,PC是指挥棒,只有一根指挥棒,所以执行中断时,主程序是不运行的侍旅郑。

③.中断运行时间长短看你写的中断子程序的长短咯。

④.有兴趣的话建议你学学汇编,汇编编程,就是指挥着PC一步一步走,你可以清楚的看见你的程序一步一步怎么运行,你想啊,你挥动着指挥棒,那程序不是想怎么走就怎么走?


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

原文地址: http://outofmemory.cn/yw/8266694.html

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

发表评论

登录后才能评论

评论列表(0条)

保存