本连载解说作为嵌入式系统开发技术人员所必需具有的单片机的基础常识。继《《嵌入式编程之单片机的根本构成、作业原理》、《嵌入式编程之单片机的外围功用电路》、《单片机的编程语言和开发环境》和《单片机外围功用电路操控的基础常识》后,最终一期将为咱们介绍在单片机操控系统中不行短少的处理方法–“中止”的基础常识。
“中止”与“轮询”
本期是单片机入门连载的最终一期。本期咱们将阐明在单片机编程进程中一定会遇到的、也是单片机操控中不行短少的一种处理方法—“中止”。
“中止”处理并非单片机操控系统所特有的现象,在咱们的日常日子中“中止”的比方也随处可见。 让咱们来看看身边的比方吧。比方虽然您知道今天有快递送到,但却不知道快递送来的详细时刻,在这种情况下,或许您会挑选坐在客厅里面看书,边等快递送来。在您看书其间,门铃响的时分就标明快递到了(有事情产生)。这便是“中止”的比方。
图1:“中止”处理示意图
假如不必“中止”处理等候方法的话,在看书的进程中,您就不得不常常走到门口去承认快递是否到了。 像这样频频地承认是否有“事情”产生的现象,在单片机操控中是经过软件编程完结的。咱们把这种处理方法称为“轮询”(图2)。
图2:“轮询”处理示意图
单片机中的中止处理
实践上单片机的中止处理愈加杂乱,仍是以上述案例(边看书边等候快递送来)进行阐明。
边看书边等候快递送来单片机中的处理
1) 看书时主程序正在履行时
2) 快递送来的门铃响了有事情产生,向单片机发送中止信号告诉
3) 中止看书进程单片机接纳中止信号,暂停正在履行的主程序
4) 记载正在看的页码保存当时单片机的状况(保存到寄存器中)
5) 接纳快递履行对应中止源的处理(中止程序)
6) 承认方才所作的记载回来方才所保存的单片机的状况
7) 持续看书从暂停的当地开端持续履行程序
现在,信任咱们对“中止” 现已有所了解了。下面咱们来看看在实践的“中止”处理中,单片机内部是怎样进行的。
在单片机中,告诉事情产生的中止信号一般来自于外部INT引脚的输入信号,或是来自定时器、串行I/F等内部的外围功用电路的信号。接纳中止信号的是中止操控器。中止操控器依据产生的中止信号的优先级,按优先级次序发送给CPU。当然,被设定为无效的设备所传送来的中止信号是不会传给CPU的,您也能够屏蔽或疏忽它们。CPU依据从中止操控器接纳到的指示,履行相应的程序(中止处理)。
图3:单片机内部的“中止”处理
实时处理中止
“中止”与“轮询”看起来好象能够进行相同的处理,实践上它们有很大的差异。差异在于当事情产生时,中止方法能够马上履行对应事情的处理。中止的这种处理方法被称为是实时处理。
而在“轮询”方法中,假如对产生事情的监督周期较短的话也能够完成实时处理,可是在通常情况下,总是有多个事情产生,有时主程序也不允许太短的循环,所以,难以完成实时处理。
当 “中止” 产生时,因为从检测到事情产生到切换到中止处理只需要几十至几百个时钟,所以能够在短时刻内对应事情进行处理。
例如,在键输入或开关输入的情况下,关于单片机来说开关何时将被按下是不行猜测的事情。所以,假如在主程序中以“轮询”的方法监督的话,将会无端糟蹋CPU的处理时刻,并且,假如要进行多个“轮询”处理,则“轮询”的周期将会变长。
假如不具有单片机的硬件常识,是很难了解和使用“中止”的。“中止”的内容也的确有些难度,可是它却是单片机系统操控中无法避开的一种处理。所以,咱们一定要加深对单片机常识的了解,并熟练掌握“中止”的根本常识和使用方法!