单片机中的中断处理解析

电子说

1.3w人已加入

描述

  “中断”与“轮询”

  “中断”处理并非单片机控制系统所特有的现象,在我们的日常生活中“中断”的例子也随处可见。让我们来看看身边的例子吧。比如尽管您知道今天有快递送到,但却不知道快递送来的具体时间,在这种情况下,也许您会选择坐在客厅里边看书,边等快递送来。在您看书其间,门铃响的时候就表明快递到了(有事件发生)。这就是“中断”的例子。

  

  图1:“中断”处理示意图

  如果不用“中断”处理等待方式的话,在看书的过程中,您就不得不经常走到门口去确认快递是否到了。像这样频繁地确认是否有“事件”发生的现象,在单片机控制中是通过软件编程完成的。我们把这种处理方式称为“轮询”(图2)。

  

  图2:“轮询”处理示意图

  单片机中的中断处理

  实际上单片机的中断处理更加复杂,还是以上述事例(边看书边等待快递送来)进行说明。

  中断处理

  现在,相信大家对“中断”已经有所了解了。下面我们来看看在实际的“中断”处理中,单片机内部是怎样进行的。

  在单片机中,通知事件发生的中断信号一般来自于外部INT引脚的输入信号,或是来自定时器、串行I/F等内部的外围功能电路的信号。接收中断信号的是中断控制器。中断控制器根据产生的中断信号的优先级,按优先级顺序发送给CPU。当然,被设定为无效的设备所传送来的中断信号是不会传给CPU的,您也可以屏蔽或忽略它们。CPU根据从中断控制器接收到的指示,执行相应的程序(中断处理)。

  中断处理

  实时处理中断

  “中断”与“轮询”看起来好象可以进行同样的处理,实际上它们有很大的区别。区别在于当事件发生时,中断方式可以立刻执行对应事件的处理。中断的这种处理方式被称为是实时处理。

  而在“轮询”方式中,如果对发生事件的监视周期较短的话也可以实现实时处理,但是在通常情况下,总是有多个事件发生,有时主程序也不允许太短的循环,所以,难以实现实时处理。

  当“中断”发生时,由于从检测到事件发生到切换到中断处理只需要几十至几百个时钟,所以可以在短时间内对应事件进行处理。

  例如,在键输入或开关输入的情况下,对于单片机来说开关何时将被按下是不可预测的事件。所以,如果在主程序中以“轮询”的方式监视的话,将会无端浪费CPU的处理时间,而且,如果要进行多个“轮询”处理,则“轮询”的周期将会变长。

  如果不具备单片机的硬件知识,是很难理解和应用“中断”的。“中断”的内容也确实有些难度,但是它却是单片机系统控制中无法避开的一种处理。所以,大家一定要加深对单片机知识的理解,并熟练掌握“中断”的基本知识和使用方法!
 责任编辑人:CC

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分