单片机外部中断程序从启动到结束的运行顺序。

单片机外部中断程序从启动到结束的运行顺序。,第1张

纯手打,望采纳

我直接从原理上说吧

以12M晶振为例:

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

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

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

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

定时器的原理是这样的,你运行主程序的时候,只要打开定时器(给几个控制位赋值)并且给了定时器初值,单片机会一边继续运行主程序,一边计时,互不干扰。当计时器满了,溢出的时候,单片机才会停下主程序,进入中断子程序,执行完中断里面的内容,再返回主程序。主程序里面是while(1),所以一直在跑,每次定时器到了你定好的时间,就会执行一遍中断。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存