图1:“中断”处理示意图
如果不用“中断”处理等待方式的话,在看书的过程中,您就不得不经常走到门口去确认快递是否到了。 像这样频繁地确认是否有“事件”发生的现象,在单片机控制中是通过软件编程完成的。我们把这种处理方式称为“轮询”(图2)。
图2:“轮询”处理示意图
单片机中的中断处理
实际上单片机的中断处理更加复杂,还是以上述事例(边看书边等待快递送来)进行说明。
边看书边等待快递送来单片机中的处理
1) 看书时主程序正在执行时
2) 快递送来的门铃响了有事件发生,向单片机发送中断信号通知
3) 中断看书过程单片机接收中断信号,暂停正在执行的主程序
4) 记录正在看的页码保存当前单片机的状态(保存到寄存器中)
5) 接收快递执行对应中断源的处理(中断程序)
6) 确认刚才所作的记录返回刚才所保存的单片机的状态
7) 继续看书从暂停的地方开始继续执行程序
现在,相信大家对“中断” 已经有所了解了。下面我们来看看在实际的“中断”处理中,单片机内部是怎样进行的。
在单片机中,通知事件发生的中断信号一般来自于外部INT引脚的输入信号,或是来自定时器、串行I/F等内部的外围功能电路的信号。接收中断信号的是中断控制器。中断控制器根据产生的中断信号的优先级,按优先级顺序发送给CPU。当然,被设定为无效的设备所传送来的中断信号是不会传给CPU的,您也可以屏蔽或忽略它们。CPU根据从中断控制器接收到的指示,执行相应的程序(中断处理)。
图3:单片机内部的“中断”处理
实时处理中断
“中断”与“轮询”看起来好象可以进行同样的处理,实际上它们有很大的区别。区别在于当事件发生时,中断方式可以立刻执行对应事件的处理。中断的这种处理方式被称为是实时处理。
而在“轮询”方式中,如果对发生事件的监视周期较短的话也可以实现实时处理,但是在通常情况下,总是有多个事件发生,有时主程序也不允许太短的循环,所以,难以实现实时处理。
当 “中断” 发生时,由于从检测到事件发生到切换到中断处理只需要几十至几百个时钟,所以可以在短时间内对应事件进行处理。
例如,在键输入或开关输入的情况下,对于单片机来说开关何时将被按下是不可预测的事件。所以,如果在主程序中以“轮询”的方式监视的话,将会无端浪费CPU的处理时间,而且,如果要进行多个“轮询”处理,则“轮询”的周期将会变长。
如果不具备单片机的硬件知识,是很难理解和应用“中断”的。“中断”的内容也确实有些难度,但是它却是单片机系统控制中无法避开的一种处理。所以,大家一定要加深对单片机知识的理解,并熟练掌握“中断”的基本知识和使用方法!
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。