中断的魅力分析_第1页
中断的魅力分析_第2页
中断的魅力分析_第3页
中断的魅力分析_第4页
中断的魅力分析_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中断的魅力中断的魅力什么是“中断”?中断的好处是什么?单片机如何处理“中断”外部中断怎么回事?任何一件事情的发生任何一件事情的发生都会都会中断中断小林看电视小林看电视的进程而去响应和处的进程而去响应和处理事件。理事件。任何一件事情(中断)任何一件事情(中断)处理完毕,小林(单处理完毕,小林(单片机)将继续看电视片机)将继续看电视(主程序)。(主程序)。外部中断一例外部中断一例主程序时主程序时“绿灯绿灯”亮亮中断中断“红灯红灯”亮亮ORG 0000H; 起始地址00HLJMP MAINORG 0013H ;外部中断1的中断服务子序起始地址为13HLJMP EXT1_GREENMAIN: MOV

2、IE, #84H ; 使能外部中断1YELLOW: CLR P0.0 ; 点亮绿色发光二极管D1 JMP YELLOW ; 循环 中断服务子程序段中断服务子程序段,熄灭,熄灭黄色黄色发光二极管发光二极管D1,点亮,点亮绿色绿色D2 ;EXT1_RED:SETBP0.0 ; 熄灭黄色发光二极管熄灭黄色发光二极管D1CLRP0.1 ; 点亮绿色点亮绿色D2 LCALL DELAYSETBP0.1 ; 熄灭红色发光二极管熄灭红色发光二极管D2RETI ; 中断服务子程序结束中断服务子程序结束END ; 程序结束程序结束延时子程序DELAY: 随机事件发生随机事件发生主程序主程序主程序主程序中断服务子

3、程序中断服务子程序CPU中断中断:是指由于某种随机事件的是指由于某种随机事件的发生,计算机暂停现在程序的运发生,计算机暂停现在程序的运行,转向执行另一个程序,处理行,转向执行另一个程序,处理完毕后又自动返回原来的程序继完毕后又自动返回原来的程序继续运行。续运行。 能引起中断的事件称为能引起中断的事件称为中断源中断源 CPUCPU现执行的程序称为现执行的程序称为主主程序程序 处理中断事件的程序称为处理中断事件的程序称为中断中断服务子程序服务子程序。小狗饿、电话响这些事情似乎小狗饿、电话响这些事情似乎“打扰打扰”了小林看电视,了小林看电视,外部中断也似乎影响了外部中断也似乎影响了“绿灯亮绿灯亮”。

4、那么,。那么,“中断中断”是是否会降低单片机的执行效率呢?否会降低单片机的执行效率呢?MAIN1MAIN1红灯亮红灯亮MAIN3MAIN3按钮是否按下按钮是否按下MAIN2MAIN2Yes查询方式查询方式小狗饿、电话响这些事情似乎小狗饿、电话响这些事情似乎“打扰打扰”了小林看电视,了小林看电视,外部中断也似乎影响了外部中断也似乎影响了“绿灯亮绿灯亮”。那么,。那么,“中断中断”是是否会降低单片机的执行效率呢?否会降低单片机的执行效率呢?中断方式中断方式MAIN1MAIN1按钮按下按钮按下MAIN3MAIN3MAIN2MAIN2外部中断服务程序外部中断服务程序哪种方式使单片机的执哪种方式使单片机

5、的执行效率高?行效率高?ORG 0000H; 起始地址00HMAIN: MOV IE, #84H ; 使能外部中断1YELLOW: CLR P0.0 ; 点亮绿色发光二极管D1 JMP YELLOW ; 循环ORG 0013H ;外部中断;外部中断1的中断服务子序起始地址为的中断服务子序起始地址为13H中断服务子程序段中断服务子程序段,熄灭,熄灭黄色黄色发光二极管发光二极管D1,点亮,点亮绿色绿色D2;EXT1_RED:SETBP0.0 ; 熄灭黄色发光二极管熄灭黄色发光二极管D1CLRP0.1 ; 点亮绿色点亮绿色D2 LCALL DELAYSETBP0.1 ; 熄灭红色发光二极管熄灭红色发

6、光二极管D2RETI ; 中断服务子程序结束中断服务子程序结束END ; 程序结束程序结束延时子程序DELAY: 外部中断外部中断1 1的程序的程序上例中,当外部中断上例中,当外部中断1 1发生时,单片机怎么知道要去执发生时,单片机怎么知道要去执行行“EXT1_RED”段程序呢?段程序呢?每个中断服务子程序的存放空间有限,若有同每个中断服务子程序的存放空间有限,若有同时使能多个中断,并且每个中断服务子程序按时使能多个中断,并且每个中断服务子程序按中断向量表中的地址开始存放,可能出现一个中断向量表中的地址开始存放,可能出现一个中断服务子程序占据其他中断服务子程序空间中断服务子程序占据其他中断服务

