《MCS-51系列单片微计算机-6》由会员分享,可在线阅读,更多相关《MCS-51系列单片微计算机-6(28页珍藏版)》请在金锄头文库上搜索。
1、第6章 MCS-51的中断系统,6-1 中断的概念,6.1 中断的概念,1)定义当CPU在执行程序的过程中,外部事件向 CPU 发出信号,请求 CPU 迅速去处理,于是, CPU暂时中止执行当前程序,转去处理相应的事件,待处理完毕后,再继续执行原来被中止的程序,这样的过程称为 “中断”。 中断系统中断源(I/o设备、实时时钟及外界计数信号、故障、调试程序)中断申请中断响应过程中断返回,2)中断的功能a. 中断可以解决快速的 CPU 与慢速的外设之间的矛盾,使 CPU 和外设同时工作。CPU在启动外设工作后继续执行主程序,同时外设也在工作。每当外设做完一件事就发出中断申请,请求 CPU 中断它正
2、在执行的程序,转去执行中断服务程序(一般情况是处理输入/输出数据),中断处理完之后,CPU 恢复执行主程序,外设也继续工作。这样,CPU 可启动多个外设同时工作,大大地提高了 CPU 的效率。b. 在实时控制中,现场的各种参数、信息均随时间和现场而变化。这些外界变量可根据要求随时向 CPU 发出中断申请,请求 CPU 及时处理中断请求。如中断条件满足,CPU 马上就会响应,进行相应的处理,从而实现实时处理。c. 针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向 CPU 发出中断请求,再由 CPU 转到相应的故障处理程序进行处理。,6.2 中断系统的构成及管理,1
3、) 中断源请求标志,a. TCON (88H)寄存器中的中断标志位,b. SCON (98H)寄存器中的中断标志位,TR1,TR0,2) 中断控制标志,1) IE (A8H)寄存器中的中断开/关控制,2) IP (B8H)寄存器中的中断优先级控制,1) INT0 :外部中断 0 请求,由 P3.2 脚输入。通过 IT0 脚(TCON.0)来决定是低电平有效还是下跳变有效。一旦输入信号有效,就向 CPU 申请中断,并建立 IE0 标志。 INT1 :外部中断 1 请求,由 P3.3 脚输入。通过 IT1 脚(TCON.2)来决定是低电平有效还是下跳变有效。一旦输入信号有效,就向 CPU 申请中断
4、,并建立 IE1 标志。 3) TF0:定时器 0 溢出中断请求。当定时器 0 产生溢出时,定时器 0 中断请求标志位(TCON.5)置位(由硬件自动执行),请求中断处理。 4) TF1:定时器 1 溢出中断请求。当定时器 1 产生溢出时,定时器 1 中断请求标志位(TCON.7)置位(由硬件自动执行),请求中断处理。 5) RI 或 TI:串行中断请求。当接收或发送完一串行帧时,内部串行口中断请求标志位 RI(SCON.0)或 TI(SCON.1)置位(由硬件自动执行),请求中断。,3) 5个中断源,4) 中断优先级,8051 单片机有两个中断优先级,每个中断源都可以通过编程确定为高优先级中
5、断或低优先级中断。因此,可实现二级嵌套。,同一优先级别中的中断源可能不止一个,因此,也有一个中断优先权排队的问题。,6.3 中断处理过程,1)中断系统的功能 a. 实现中断响应和中断返回 CPU 中断响应过程如下:首先,将断点处的 PC 值(即下一条应执行指令的地址)推入堆栈保留起来,这称为保护断点,由硬件自动执行;将有关的寄存器内容和标志位状态推入堆栈保留起来,这称为保护现场,由用户自己编程完成。保护断点和现场后即可执行中断服务程序。,6.3 中断处理过程,1)中断系统的功能 a. 实现中断响应和中断返回 中断返回过程如下:首先,恢复原保留寄存器的内容和标志位的状态,这称为恢复现场,由用户编
6、程完成;再加返回指令 RETI,RETI指令的功能是恢复 PC 值,使 CPU 返回断点,这称为恢复断点。恢复现场和断点后,CPU将继续执行原主程序,中断响应过程到此为止。,b. 实现优先权排队 计算机按中断源优先权高低逐次响应的过程称为优先权排队。当多个中断源同时发出中断请求时,优先权高的中断能先被响应,只有优先权高的中断处理结束后才能响应优先权低的中断。c. 实现中断嵌套 当 CPU 响应某一中断时,若有优先权高的中断源发出中断请求,则 CPU 会中断正在进行的中断服务程序,并保留这个程序的断点(类似于子程序嵌套),响应高级中断。高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过
7、程称为中断嵌套。,2)中断处理的过程,a. 中断响应中断响应是 CPU 对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。CPU 响应中断的条件有: 有中断源发出中断请求。 中断总允许位 EA = 1。 申请中断的中断源允许。满足以上基本条件,CPU 一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断。 CPU 正在响应同级或高优先级的中断。 当前指令未执行完。 正在执行 RETI 中断返回指令或访问专用寄存器 IE 和 IP 的指令。,中断响应、中断处理、中断返回,MCS-51系列单片机各中断源的入口地址由硬件事先设定,分配如下:,中断系
8、统通过硬件自动生成长调用指令(LACLL),该指令将自动把断点地址压入堆栈保护(不保护累加器 A、状态寄存器 PSW 和其它寄存器的内容),然后,将对应的中断入口地址装入程序计数器 PC(由硬件自动执行),使程序转向该中断入口地址,执行中断服务程序。,中断处理中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,到返回指令“RETI”为止。在进入中断服务程序后,一般要先保护现场,然后,执行中断处理程序,在中断返回之前再恢复现场。中断处理一般包括两部分内容,一是保护现场,二是完成中断源请求的服务。,编写中断服务程序时需注意:各中断源的中断入口地址之间只相隔 8 个字节,容纳不下普通的
9、中断服务程序,因此,在中断入口地址单元,通常存放一条无条件转移指令,可将中断服务程序转至存储器的其它任何空间。 若要在执行当前中断程序时禁止其它更高优先级中断,需先用软件关闭 CPU 中断,或用软件禁止相应高优先级的中断,在中断返回前再开放中断。 在保护和恢复现场时,为了不使现场数据遭到破坏或造成混乱,一般规定此时 CPU不再响应新的中断请求。因此,在编写中断服务程序时,要注意在保护现场前关中断,在保护现场后若允许高优先级中断,则应开中断。同样,在恢复现场前也应先关中断,恢复之后再开中断。,c. 中断返回 中断返回是指中断服务完后,计算机返回原来断开的位置(即断点),继续执行原来的程序。中断返
10、回由中断返回指令 RETI 来实现。该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器 PC,此外,还通知中断系统已完成中断处理,并同时清除优先级状态触发器。特别要注意不能用“RET”指令代替“RETI”指令。,CPU 响应中断请求后即进入中断服务程序,在中断返回前,应撤除该中断请求,否则,会引起重复中断,从而导致错误。8051 各中断源中断请求撤消的方法有以下几种:1) 定时器中断请求的撤除 对于定时器 0 或 1 溢出中断,CPU 在响应中断后即由硬件自动清除其中断标志位 TF0或 TF1,无需采取其它措施。 2) 串行口中断请求的撤除 对于串行口中断,CPU 在响应中断后,硬件不能自
11、动清除中断请求标志位 TI、RI,必须在中断服务程序中用软件将其清除。,6.4 中断请求的撤除,外部中断请求的撤除 外部中断可分为边沿触发型和电平触发型。 a) 对于边沿触发的外部中断 0 或 1,CPU 在响应中断后,无需采取其它措施。,b) 对于电平触发外中断,CPU 在响应中断后,硬件不会自动清除其中断请求标志位 IE0 或 IE1,同时,也不能用软件将其清除,所以,在 CPU 响应中断后,应立即撤除 INT0 或 INT1 引脚上的低电平。否则,就会引起重复中断而导致错误。但是,CPU 又不能控制 INT0或 INT1引脚的信号,因此,只有通过硬件再配合相应软件才能解决这个问题。,可在
12、中断服务程序中采用两条指令:ANL P1,#0FEH ORL P1,#01H来撤除外部中断请求。,6.5 中断响应时间 中断响应时间是指从中断请求标志位置位到 CPU 开始执行中断服务程序的第一条指令所持续的时间。,对于外部中断:CPU 在每个机器周期的 S5P2 期间采样其输入引脚 INT0 或 INT1 端的电平,如果中断请求有效,则置位中断请求标志位 IE0 或 IE1,然后在下一个机器周期再对这些标志位进行查询。这就意味着中断请求信号的低电平至少应维持一个机器周期。这时,如果满足中断响应条件,则 CPU响应中断请求,在下一个机器周期执行一条硬件长调用指令“LACLL”,使程序转入中断矢
13、量入口。该调用指令执行时间是两个机器周期;因此,外部中断响应时间至少需要 3 个机器周期,这是最短的中断响应时间。,如果中断请求被阻断,则中断响应时间将延长。例如一个同级或更高级的中断正在进行,则附加的等待时间取决于正在进行的中断服务程序的长度。如果正在执行的一条指令还没有进行到最后一个机器周期,则附加的等待时间为 1 3 个机器周期(因为一条指令的最长执行时间为 4 个机器周期)。如果正在执行的指令是 RETI指令或访问 IE 或 IP 的指令,则附加的等待时间在 5 个机器周期之内(最多用一个机器周期完成当前指令,再加上最多 4 个机器周期完成下一条指令)。 若系统中只有一个中断源,则中断
14、响应时间为 3 8 个机器周期。,6.6 外部中断源的扩展举例8051 单片机仅有两个外部中断请求输入端 INT0和 INT1 。在实际应用中,若外部中断源超过两个,则需扩充外部中断源。,EXINT3EXINT2EXINT1EXINT0,and,中断服务程序如下: ORG 0003H ;外部中断 0 入口 AJMP INT0 ;转向中断服务程序入口 ORG 2000HINT0: PUSH PSW ;保护现场 PUSH ACC JNB P1.0,EXT0 ;中断源查询并转相应中断服务程序 JNB P1.1,EXT1 JNB P1.2,EXT2 JNB P1.3,EXT3EXIT: POP ACC ;恢复现场 POP PSW RETI EXT0: ;EXINT0 中断服务程序 AJMP EXIT EXT1: ;EXINT1 中断服务程序 AJMP EXIT EXT2: ;EXINT2 中断服务程序 AJMP EXIT EXT3: ;EXINT3 中断服务程序 AJMP EXIT,