单片机内部中断和外部中断——摘自《删繁就简单片机入门到精通》

 

每个周末丁丁小朋友的父母会要求他独立完成一些家务,来培养他的劳动习惯,家务是固定的三件事情:烧两壶开水、炖一锅排骨、将家里的地板拖一遍。如果单独 完成这些事情,烧一壶开水大概需要十分钟,炖排骨大概二十五分钟,拖地板大概需要三十分钟,烧开水只要等水开了倒进保温瓶里,排骨炖好后关掉火就行。
    第一周,丁丁小朋友先开始烧水和炖排骨,然后去拖地板,为了看水有没有烧开和排骨有没有炖好,拖一会地板就要停下来跑到厨房去看一看,这样看一次需要一分钟,总共看了十次,四十分钟后三样家务全部做完。
虽然四十分钟把家务全部做完,但丁丁小朋友是隔几分钟才去看一下水有没有烧开,于是水被烧开了一会丁丁小朋友才发现,水烧开后从壶里溢出流到煤气灶上,有点危险,显然从家务完成的质量来看不是很理想。
    第二周,丁丁小朋友吸取了上周的经验,烧水换用水烧开后可以自动鸣笛的壶,排骨有上周的经验知道炖二十五分钟火候差不多,于是炖的时候用一个闹钟定时二十 五分钟,接下来专心开始拖地板。大约十分钟后,第一壶水烧开鸣笛,丁丁小朋友停下拖地板去把水倒进保温瓶接着烧第二壶,继续拖地板;又过了大约十分钟,第 二壶水烧开,丁丁小朋友同样处理;二十五分钟时间到,闹钟响起,丁丁小朋友过去看排骨,已经炖好于是关火,接着拖地板;三十三分钟,地板拖完,家务全部完 成。
    和第一周对比,时间少用了七分钟,而且水一开就去倒掉,消除了潜在危险,完成的质量自然要好一些,看来日常生活中的一些事情,不同的处理方法做出来的效果也会有明显差异。
丁丁小朋友做家务的例子对应单片机同时需要处理几个工作任务的两种基本方法:轮流查询和中断响应。开水烧开了不马上处理就会有危险,拖地板被打断有延时不会发生什么意外,但烧开水只要把水倒进壶里烧就行,烧的过程中并不需要做其它事情,拖地板则需要一直拖到全部地板拖完。
如果说第一周的方法是轮流查询那二周的方法就是中断响应,水烧开鸣笛和闹铃为中断发生信号,从丁丁小朋友两周完成的结果可以看出中断响应效果要好过轮流查询。
    序言中就说过单片机技术是一门实用工程技术学科,和日常生活息息相关,正是为了应付丁丁小朋友做家务例子中烧水炖排骨这类问题,单片机有了中断的概念。中 断就是在工作过程中突然有更紧要的事情去要去处理,于是将当前的工作打断,处理好更紧要的事情后再继续当前的工作。单片机的中断可分为两大类:一种是单片 机内部控制电路在某种条件下产生的叫内部中断,另外一种则是由单片机外部器件产生的叫外部中断。
    丁丁小朋友烧水和炖排骨对于他是两个独立的外部事情,这两个外部事情所产生的“中断信号”分别属于外部中断和内部中断。水烧开是水壶主动发出笛声,这个笛 声和丁丁小朋友没有直接的关联,他不知道具体会在什么时候响,只要水开就会由水壶产生并传到丁丁小朋友的耳朵里,笛声是他的“外部中断信号”;闹铃是丁丁 小朋友用他的闹钟来产生的,和炖排骨没有直接联系,只是因为丁丁小朋友知道排骨二十五分钟可以炖好才设置成这个时间,他自己是知道闹铃什么时候会响,只是 他不想频繁地去看时间才用闹钟定时,闹铃声是他的“内部中断信号”。
    通过丁丁小朋友做家务的例子我们明白了中断的原理和方法:单片机在工作的时候往往需要处理多个事情,有些事情只并不需要单片机时刻进行控制,只是需要在某 些特定的条件下由单片机做出相应处理,有些事情则需要单片机花比较多的时间逐步控制,一旦停止控制就无法进行下一步操作,中断的引入可以让单片机面对这样 的问题时有更高的工作效率,对于不需时刻进行控制的事情在需要被干预时发出中断信号让单片机来进行相应处理,需要时刻控制的就由单片机主程序循环持续控制

你可能感兴趣的:(单片机)