7、子程序空间问题,如何解决呢?问题,如何解决呢?ORG0000H ; 起始地址0000HJMPMAIN ; 跳转到MAINORG0003H ; 外部中断外部中断0的起始地址的起始地址03H JMPEXT0 ; 跳转到跳转到EXT0 ORG000BH ; Timer 0中断的起始地址中断的起始地址0BH JMPTIM0 ; 跳转到跳转到TIM0 MAIN:MOVIE, #83H ; 使能外部中断0和Timer 0中断 ; 主程序段JMPMAIN ; 循环执行主程序EXT0: 外部中断0的中断服务子程序段RETITIM0: ; Timer0中断的中断服务子程序段RETIEND;程序结束主程序主程序外

8、部中断外部中断0 0服服务子程序务子程序定时计数器定时计数器0 0服务子程序服务子程序IEIE:中断使能寄存器。是一个特殊功:中断使能寄存器。是一个特殊功能寄存器,位于能寄存器,位于SFRSFR中地址中地址A8HA8H上。上。中断使能寄存器中断使能寄存器IEIE中断使能寄存器中断使能寄存器IEIE的操作的操作: IEIE的位的位7 7是是EAEA,是所有中断的,是所有中断的“总开关总开关”。只有只有EA=1EA=1时,中时,中断才会开放,这时断才会开放,这时IEIE中的其他位将使能或屏蔽某一个中断。如中的其他位将使能或屏蔽某一个中断。如果果EA=0EA=0,所有中断都不会被响应(全被屏蔽)。,

9、所有中断都不会被响应(全被屏蔽)。如果如果EA=1EA=1时,相应的中断由时,相应的中断由IEIE中相应的位来控制。中相应的位来控制。控制位置控制位置1 1使能中断;清使能中断;清0 0则屏蔽中断。则屏蔽中断。中断使能寄存器中断使能寄存器IEIE中断使能寄存器中断使能寄存器IEIE设置中断使能寄存器设置中断使能寄存器IEIE,使单片机可以响应,使单片机可以响应P3.3P3.3的的外部中外部中断断1.1.MOV IE, #84HMOV IE, #84HCLR ES CLR ES CLR EX0CLR EX0CLR ET0CLR ET0CLR ET0CLR ET0SETB ET1SETB ET1S

10、ETB EASETB EA如果两个或两个以上中断同时产生,单片机应如果两个或两个以上中断同时产生,单片机应该如何选择处理哪个中断服务呢?该如何选择处理哪个中断服务呢?中断优先级1. AT89S511. AT89S51单片机有一个默认的中断优先级单片机有一个默认的中断优先级。如果两个或两个以上中断同时产生,单片机应如果两个或两个以上中断同时产生,单片机应该如何选择处理哪个中断服务呢?该如何选择处理哪个中断服务呢?中断优先级2.2.通过对中断优先级控制寄存器通过对中断优先级控制寄存器IPIP设置设置优先级。优先级。如果两个或两个以上中断同时产生,单片机应如果两个或两个以上中断同时产生,单片机应该如

11、何选择处理哪个中断服务呢?该如何选择处理哪个中断服务呢?中断优先级3. 3. 两级中断嵌套两级中断嵌套如果两个或两个以上中断同时产生,单片机应如果两个或两个以上中断同时产生,单片机应该如何选择处理哪个中断服务呢?该如何选择处理哪个中断服务呢?中断优先级3. 3. 两级中断嵌套两级中断嵌套中断优先级关系,可归纳为中断优先级关系,可归纳为两条基本规则两条基本规则:(1 1)低优先级可被高优先级中断,高优先级不能低优先级)低优先级可被高优先级中断,高优先级不能低优先级中断。中断。如果某一中断源被设置为高优先级中断,则不能被任如果某一中断源被设置为高优先级中断,则不能被任何其他的中断源的中断请求所中断

