当前位置:文档之家› 第5章 中断系统

第5章 中断系统

5.1 中断的概念 5.2 8051的中断源和中断控制寄存器 5.3 中断处理的过程 5.4 中断响应等待时间 5.5 C51中断服务函数 5.6 中断系统的应用 5.7 实践训练—键控彩灯 5.8 习题
计算机与外设交换信息时,慢速工作的外设与快速工作的CPU之间形成一个很大的矛盾。 例如:计算机与打印机相连接,CPU处理和传送字符的速度是微秒级的,而打印机打印字符 的速度远比CPU慢。CPU不得不花大量时间等待和查询打印机打印字符。中断就是为解决这 类问题而提出的。
02
02
Hale Waihona Puke 023.中断允许控制寄存器IE CPU对中断系统的所有中断以及某个中断源的开放和屏蔽是由中断允许控制寄存器IE控制 的。IE的状态可通过程序由软件设定。某位设定为1,相应的中断源中断允许;某位设定为0, 相应的中断源中断屏蔽。CPU复位时,IE各位清0,禁止所有中断。IE的结构、位名称和位地址 见表5-3。
03
4.中断返回 中断服务程序的最后一条指令必须是中断返回指令RETI。RETI指令能使CPU结束中断服务程序的执 行,返回到曾经被中断过的程序处,继续执行主程序。RETI指令的具体功能如下。 (1)恢复断点地址 将中断响应时压入堆栈保存的断点地址从栈顶弹出送回PC,CPU从原来中断的地方继续执行程序。 注意,不能用RET指令代替RETI指令,因为用RET指令虽然也能控制PC返回到原来中断的地方,但 RET指令没有清0中断优先级状态触发器的功能,中断控制系统会认为中断仍在进行,其后果是与此同级 的中断请求将不被响应。 若用户在中断服务程序中进行了入栈操作,则在RETI指令执行前应进行相应的出栈操作,使栈顶指 针SP与保护断点后的值相同,即在中断服务程序中PUSH指令与POP指令必须成对使用,否则不能正确 返回断点。 (2)开放同级和低级中断 上述中断响应过程大部分操作是CPU自动完成的,用户只需要了解来龙去脉。而用户需要做的事情是 编制中断服务程序,并在此之前完成中断初始化,即设置堆栈,定义外中断触发方式,定义中断优先级, 开放中断等。
02
4.中断优先级控制寄存器IP 8051系列单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先 级都是由中断优先级寄存器IP中的相应位状态定义。IP的状态由软件设定,某位为1,则相应的 中断源为高优先级中断;某位为0,则相应的中断源为低优先级中断。单片机复位时,IP各位清 0,各中断源处于低优先级中断。IP的结构、位名称和位地址见表5-4。
03
3.中断服务 中断服务程序包括以下几个部分。 (1)保护现场 在中断服务程序中,通常会涉及一些特殊功能寄存器,如ACC、PSW和DPTR等,而这些特殊功能寄 存器中断前的数据在中断返回后还要用到,若在中断服务程序中被改变,返回主程序后将会出错。因此, 要求把这些特殊功能寄存器中断前的数据保存起来,待中断返回时恢复。 所谓保护现场,是指把断点处有关寄存器的内容压入堆栈保护,以便中断返回时恢复。“有关”是指 中断返回时需要恢复,不需要恢复就是无关。通常有关是指中断程序中要用到的寄存器及地址。 (2)执行中断服务程序 中断服务程序要做的事情是中断源请求中断的目的,是CPU完成中断处理的主体。 (3)恢复现场 与保护现场相对应,中断返回前,应将进入中断服务程序时保护的有关寄存器及地址的内容从堆栈中 弹出,送回到原有关寄存器,以便返回断点后继续执行原来的程序。需要指出的是,对于8051系列单片 机,利用堆栈保护和恢复现场需要遵循先进后出、后进先出的原则,特别是硬件堆栈与程序入栈共用时更 要注意。 以上3部分,中断服务程序是中断源请求中断的目的,用程序指令实现相应的操作要求。保护现场和 恢复现场是相对应的,但不是必须的。需要保护就保护,不需要或无保护内容时则不需要保护现场。
05
具体使用时需要注意以为问题: • 中断函数不能进行参数传递,如果中断函数中含有任何参数申明都将导致编译出错,同时 也没有返回值,一般定义中断程序的类型为void。 • 函数名的选择与普通的函数一样,编译器是根据中断号而不是函数名来识别中断源的,但 为了程序的可读性,可根据中断源来定义函数名,例如定时器TO的中断服程序可以这样定义: • void timer0(void) interrupt 1 • 中断服务函数必须有interrupt m属性; • 进入中断服务函数,ACC、B、PSW会进栈,根据需要,DPL、DPH也可能进栈,如果没 有using n属性,R0~R7也可能进栈,否则不进栈; • 在中断服务函数中调用其它函数,被调函数最好设置为可重入的,因为中断是随机的,有 可能中断服务函数所调用的函数出现嵌套调用; • 不能够直接调用中断服务函数。
本章要点: • 中断的基本概念 • 8051中断系统的结构 • 单片机中断系统 • 8051中断的使用 • 中断服务程序
CONTNTS
01
所谓中断,是指计算机在执行某一程序的过程中,由于计算机系统内部或外部的某种原因, CPU必须暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序, 待处理结束之后,再回来继续执行被暂停程序的过程。实现这种中断功能的硬件系统和软件系 统统称为中断系统。运行过程如图5-1所示。
01
CONTNTS
02
1.中断源 中断源是指向CPU发出中断请求的信号来源,中断源可以人为设定,也可以响应突发性随 机事件。8051系列单片机有5个中断源,其中2个是外部中断源,3个是内部中断源。 (1)INT 0 —外部中断0,从P3.2引脚输入的中断请求。 (2)INT1 —外部中断1,从P3.3引脚输入的中断请求。 (3)T0—定时/计数器T0,定时器0溢出发出中断请求,计数器0从外部P3.4引脚输入计数 脉冲中断请求。 (4)T1—定时/计数器T1,定时器1溢出发出中断请求,计数器1从外部P3.5引脚输入计数 脉冲中断请求。 (5)串行口中断,包括串行接收中断RI和串行发送中断TI。
03
2)中断响应操作 在满足中断响应条件的前提下,进入中断响应,CPU响应中断后,进行下列操作。 • 保护断点地址 CPU响应中断是中断原来执行的程序,转而去执行中断服务程序。中断服务程序执行完毕后,还要返 回原来的中断点,继续执行原来的程序。因此,必须把中断点的PC地址记下来,以便正确返回。那么中 断断点的PC地址如何保存,保存在哪里?具体做法是:执行一条硬件LCALL指令,把程序计数器PC的内 容压入堆栈保存(注意是硬件入栈,不是程序入栈),再把相应的中断服务程序入口地址送入PC。 • 撤除该中断源的中断请求标志 CPU是在执行每一条指令的最后一个机器周期查询各中断请求标志位是否置位,响应中断后,必须将 其撤除,否则,中断返回后将重复响应该中断而出错。对于80C5l来讲,有的中断请求标志在CPU响应中 断后,由CPU硬件自动撤除,但有的中断请求标志必须由用户在软件程序中对该中断标志清0。 • 关闭同级中断 在一种中断响应后,同一优先级的中断即被暂时屏蔽。待中断返回时再重新自动开启。 • 将相应中断的入口地址送入PC 8051系列单片机5个中断源的中断入口地址如下。 INT0: 0003H T0: 000BH INT1: 0013H T1: 001BH 串行口:0023BH
01
(2)中断响应与返回:CPU采集到中断请求信号后,怎样转向特定的中断服务子程序及执 行完中断服务子程序怎样返回被中断的程序继续执行。中断响应与返回的过程中涉及CPU响应 中断的条件、现场保护、现场恢复等问题。
(3)优先级控制:一个计算机应用系统,特别是计算机实时测控系统,往往有多个中断源, 各中断源的重要程度又有轻重缓急之分。与人处理问题的思路一样,希望重要紧急的事件优先 处理,而且如果当前处于正在处理某个事件的过程中,有更重要、更紧急的事件到来,就应当 暂停当前事件的处理,转去处理新事件。这就是中断系统优先级控制所要解决的问题。中断优 先级控制形成了中断嵌套。8051系列单片机中断系统原理及组成如图5-2所示。a
01
1.中断的作用 中断技术的引入解决了CPU与外设的速度匹配问题,提高了CPU的工作效率,主要表现在: (1)具有分时处理功能:在正常状态下,CPU执行主程序,当外设需要CPU为它服务时, 就向CPU发出中断请求,CPU就响应中断,执行相应的中断服务程序,处理完毕后,CPU又返 回主程序正常运行。如果有几个外设同时发出中断请求,多项任务同时要处理,就会出现资源 竞争的现象。中断技术就是为了解决资源竞争的一个可行的方法。从而实现计算机与外部设备 间传送数据及实现人机对话。 (2)具有实时控制功能:在工业实时控制中,由于现场的参数或信息随时会出现变化并要 求CPU能够极快地响应并作出处理,因此如果没有中断技术就很难实现。有了中断以后,可以 将这些参数或信息设定为中断请求信号向CPU提出中断请求,从而使CPU能及时对参数或信息 的变化作出相应的处理,达到实现实时控制的目的。 (3)故障自动处理功能:当故障发生时,故障源作为中断源向CPU发出中断请求,从而使 CPU马上执行相应的故障服务程序,保证计算机不会因故障而造成严重的后果。
CONTNTS
03
中断处理过程分四步:中断请求、中断响应、中断服务和 中断返回。如图5-4所示为中断处理流程图。
1.中断请求 当中断源要求CPU为它服务时,必须发出一个中断请求信 号。若是外部中断源,则需将中断请求信号送到规定的外部中 断引脚上,CPU将相应的中断请求标志位置l。为保证该中断得 以实现,中断请求信号应保持到CPU响应该中断后才能取消。 若是内部中断源,则内部硬件电路将自动置位该中断请求标志。 CPU将不断地及时地查询这些中断请求标志,一旦查询到某个 中断请求标志置位,CPU就响应该中断源中断。
CONTNTS
04
图5-5所示为某中断的响应时序。
CONTNTS
05
C51函数的定义实际上已经包含了中断服务函数,但为了明确起见,下面专门给出中断处 理函数的具体定义形式:
函数类型 函数名([形式参数表]) interrupt n [using n] {
相关主题