1.运行时间过长,影响同优先极及低优先级的中断的响应,可能单片机就忙着处理中断去了,进而影响后台程序的运行;高优先级的中断在当前中断仿液则响应,会作压栈处理,堆栈空间需求量增大,严重的情况是堆栈备棚空间不够用,程序混乱。
2.中断内部函数嵌套过多,堆栈空间需求量增大,严重的情况是埋誉堆栈空间不够用,程序混乱。
纯手打,望采纳我直接从原理上说吧
以12M晶振为例:
①.每一个机器周期镇告(1微秒)我们分为6部分,S1~S6。每一个机器周期,按顺序检测中断源(是否有中断),在S6时将(待响应的中断)排好顺序,在下一个S1时先响应高级中断。(可以看出,检测中断与程序运行是同步的,且检测中断所需时间很短——不足1个机器周期)
②.运行主程序时,当突然来了一个中断,则PC(程序计数器)指向老颂的地址存入堆栈(即在主程序做个标记,执行完中断后回来),PC指向中断子程序,此时单片机执行中断子程序。总结来说,PC是指挥棒,只有一根指挥棒,所以执行中断时,主程序是不运行的侍旅郑。
③.中断运行时间长短看你写的中断子程序的长短咯。
④.有兴趣的话建议你学学汇编,汇编编程,就是指挥着PC一步一步走,你可以清楚的看见你的程序一步一步怎么运行,你想啊,你挥动着指挥棒,那程序不是想怎么走就怎么走?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)