12、。何其他的中断源的中断请求所中断。(2 2)任何一种任何一种中断中断一旦得到响应,一旦得到响应,不会再被它的同级中断不会再被它的同级中断源所中断源所中断。中断的处理中断的处理 AT89S51 AT89S51单片机有单片机有5 5个中断源,就有个中断源,就有5 5种方式使单片机产生种方式使单片机产生中断。当一个中断产生时,单片机会按以下步骤进行响应中断。当一个中断产生时,单片机会按以下步骤进行响应和处理。和处理。立即暂停当前正在执行的任何指令,并把下一条将要执行的指令地址压入堆栈中。随机事件发生随机事件发生主程序主程序CPUPCSPSPSP+1SP+1SP+2SP+2PCLPCHPUSH指令中断

13、的处理中断的处理随机事件随机事件发生发生 主程序主程序CPU根据中断的类型在中断向根据中断的类型在中断向量表中找到对应的地址。量表中找到对应的地址。 LACLLLACLL 中断入口地中断入口地址址 到该地址上开始执行中断服到该地址上开始执行中断服务子程序务子程序。直到遇到指令“RETI”,中断服务子程序结束。例如:上例中外部中断1的响应,硬件自动生成长调用指令:LCALL LCALL 0013H0013H中断服务子程序中断服务子程序RETI中断的处理中断的处理随机事件随机事件发生发生 主程序主程序CPU 中断服务子程序中断服务子程序执行完中断服务子程执行完中断服务子程序后,从堆栈中弹出在中序后

14、,从堆栈中弹出在中断产生时保存的将要执行断产生时保存的将要执行的下一条指令的地址到程的下一条指令的地址到程序计数器序计数器PCPC中,单片机开中,单片机开始从始从PCPC指示的地址继续执指示的地址继续执行程序。行程序。 PO PPO P指令指令SPSPSP+2SP+2PCLPCHSP+1SP+1PCPC中断的处理中断的处理随机事件随机事件发生发生 主程序主程序CPU 中断服务子程序中断服务子程序执行完中断服务子程执行完中断服务子程序后,从堆栈中弹出在中序后,从堆栈中弹出在中断产生时保存的将要执行断产生时保存的将要执行的下一条指令的地址到程的下一条指令的地址到程序计数器序计数器PCPC中,单片机

15、开中,单片机开始从始从PCPC指示的地址继续执指示的地址继续执行程序。行程序。重新装入断点重新装入断点PCPC值值主程序主程序特别注意:这些工作是特别注意:这些工作是硬件自动完成的!硬件自动完成的! 中断的处理中断的处理 根据上面的过程, 总结中断处理过程分为中断处理过程分为三个阶段:三个阶段:中断响应、中断处理和中断返回中断响应、中断处理和中断返回。中断响应中断返回中断处理中断处理中断处理中断服务子程序流程中断服务子程序流程中断服务程序从中断子程中断服务程序从中断子程序序入口地址入口地址开始执行,直到开始执行,直到返回指令返回指令RETIRETI为止,这个为止,这个过程称为过程称为中断处理中

16、断处理( (或中断或中断服务服务) )。中断服务子程序一般包括中断服务子程序一般包括两部分内容,两部分内容,一是保护和恢一是保护和恢复现场,二是处理中断源的复现场,二是处理中断源的请求。请求。入口地址入口地址RETI 关中断关中断保护现场保护现场中断服务中断服务 开中断开中断 关中断关中断恢复现场恢复现场 开中断开中断中断返回中断返回断点地址由堆栈弹入断点地址由堆栈弹入PC保护现场保护现场和恢复现和恢复现场的过程场的过程中不允许中不允许中断,以中断,以免现场遭免现场遭到破坏。到破坏。保护和恢复现场保护和恢复现场之后的开中断是之后的开中断是为了允许有更高为了允许有更高级中断打断此中级中断打断此中

17、断服务程序。断服务程序。 中中断断服服务务程程序序硬件自动完成INTT0: CLR EA PUSH ACC PUSH DPH PUSH DPL PUSH PSW SETB EA 中断源服务 CLR EA POP PSW POP DPL POP DPH POP ACC SETB EA RETI保护现场保护现场恢复现场恢复现场关中断关中断开中断开中断开中断开中断关中断关中断中断返回中断返回 中断返回是指中断服务中断返回是指中断服务完后,计算机返回到原来完后,计算机返回到原来暂停的位置暂停的位置(即断点即断点),继,继续执行原来的程序。续执行原来的程序。 中断返回由专门的中断中断返回由专门的中断返回

