嵌入式中断的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/snyanglq/article/details/50238205
一、什么叫中断
先来个概念文字定义
中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。

           即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。


中断在嵌入式系统中使用得十分广泛,可以说几乎离不开它,可想而知中断的功能有多么的重要,其实笼统地说中断只是一个概念,真正重要的是如何去应用,单片机的中断是最简单的中断,通过理解51单片机的中断概念,以后做其他嵌入式时只需要理解如何设计进入中断就可以了。

二、关于单片机中断的理解

    

       常用的中断一般是定时中断,外部中断, 串口中断。

       单片机是一种单流程控制的系统,从main开始在while循环轮询,假如一个系统没有中断的功能,那么当运行中的系统需要马上处理一些事情时就只能等待单片机当次轮询结束后再次轮询到才有可能,这明显是不符合现实需求的,想象当现在发生火灾,本来触发中断后,马上就喷水灭火,但是由没有中断功能要等到系统跑一轮后再来询问,这时可能已经由于大火高温等因素把器件烧坏,不能进行洒水触发工作了,这时就算检测到火灾又有什么用。所以中断对于一个嵌入式系统来说是非常重要的。

书中对单片机带中断触发的控制流程是这样的

从图中可以看到,当触发控制完了以后还是要回到原先的工作接着做原先的事情的。
比喻为现在中的工作流程是怎样的呢?请看下面

可能看完这两张图大家还是云里雾里的不懂中断,再举个程序的例子说说
假设现在主程序正在执行跑马灯时触发中断了,程序跑到了第3个灯,这时单片机会怎么做
先保存当前设置,然后进入中断程序执行代码比如是令数码管显示1,然后回到主程序接着之前的状态

继续往下运行,也就是说这时会电路第4个灯一直跑,而这时在中断程序执行时数码管显示的1在主程序不再对他进行改变时也是保持显示的。



注意再次强调:中断的开启与设定可以看成是闹钟的设定,当中断不触发的时候,主程序可以看成是根本就没有这回事,不用管,中断可以看成是一段同时运行的监督提醒程序。

三、关于中断嵌套
看到网上很多人都问中断可以嵌套吗?实际应用有用到吗?
我可以告诉大家,中断是可以嵌套的,中断有优先级之分,每一款嵌入式都有中断向量表,高优先级打断低优先级,太多的解析就不写了,不过我可以给大家举个例子,如果大家懂得单片机的话,应该知道复位也是一个中断,当大家程序跑进中断执行时,我按下复位按键进行复位中断,程序是响应的会进行复位重新开始,注意这是第一次中断未完成时的二次中断,所以也就是典型的中断嵌套例子了。

猜你喜欢

转载自blog.csdn.net/snyanglq/article/details/50238205