要想知道如何使用单片机的中断系统,在了解其硬件逻辑的基础上,还必须知道中断产生和返回的过程。本节以INT中断为例介绍中断的完整响应过程。其他类型中断同理。图6-2是INT中断过程。
1)系统初始化时要打开总中断控制位(GIE=1),并打开某个中断源使能位(INTE=1)。
2)CPU正在执行用户程序时,某个与INT相连的外部信号随机产生了一个中断,使INTF置位。
3)CPU立刻暂停当前程序的运行,并将当前程序的下一条将要执行的指令地址(设此地址为Next)保存起来。
图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中断系统的相关寄存器具体功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。