18、指令返回指令RETI来实现。来实现。 RETI指令功能:把断点地指令功能:把断点地址取出,送回到址取出,送回到程序计数器程序计数器PC中中去。去。另外,它还通知中另外,它还通知中断系统已完成中断处理,将断系统已完成中断处理,将清除优先级状态触发器清除优先级状态触发器。不能用不能用RET指令代替指令代替RETI指令指令!特别注意特别注意中断响应的基本条件中断响应的基本条件 有中断源提出中断请求;有中断源提出中断请求; 中断总允许位中断总允许位EA=1EA=1,即,即CPUCPU开放中断;开放中断; 申请中断的中断源的中断允许位为申请中断的中断源的中断允许位为1 1,即没有被屏蔽。,即没有被屏蔽。

19、只要以上条件满足,且下列三种情况都不存在,那么,在下一周期只要以上条件满足,且下列三种情况都不存在,那么,在下一周期CPUCPU响应中断。否则,采样的结果被取消。响应中断。否则,采样的结果被取消。 CPUCPU正在处理同级或高级优先级的中断。正在处理同级或高级优先级的中断。 现行的机器周期不是所执行指令的最后一个机器周期。现行的机器周期不是所执行指令的最后一个机器周期。 正在执行的指令是正在执行的指令是RETIRETI或访问或访问IEIE、IPIP指令。指令。CPUCPU在执行在执行RETIRETI或访问或访问IEIE、IPIP的指令后,至少需要再执行一条其他指令后才会的指令后,至少需要再执行

20、一条其他指令后才会响应中断请求。响应中断请求。外部中断信号输入端外部中断信号输入端/INT0/INT0和和 /INT1/INT1AT89S51AT89S51单片机的单片机的/INT0/INT0端端(1212管脚)和管脚)和/INT1/INT1端端(1313管脚)是外部中断信管脚)是外部中断信号进入单片机的通道。号进入单片机的通道。P3.2和P3.3即是一般I/O口,又分别是外部中断0和外部中断1的中断信号输入端。通常我们使用/INTx代表任意一个外部中断。外部中断信号触发方式外部中断信号触发方式使单片机产生外部中断的信号有两种使单片机产生外部中断的信号有两种方方式,式,一是低电平触一是低电平触

21、发,二是下降沿触发发,二是下降沿触发。低电平触发低电平触发u 当单片机上电复位后,使能外部中断时就当单片机上电复位后,使能外部中断时就默认默认以低电以低电平方式触发。平方式触发。u 在低电平触发模式下,外部中断信号输入端在低电平触发模式下,外部中断信号输入端/INT0/INT0和和/INT1/INT1出现低电平就会触发外部中断出现低电平就会触发外部中断0 0或外部中断或外部中断1 1。u 在单片机进入中断服务子程序执行并在中断结束指令在单片机进入中断服务子程序执行并在中断结束指令“RETIRETI”之前,这个低电平必须撤走,否则将会使单片机执之前,这个低电平必须撤走,否则将会使单片机执行完指令

22、行完指令“RETIRETI”后因后因 /INT0 /INT0或或/INT1/INT1仍为低电平而再次进仍为低电平而再次进入中断服务子程序。入中断服务子程序。外接电路外接电路外部中断信号触发方式外部中断信号触发方式使单片机产生外部中断的信号有两种使单片机产生外部中断的信号有两种方方式,式,一是低电平触一是低电平触发,二是下降沿触发发,二是下降沿触发。下降沿下降沿触发触发u /INT0 /INT0端或端或/INT1/INT1端出现下降沿即可使单片机产生中断。端出现下降沿即可使单片机产生中断。u 下降沿触发方式不是单片机默认的中断触发方式,所以下降沿触发方式不是单片机默认的中断触发方式,所以需要指令

23、需要指令来设置单片机工作在该模式下。方法是通过来设置单片机工作在该模式下。方法是通过TimerTimer控制寄存器控制寄存器TCONTCON中的中的IT0IT0位和位和IT1IT1位来分别控制位来分别控制/INT0/INT0和和/INT1/INT1触发方式。触发方式。外部中断信号触发方式外部中断信号触发方式中断请求标志寄存器中断请求标志寄存器 TCON TCON需软件设置需软件设置外部中断响应时间外部中断响应时间1. 1. 最短时间最短时间 3 3个机器周期个机器周期LCALL LCALL 中断入口地中断入口地址址中断请求标志中断请求标志位位=1=1?是否1 1个机器周期个机器周期2 2个机器

24、周期个机器周期外部中断响应时间外部中断响应时间1. 1. 最长的时间最长的时间 8 8个机器周期个机器周期执行执行RETIRETI或或IEIE、IPIP指令指令执行执行MUL MUL 或或DIVDIV指令指令LCALL LCALL 中断入口地址中断入口地址2 2个机器周期个机器周期4 4个机器周期个机器周期2 2个机器周期个机器周期多个外部中断源多个外部中断源查询和中断相结合查询和中断相结合方式方式中断中断查询查询多个外部中断源多个外部中断源重要的单独设中断重要的单独设中断JB P1.0 ,IR1JB P1.1,IR2JB P1.2,IR3JB P1.3,IR4 3 3个故障源显示电路。发光二

