中断程序不过是中断条件满足时立即调用的一段程序而已。它跟主程序一样,也是要执行自上而下、自左至右的扫描顺序,扫描过一遍之后就返回到主程序中。
对于它执行的效果,你要引入“扫描周期”的概念。就像PLC的一个扫描周期不是等内部程序中的计时器计时时间到才往下走的一样,中断程序里的计时、计数的最终结果也不会算到“中断程序是否执行完毕”的范畴中来。事实上,PLC看到IRET这个指令,它就认为中断程序已经执行完毕,就要回到主程序了。
关于中断程序如何理解,cvlsam有一个非常通俗易懂的解释:
http://www.ymmfa.com/read-gktid-88930.html引用
通俗的说,中断就是中断你现在正在干的事情让你干其他的事情。
比如:你正在上家园聊天,你老板让你去买烟,此时,发生了一个中断,买烟回来后继续家园聊天。
中断的作用就是增强实时性而已。
与中断有关的就是中断等级。正如你老板让你去买烟,突然你老板娘让你去给她按摩,此时发生了两个中断,由于老板娘的中断等级比老板高,因此你需要首先陪老板娘,然后去买烟,最后再来家园聊天。
结合楼主的“让指示灯连续闪烁十次,需用时十秒”,把引言中红色标出的中断事件改一下:
老板娘看午餐时间快到了,让你去门口接外卖。但外卖一时半会来不了,你就想了个办法,一分钟出去看一次,其他时间仍然在家园聊天。这就是定时中断。结果你一共出去了10趟,外卖才过来。这样虽然整个等外卖的时间是十分钟,但是你绝大部分时间还是在干聊天这件事,只是每分钟中断一次出去看看外卖来了没有。出去看的这一趟就是一个中断的“执行完毕”,最终等来了外卖才是逻辑结果的“执行完毕”,不要混淆~