8 中断
PIC单片机16F84具有实时处理功能,能对外界异常发生的事件由中断技术作及时处理。
当单片机的CPU正在处理某事件时,若外部发生了某一事件(如定时器溢出、引脚上电平变化),请求CPU迅速去处理,于是CPU就暂时中止当前的工作,转去处理所发生的事件。中断处理完该事件后,再回到原来被中止的地方,继续执行原来的工作,如图1所示。实现这种功能的部件称为中断系统。产生中断的请求源称为中断源。中断源向CPU提出的处理请求,称为中断请求或中断申请。CPU暂时中断自身的事务,转去处理事件的过程,称为CPU的中断响应过程。对事件的整个处理过程,称为中断服务(或中断处理)。处理完毕,再回到原来被中止的地方,称为中断返回。
PIC16F84芯片有4种中断源,其逻辑电路如图2所示。
9中断控制
中断主要由中断控制寄存器INTCON(图3)来控制。INTCON是一个可读/写寄存器,含有定时器TMRO溢出、RB口的变化和外部INT引脚中断等各种允许控制和标志位。
全局中断允许位GIE(D7)置1,将开放所有未被屏蔽的中断,如将该位清零,将禁止所有的中断。在响应中断时,GIE位将被清零,以禁止其它中断,返回的断点地址被压栈保护,接着把中断入口地址0004h装入程序计数器PC。在中断服务程序中,通过对中断标志位进行查询,确定中断标志位必须在重新开放中断之前用软件清零,以避免不断地中断申请而反复进入中断。
(1)INT中断。RBO/INT引脚上的外部中断由边沿触发,当INTEDG位(OPTION寄存器第6位)被置1时,选用上升沿触发,如该位被清零,则由下降沿触发。当检测到引脚上有规定的有效边沿时,便把INTE位(INTCON的D4位)置1。在重新开放这个中断之前,必须在中断服务程序中对INTE位清零。 (2)TMRO中断。当定时器TMRO的计数器计满溢出(即由FFH变成00H)时,硬件自动把TOIF(INTCON的D2位)置1。其中断可以通过对TOIE(INTCOND的D5位)置1或清零来控制该中断是否开放。
(3)PORTB口引脚电平变化中断。在PORTB口的D7~D0引脚上一旦有电平变化,就会把RBIF(INTCON的D0位)置1。这个中断可以通过对RBIE(INTCON的D3位)置1或清零来控制该中断是否开放。
(4)中断的现场保护。在发生中断时,只有返回断点的地址被压栈保护。若用户还希望保护关键的寄存器(如W寄存器和STATUS寄存器)。这需要由软件来实现。有关中断的现场保护,请参看本报第15期有关PIC单片机指令识读中的实例。
成都 卫东
知识竞赛试题:
23用简单的实例说明中断在PIC单片机中的用途。
编后语:“PIC单片机系列专题”至今已刊登了十五期,余下还将刊载十期,共计二十五期。以后的内容将主要围绕PIC单片机的汇编和实际应用及开发来展开介绍,欢迎广大读者对本专题多提意见和建议。为配合本专题,“《电子报》单片机公共实验室”还为读者及会员准备一系列性价比高,适合初学者的PIC单片机、编程器、仿真器,以后本栏目将逐步加以介绍。另外,本专题的“知识竞赛”试题将于今年8月13日第32期《电子报》刊载完毕,欢迎读者踊跃参加。参加的读者务请在9月5日前,将所有试题按编号回答好后,寄往本报编辑部,或E-mail至dzb12@netdzb.com。我们将评出一、二、三等奖若干名,分别奖以奖金、PIC开发器、书刊等(详情见今年《电子报》第8期第十一版)。