25、极管个故障源显示电路。发光二极管LED1LED1LED3LED3对应对应3 3个输入个输入端端X1X1X3X3。l当系统无故障时,当系统无故障时,3个故障源输入端个故障源输入端X1X3全为低电平,对应的全为低电平,对应的3个显示灯个显示灯全灭;全灭;l当某部分出现故障时,其对应的输入端由低电平转为高电平,从而引起当某部分出现故障时,其对应的输入端由低电平转为高电平,从而引起51单片机中断,中断服务程序的任务是判定故障,并点亮对应的发光二极管。单片机中断,中断服务程序的任务是判定故障,并点亮对应的发光二极管。开始开始设置设置P1P1口状态口状态中断初始化中断初始化等待中断等待中断主程序主程序P1

26、.0P1.0为低为低电平电平 P1.1P1.1为低为低电平电平否否P1.2P1.2为低为低电平电平否否是是是是是是P1.3P1.3为低为低电平电平P1.4P1.4为低为低电平电平P1.5P1.5为低为低电平电平否否中断中断返回返回中断服务子程序中断服务子程序开始开始设置设置P1P1口状态口状态中断初始化中断初始化等待中断等待中断主程序主程序 ORG 0000H ORG 0000H ;首地址;首地址 AJMP MAIN AJMP MAIN ;程序转到主程序程序转到主程序 ORG 0003H ORG 0003H ;中断程序的矢量地址中断程序的矢量地址 AJMP SERVE AJMP SERVE ;

27、程序转到中断服务程程序转到中断服务程序的入口地址序的入口地址SERVESERVE处执行处执行 ORG 0100H ORG 0100H ; ;主程序入口地址主程序入口地址MAINMAIN:ORL P1ORL P1,#0F8H #0F8H ;将;将P1P1口置为口置为1111100011111000,即可以使二极管不发光。,即可以使二极管不发光。 SETB IT0 SETB IT0 ;将设为下降沿触发方式将设为下降沿触发方式( (置置TCONTCON中的中的IT0IT0位为位为1)1) SETB EX0 SETB EX0 ;将将 设为允许中断设为允许中断 SETB EA SETB EA ;将中断允

28、许总控制位开启,将中断允许总控制位开启,让上面的各项设置生效让上面的各项设置生效( (置置IEIE中的中的EAEA位为位为1 1) AJMP $ AJMP $ ;程序转到程序转到$ $处等待中断处等待中断P1.0P1.0为低为低电平电平 P1.1P1.1为低为低电平电平是是P1.2P1.2为低为低电平电平否否否否是是是是P1.3P1.3为低为低电平电平P1.4P1.4为低为低电平电平P1.5P1.5为低为低电平电平否否中断中断返回返回中断服务子程序中断服务子程序SERVESERVE: JNB P1.0 JNB P1.0,L1 L1 ;若若X1X1无故障无故障(X1=0)(X1=0),程序转到,

29、程序转到L1L1,有故,有故障障(X1=1)(X1=1)则往下走则往下走 CLR P1.3 CLR P1.3 ; 将将P1.3P1.3位清位清0 0,使二极管,使二极管LED1LED1导通导通 L1L1: JNB P1.1 JNB P1.1,L2 L2 ; 若若X2X2无故障无故障(X2=0)(X2=0),程序转到,程序转到L2L2,有故,有故障障(X2=1)(X2=1)则往下走则往下走 CLR P1.4 CLR P1.4 ; 将将P1.4P1.4位清位清0 0,使二极管,使二极管LED2LED2导通发光导通发光L2L2: JNB P1.2 JNB P1.2,L3 L3 ; 若若X3X3无故障无故障(X3=0)(X3=0),程序转到,程序转到L3L3,有故,有故障障(X3=1)(X3=1)则往下走则往下走 CLR P1.5 CLR P1.5 ; 将将P1.5P1.5位清位清0 0,使二极管,使二极管LED3LED3导通发光导通发光L3L3:RETI RETI ; 返回返回$ $处处的主程序继续等待检测的主程序继续等待检测 用用P1P1口输出控制的口输出控制的8 8只发光二极管,实现只发光二极管,实现8 8位二进制计数位二进制计数器,对器,对INT0INT0上出现的脉冲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论