PIC单片机16F84的内部硬件资源(六)
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 单片机指令识读中的实例。