理论教育 PIC16F877中断过程详解

PIC16F877中断过程详解

时间:2023-10-19 理论教育 版权反馈
【摘要】:本节以INT中断为例介绍中断的完整响应过程。2)CPU正在执行用户程序时,某个与INT相连的外部信号随机产生了一个中断,使INTF置位。图6-2 INT中断过程图示4)CPU自动关闭总中断控制位,CPU控制指令指针跳转至中断入口处执行。因为中断产生的时机对于CPU而言是未知的,这样在进入中断入口后一些重要寄存器的值也是未知的。为了让读者快速地掌握中断系统使用方法,下面介绍PIC16F877中断系统的相关寄存器具体功能。

PIC16F877中断过程详解

要想知道如何使用单片机的中断系统,在了解其硬件逻辑的基础上,还必须知道中断产生和返回的过程。本节以INT中断为例介绍中断的完整响应过程。其他类型中断同理。图6-2是INT中断过程。

1)系统初始化时要打开总中断控制位(GIE=1),并打开某个中断源使能位(INTE=1)。

2)CPU正在执行用户程序时,某个与INT相连的外部信号随机产生了一个中断,使INTF置位。

3)CPU立刻暂停当前程序的运行,并将当前程序的下一条将要执行的指令地址(设此地址为Next)保存起来。

978-7-111-33274-9-Chapter06-4.jpg

图6-2 INT中断过程图示

4)CPU自动关闭总中断控制位(GIE自动清零),CPU控制指令指针跳转至中断入口处(对于PIC16F877而言是程序地址0x0004)执行。(www.daowen.com)

5)中断入口处一般都是跳转指令,跳转到中断程序,又称为中断服务子程序(Interrupt Service Routine,ISR)的入口执行。在ISR中,程序员首先要保护中断现场(保存重要寄存器的值),然后编写代码,根据中断标志位状态决定响应何种中断并做处理。

6)中断程序执行完毕,程序员要手动清空中断标志位(INTF=0)并恢复中断现场(恢复重要寄存器的值),然后执行特殊指令返回到被暂停的用户程序Next处继续执行用户程序。在执行特殊指令时,CPU会自动打开总中断控制位。

为什么要进行中断现场保护和恢复?

因为中断产生的时机对于CPU而言是未知的,这样在进入中断入口后一些重要寄存器的值也是未知的。为了使中断返回后仍然能正确执行原程序,必须在进入中断时及时保护中断现场,在退出中断前正确地恢复现场。

以上的中断过程需要程序员能够熟练地设置相关信号。这些信号主要保存在PIC的内部寄存器INTCON、PIR1、PIE1、PIR2和PIE2中。为了让读者快速地掌握中断系统使用方法,下面介绍PIC16F877中断系统的相关寄存器具体功能。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