PIC单片机中断模块
扫描二维码
随时随地手机看文章
pic16f87x系列单片机可以接收多达14个中断源。中断控制器寄存器intcon标记着各个中断源的请求,对各个中断设置屏蔽位,对全部中断设置全局屏蔽位。 pic16f87x系列的中断包含:tmr0溢出中断(toif)、外部中断(intf)、端口b变化中断(rbif)、并行从动端口中断(pspif)、a/d变换中断、usart异步接收中断(rcif)和异步发送中断(txif)、同步串行端口中断(sspif)、ccp1中断(ccpiif)、tmr2中断(tmr2if)、tmr1中断、ccp1中断(ccp2)、e2prom写中断(eeif)、总线碰撞中断(bclif)。 各个中断采用查询方式进行,即当cpu口向应中断时,事先要通过查询中断标志位去判断是哪个中断产生中断请求,然后执行相应的中断服务程序。 rb0/int外中断仍遵守pic16f87x单片机的中断原则,当有中断时产生中断标志位,由cpu查询识别中断。根据这一原则,可以扩展多个外中断源,cpu响应中断后查询中断标志位识别中断。 rb0/int引脚上的外部中断由边沿触发,既可以是上升沿,也可以是下降沿,这由选择寄存器option_reg的intedg位(d6)决定。当intedg=1时,选择上升沿触发;当intedg=0时,选择下降沿触发。一旦检测到引脚上出现有效边沿,就把intf位(intcon的d1)置1。这个中断由中断控制位inte设置允许或禁止。 为了防止错误的死循环执行同一个中断,在重新开放这个中断之前必须在中断服务程序中用软件对intf位清0。如果inte位在进入休眠状态之前已被置1,int中断可以唤醒在休眠状态下的cpu。gie位的状态决定处理器是否在被唤醒后转至中断矢量。 当定时器timer0的计数器tmr0计满溢出(即由ffh变成00h)时,硬件将自动把tgif位置1。其中断可以通过对toie位进行设置来控制该中断是否开放。 当cpu响应rb7、rb4中断时,就有两种情况产生:第一种称为“短脉冲”,即在cpu响应中断期间引脚电平恢复到原始状态,对这种情况cpu不会产生虚假中断现象。第二种称为“宽脉冲”,即在cpu响应中断后引脚电平才恢复到原始状态,恢复到原始状态的过程也产生中断请求,这种情况就是虚假中断现象。 在端口b的d7~d4引脚上一旦有电平变化就把rbif位置1,这个中断可以通过对rbie位进行设置来控制该中断是否开放。 欢迎转载,信息来源维库电子市场网()