第4章MCS-51中断系统PPT课件_第1页
第4章MCS-51中断系统PPT课件_第2页
第4章MCS-51中断系统PPT课件_第3页
第4章MCS-51中断系统PPT课件_第4页
第4章MCS-51中断系统PPT课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4 4章章 MCS-51MCS-51中断系统中断系统【学习目标学习目标】l 掌握掌握中断系统的基本概念中断系统的基本概念,熟记,熟记MCS-51MCS-51五个五个中中断源断源及其及其中断入口地址中断入口地址;l 熟悉熟悉功能寄存器功能寄存器TCONTCON、SCONSCON、IEIE、IPIP的结构、的结构、控制作用和设置方法;控制作用和设置方法;l 理解理解MCS-51MCS-51中断响应过程及处理方法;中断响应过程及处理方法;l 理解中断服务程序与调用子程序的区别;理解中断服务程序与调用子程序的区别;l 掌握掌握中断应用程序中断应用程序的编写方法。的编写方法。 4 4.1 .1 中断

2、系统概述中断系统概述 1 1中断的概念中断的概念 所谓中断就是指所谓中断就是指CPUCPU正在处理某事件正在处理某事件时,外部发生了另一事件(例如一个电时,外部发生了另一事件(例如一个电平的变化、一个脉冲沿的发生、定时平的变化、一个脉冲沿的发生、定时/ /计计数器溢出等)请求数器溢出等)请求CPUCPU迅速去处理,于是,迅速去处理,于是,CPUCPU暂停当前的程序,转去处理所发生的暂停当前的程序,转去处理所发生的事情;当处理完所发生的事情后,再回事情;当处理完所发生的事情后,再回到原来被暂停的程序处继续原来的工作。到原来被暂停的程序处继续原来的工作。这样的过程称为中断,具体流程如图这样的过程称

3、为中断,具体流程如图4.14.1所示,对事件的整个处理过程称为中断所示,对事件的整个处理过程称为中断服务(或中断处理),实现这种功能的服务(或中断处理),实现这种功能的部件称为中断系统(中断机构),产生部件称为中断系统(中断机构),产生中断的请求源称为中断源。中断源向中断的请求源称为中断源。中断源向CPUCPU提出的处理请求,称为中断请求或中断提出的处理请求,称为中断请求或中断申请。申请。 CPUCPU暂时中止执行的程序,转去执行中断服务程暂时中止执行的程序,转去执行中断服务程序,除了硬件会自动把序,除了硬件会自动把断点地址断点地址(1616位程序计数器位程序计数器PCPC的值)压入堆栈之外,

4、用户还得注意保护有关的的值)压入堆栈之外,用户还得注意保护有关的工作寄存器、累加器、标志位等信息,这称为工作寄存器、累加器、标志位等信息,这称为保护保护现场现场。 在完成中断服务程序后,恢复有关的工作寄存在完成中断服务程序后,恢复有关的工作寄存器、累加器、标志位内容,这称为器、累加器、标志位内容,这称为恢复现场恢复现场。最后。最后执行中断返回指令,从堆栈中自动弹出断点地址到执行中断返回指令,从堆栈中自动弹出断点地址到PCPC,继续执行被中断的程序,这称为,继续执行被中断的程序,这称为中断返回中断返回。 2 2中断的作用中断的作用 提高提高CPUCPU工作效率工作效率 具有实时处理功能具有实时处

5、理功能 具有故障处理功能具有故障处理功能 实现分时操作实现分时操作中断功能强弱是计算机性能优劣的重要标志中断功能强弱是计算机性能优劣的重要标志 调用中断服务程序的过程类似于调用子程序,调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的,其区别在于调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先却无法确定,因为而何时调用中断服务程序事先却无法确定,因为“中断中断”的发生是由外部因素决定的,程序中无的发生是由外部因素决定的,程序中无法事先安排调用指令。因此,调用中断服务程序法事先安排调用指令。因此,调用中断服务程序的过程是由硬件自动完成的。的过程是由硬件

6、自动完成的。3 3中断系统的功能中断系统的功能 为了正确地处理中断任务并能满足各种中断源为了正确地处理中断任务并能满足各种中断源的中断请求,计算机的中断系统应该具有以下功能。的中断请求,计算机的中断系统应该具有以下功能。1 1)能实现中断及返回。)能实现中断及返回。2 2)能实现中断优先级排队。)能实现中断优先级排队。 3 3)能实现中断嵌套。)能实现中断嵌套。 4.2 MCS-514.2 MCS-51单片机的中断系统单片机的中断系统有有5 5个中断请求源,两个中断优先级,可两级嵌套。个中断请求源,两个中断优先级,可两级嵌套。MCS-51MCS-51单片机的中断系统结构示意图,如单片机的中断系

7、统结构示意图,如图图4-34-3所示。所示。 INT0INT0: :外部中断外部中断0 0,中断请求信号由,中断请求信号由P3.2P3.2输入。输入。 INT1INT1: :外部中断外部中断1 1,中断请求信号由,中断请求信号由P3.3P3.3输入。输入。 T0T0: :定时定时/ /计数器计数器0 0溢出中断溢出中断,对外部脉冲计数由,对外部脉冲计数由P3.4P3.4输入。输入。 T1T1: :定时定时/ /计数器计数器1 1溢出中断溢出中断,对外部脉冲计数由,对外部脉冲计数由P3.5P3.5输入。输入。 串行中断串行中断: :包括包括串行接收中断串行接收中断RIRI和和串行发送中断串行发送

8、中断TITI。 4.2.1 4.2.1 中断源及中断入口中断源及中断入口 中断源是指能发出中断请求,引起中断的装置或事件。中断源是指能发出中断请求,引起中断的装置或事件。 MCS-51MCS-51单片机共有单片机共有5 5个中断源,个中断源,其中其中2 2个为外部中断源,个为外部中断源, 3 3个为内部中断源:个为内部中断源: 5 5个中断源分别对应个中断源分别对应5 5个固定的中断入口地址个固定的中断入口地址。当。当某中断源的中断请求被某中断源的中断请求被CPUCPU响应之后,响应之后,CPUCPU将把此中断将把此中断源的入口地址装入源的入口地址装入PCPC,中断服务程序即从此地址开始,中断

9、服务程序即从此地址开始执行。此地址称为中断入口,亦称为中断矢量。在执行。此地址称为中断入口,亦称为中断矢量。在MCS-51MCS-51单片机中各中断源以及与之对应的入口地址分单片机中各中断源以及与之对应的入口地址分配见表配见表4.14.1。中中 断断 源源入入 口口 地地 址址 外部中断外部中断0 0定时器定时器T0T0中断中断外部中断外部中断1 1定时器定时器T1T1中断中断串行口中断串行口中断0003H0003H000BH000BH0013H0013H001BH001BH0023H0023H 4.2.2 4.2.2 中断控制中断控制 MCS-51 MCS-51单片机中涉及中断控制的有单片机

10、中涉及中断控制的有4 4个特殊功个特殊功能寄存器:能寄存器: 1 1)定时和外中断控制寄存器)定时和外中断控制寄存器TCONTCON。 2 2)串行口中断控制寄存器)串行口中断控制寄存器SCONSCON。 3 3)中断允许控制寄存器)中断允许控制寄存器IEIE。 4 4)中断优先级控制寄存器)中断优先级控制寄存器IPIP。1 1中断请求标志寄存器中断请求标志寄存器 MCS-51 MCS-51对每一个中断请求都对应有一个中断请求标对每一个中断请求都对应有一个中断请求标志位,中断请求被响应前,中断请求由志位,中断请求被响应前,中断请求由CPUCPU锁存在特殊锁存在特殊功能寄存器功能寄存器TCONT

11、CON和和SCONSCON的相应中断标志位中。的相应中断标志位中。(1 1)定时和外中断控制寄存器)定时和外中断控制寄存器TCONTCONTCONTCON为定时为定时/ /计数器计数器T0T0和和T1T1的控制寄存器,同时也锁存的控制寄存器,同时也锁存T0T0和和T1T1的溢出中断标志及外部中断(的溢出中断标志及外部中断( 和和 )的)的中断标志等。中断标志等。TCONTCON可采用字节操作指令或位操作指令进可采用字节操作指令或位操作指令进行设置,其字节地址为行设置,其字节地址为88H88H,位地址,位地址8FH88H8FH88H,其相关的,其相关的位地址见表位地址见表4.24.2。TCON(

12、88H88H)D7D6D5D4D3D2D1D0TF1TF0IE1IT1IE0IT0位地址位地址8FH8DH8BH8AH89H88HTCONTCON位功能位功能: : TF1 TF1 T1T1溢出中断请求标志溢出中断请求标志 T1T1计数溢出后,计数溢出后,TF1=1TF1=1 TF0TF0 T0T0溢出中断请求标志溢出中断请求标志 T0T0计数溢出后,计数溢出后,TF0=1TF0=1TF0/TF1TF0/TF1:定时器溢出中断申请标志位:定时器溢出中断申请标志位: =0 =0:定时器未溢出;:定时器未溢出; =1 =1:定时器溢出申请中断:定时器溢出申请中断, ,进中断后自动清零。进中断后自动

13、清零。 IE1IE1 外中断中断请求标志外中断中断请求标志 当当P3.3P3.3引脚信号有效时,引脚信号有效时,IE1=1IE1=1 IE0IE0 外中断中断请求标志外中断中断请求标志 当当P3.2P3.2引脚信号有效时,引脚信号有效时,IE0=1IE0=1IE0/IE1IE0/IE1:外部中断申请标志位:外部中断申请标志位: =0 =0:没有外部中断申请;:没有外部中断申请; =1 =1:有外部中断申请。:有外部中断申请。 IT1IT1 外中断触发方式控制位外中断触发方式控制位 IT1=1IT1=1,边沿触发方式,即边沿触发方式,即P3.3P3.3出现出现下跳边下跳边 脉冲有效;脉冲有效;

14、IT1=0IT1=0,电平触发方式。电平触发方式。 IT0IT0 外中断触发方式控制位外中断触发方式控制位 其意义和功能与其意义和功能与IT1IT1相似。相似。IT0/IT1IT0/IT1:外部中断请求的触发方式选择位:外部中断请求的触发方式选择位: =0 =0:在:在INT0/INT1INT0/INT1端申请中断的信号低电平有效端申请中断的信号低电平有效; ; =1 =1:在:在INT0/INT1INT0/INT1端申请中断的信号负跳变有效端申请中断的信号负跳变有效. .(2 2)串行中断控制寄存器)串行中断控制寄存器SCONSCONSCONSCON为串口控制寄存器,其字节映像地址为为串口控

15、制寄存器,其字节映像地址为98H98H,也可以进行位寻址。串口的接收和发送数据中断也可以进行位寻址。串口的接收和发送数据中断请求标志位(请求标志位(RIRI、TITI)被锁存在串口控制寄存器)被锁存在串口控制寄存器SCONSCON中,其相关的位地址见表中,其相关的位地址见表4.34.3。SCON(98H98H)D7D6D5D4D3D2D1D0TIRI位地址位地址99H98HSCONSCON寄存器各位的含义如下。寄存器各位的含义如下。1 1)TITI:串行口的发送中断请求标志位。将一个字节的:串行口的发送中断请求标志位。将一个字节的数据写入发送缓冲器数据写入发送缓冲器SBUFSBUF时,就启动一

16、帧串行数据时,就启动一帧串行数据的发送,每发送完一帧串行数据后,硬件自动将的发送,每发送完一帧串行数据后,硬件自动将TITI位置为位置为1 1。但。但CPUCPU响应中断时,并不清除响应中断时,并不清除TITI,必须在,必须在中断服务程序中用软件对中断服务程序中用软件对TITI清零。清零。2 2)RIRI:串行口接收中断请求标志位。在串行口允许接:串行口接收中断请求标志位。在串行口允许接收时,每接收完一个串行帧,硬件自动将收时,每接收完一个串行帧,硬件自动将RIRI位置位置1 1。但但CPUCPU在响应本中断时,并不清除在响应本中断时,并不清除RIRI,必须在中断服,必须在中断服务程序中用软件

17、对务程序中用软件对RIRI清零。清零。 CPUCPU复位后,复位后,TCONTCON和和SCONSCON各位清零,各位清零,CPUCPU关中断,关中断,所有中断请求被禁止。所有中断请求被禁止。 2 2中断允许控制寄存器中断允许控制寄存器IEIE CPU CPU对中断系统所有中断以及某个中断源的开放和屏对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器蔽是由中断允许寄存器IEIE控制的。控制的。IEIE的状态可用软件对的状态可用软件对各位分别置各位分别置1 1或清零,从而实现对各中断源中断允许或屏或清零,从而实现对各中断源中断允许或屏蔽。蔽。IEIE寄存器的字节地址是寄存器的字节地址

18、是A8HA8H,位地址为,位地址为AFHAFHA8HA8H。IE(A8HA8H)D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0位地址位地址AFHACHABHAAHA9HA8H各位的含义如下。各位的含义如下。1 1)EAEA:CPUCPU中断允许总控制位。中断允许总控制位。EA=1EA=1,表示,表示CPUCPU开放中断,但每个中断源的中断请求是允许开放中断,但每个中断源的中断请求是允许还是禁止,要由各自的允许位控制;还是禁止,要由各自的允许位控制;EA=0EA=0,表示,表示CPUCPU禁止所有中断,即所有的中断请求被屏蔽,禁止所有中断,即所有的中断请求被屏蔽,称关中断。称关

19、中断。2 2)ESES:串行口中断控制位。:串行口中断控制位。ES=1ES=1,允许串行口中断;,允许串行口中断; ES=0ES=0,禁止串行口中断。,禁止串行口中断。3 3)ETlETl:T1T1中断控制位。中断控制位。Etl=1Etl=1,允许,允许T1T1中断;中断; Etl=0Etl=0,禁止,禁止T1T1中断。中断。4 4)EXlEXl:外部中断:外部中断1 1控制位。控制位。EX1=1EX1=1,允许外部中断,允许外部中断1 1中断;中断;EX1=0EX1=0,禁止外部中断,禁止外部中断1 1中断。中断。5 5)ET0ET0:T0T0中断控制位。中断控制位。ET0=1ET0=1,允

20、许,允许T0T0中断;中断; ET0=0ET0=0,禁止,禁止T0T0中断。中断。6 6)EX0EX0:外部中断:外部中断0 0控制位。控制位。EX0=1EX0=1,允许外部中断,允许外部中断0 0中断;中断; EX0=0EX0=0,禁止外部中断,禁止外部中断0 0中断。中断。例如例如: :要使要使INT0INT0开中开中( (其余关中其余关中) ),可执行下列指令:,可执行下列指令: SETB SETB EAEASETBSETB EX0EX0或者或者 MOVMOVIE IE ,#10000001B#10000001B或者或者 ORLORLIE IE ,#10000001B#10000001B

21、说明说明: : MCS-51MCS-51对中断实行对中断实行两级两级控制,控制,总控制位是总控制位是EAEA,每一每一中断源还有各自的控制位。中断源还有各自的控制位。首先首先要要EA=1EA=1,其次其次还要还要自身的控制位置自身的控制位置“1 1”。 MCS-51 MCS-51单片机单片机有有5 5个中断源个中断源,有有两个中断优先级两个中断优先级:高优先级和低优先级,可实现两级中断服务嵌套,由高优先级和低优先级,可实现两级中断服务嵌套,由IPIP控制。只要对控制。只要对IPIP各位置各位置1 1或清零,就可对各中断源设置或清零,就可对各中断源设置高优先级或低优先级。相应位置高优先级或低优先

22、级。相应位置1 1,定义为高优先级;,定义为高优先级;相应位清零,定义为低优先级。相应位清零,定义为低优先级。IPIP寄存器的字节地址为寄存器的字节地址为0B8H0B8H,位地址为,位地址为0BFH0BFH0B8H0B8H。IPIP相关的位地址见表相关的位地址见表4.54.5。IP(B8HB8H)D7D6D5D4D3D2D1D0PSPT1PX1PT0PX0位地址位地址BCHBBHBAHB9HB8H3 3中断优先级控制寄存器中断优先级控制寄存器IPIP各位的含义如下各位的含义如下: :1 1)PX0PX0:外部中断:外部中断0 0中断优先级控制位。中断优先级控制位。 PX0PX01 1,外部中断

23、,外部中断0 0定义为高优先级中断;定义为高优先级中断; PX0PX00 0,外部中断,外部中断0 0定义为低优先级中断。定义为低优先级中断。2 2)PT0PT0:定时:定时/ /计数器计数器T0T0中断优先级控制位。中断优先级控制位。 PT0PT01 1,T0T0溢出中断定义为高优先级中断;溢出中断定义为高优先级中断; PT0PT00 0,T0T0溢出中断定义为低优先级中断。溢出中断定义为低优先级中断。3 3)PX1PX1:外部中断:外部中断1 1中断优先级控制位。中断优先级控制位。 PX1PX11 1,外部中断,外部中断1 1定义为高优先级中断;定义为高优先级中断; PX1PX10 0,外

24、部中断,外部中断1 1定义为低优先级中断。定义为低优先级中断。4 4)PT1PT1:定时:定时/ /计数器计数器T1T1中断优先级控制位。中断优先级控制位。 PT1PT11 1,T1T1溢出中断定义为高优先级中断;溢出中断定义为高优先级中断; PT1PT10 0,T1T1溢出中断定义为低优先级中断。溢出中断定义为低优先级中断。5 5)PSPS:串行口中断优先级控制位。:串行口中断优先级控制位。 PSPS1 1,串行口中断定义为高优先级中断;,串行口中断定义为高优先级中断; PSPS0 0,串行口中断定义为低优先级中断。,串行口中断定义为低优先级中断。MCS-51MCS-51单片机响应中断的基本

25、原则如下:单片机响应中断的基本原则如下:1 1)低优先级中断可被高优先级中断请求所中断,反之则)低优先级中断可被高优先级中断请求所中断,反之则不能。不能。2 2)在同一优先级中(不管是高优先级或低优先级),某)在同一优先级中(不管是高优先级或低优先级),某个中断一旦得到响应,与它同级的中断请求就不能再中断个中断一旦得到响应,与它同级的中断请求就不能再中断它。它。CPUCPU同时接收到几个中断时,首先响应优先级最高的中断同时接收到几个中断时,首先响应优先级最高的中断请求。如果同级的多个中断请求同时出现,则按请求。如果同级的多个中断请求同时出现,则按CPUCPU查询查询次序确定的中断优先权排队来响

26、应,其确定的查询次序见次序确定的中断优先权排队来响应,其确定的查询次序见表表4.64.6。由此可见,各中断源在同一个优先级的条件下,。由此可见,各中断源在同一个优先级的条件下,外部中断外部中断0 0的中断优先权最高,串行口中断优先权最低。的中断优先权最高,串行口中断优先权最低。 查询顺序查询顺序如如表表4-64-6: 表表4-64-6 中断源同级优先次序中断源同级优先次序中断源中断源 中断级别中断级别外部中断外部中断0 0最高最高T0T0溢出中断溢出中断外部中断外部中断1 1T1T1溢出中断溢出中断串行口中断串行口中断最低最低4.3 4.3 中断处理过程中断处理过程 中断处理过程可分为三个阶段

27、,即中断处理过程可分为三个阶段,即中断响应中断响应、中中断处理断处理和和中断返回中断返回。所有计算机的中断处理都有这样。所有计算机的中断处理都有这样三个阶段,但不同的计算机由于中断系统的硬件结构三个阶段,但不同的计算机由于中断系统的硬件结构不完全相同,因而中断响应的方式有所不同,其一般不完全相同,因而中断响应的方式有所不同,其一般的流程图如图的流程图如图4.44.4所示。所示。4.3.1 4.3.1 中断响应中断响应1 1CPUCPU的中断响应条件的中断响应条件CPUCPU响应中断的条件主要有以下几点:响应中断的条件主要有以下几点:1 1)由中断源发出中断申请。由中断源发出中断申请。2 2)中

28、断总允许位中断总允许位EAEA1 1,即,即CPUCPU允许所有中断源申请允许所有中断源申请 中断。中断。3 3)申请中断的中断源的中断允许位为申请中断的中断源的中断允许位为1 1,即此中断源,即此中断源 没有被屏蔽,可以向没有被屏蔽,可以向CPUCPU申请中断。申请中断。 以上是以上是CPUCPU响应中断的基本条件。若满足,响应中断的基本条件。若满足,CPUCPU一般一般会响应中断,但如果有下列任一种情况存在,中断会响应中断,但如果有下列任一种情况存在,中断响应即被封锁。响应即被封锁。1 1)CPUCPU正在执行一个同级或高级的中断服务程序。正在执行一个同级或高级的中断服务程序。2 2)当前

29、的机器周期不是正在执行的指令的最后当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令完成前任何中断一个周期,即正在执行的指令完成前任何中断请求都得不到响应。请求都得不到响应。3 3)正在执行的指令是返回指令正在执行的指令是返回指令RETIRETI或者对专用或者对专用寄存器寄存器IEIE、IPIP进行读写的指令时,在执行进行读写的指令时,在执行RETIRETI或者读写或者读写IEIE或或IPIP之后,不会马上响应中断之后,不会马上响应中断请求。请求。2 2中断响应过程中断响应过程 如果中断响应条件满足,且不存在中断受阻的情如果中断响应条件满足,且不存在中断受阻的情况,则况,则CPU

30、CPU响应中断。此时,中断系统通过硬件生成响应中断。此时,中断系统通过硬件生成的长调用指令的长调用指令“LCALLLCALL”,自动把断点地址压入堆栈保,自动把断点地址压入堆栈保护(但不保护状态寄存器护(但不保护状态寄存器PSWPSW及其他寄存器内容),及其他寄存器内容),然后将对应的中断入口地址装入程序计数器然后将对应的中断入口地址装入程序计数器PCPC使程序使程序转向该中断入口地址,并执行中断服务程序。转向该中断入口地址,并执行中断服务程序。4.3.2 4.3.2 中断处理中断处理 中断处理(又称中断服务)程序从入口地址开始中断处理(又称中断服务)程序从入口地址开始执行,直到返回指令执行,

31、直到返回指令“RETIRETI”为止,这个过程称为中为止,这个过程称为中断处理。断处理。4.3.3 4.3.3 中断返回中断返回 中断返回是指中断服务完成后,计算机返回到断点中断返回是指中断服务完成后,计算机返回到断点(原来断开的位置),继续执行原来的程序。中断返回由(原来断开的位置),继续执行原来的程序。中断返回由专门的中断返回指令专门的中断返回指令“RETIRETI”实现。该指令的功能是把断点实现。该指令的功能是把断点地址取出,送回到程序计数器地址取出,送回到程序计数器PCPC中去。另外,它还通知中中去。另外,它还通知中断系统已完成中断处理,将清除优先级状态触发器。特别断系统已完成中断处理

32、,将清除优先级状态触发器。特别要注意不能用要注意不能用“RETRET”指令代替指令代替“RETIRETI”指令。指令。恢复断点地址恢复断点地址: : 将原来压入堆栈中的将原来压入堆栈中的PCPC断点地址从堆栈中弹断点地址从堆栈中弹出,送回出,送回PCPC。这样这样CPUCPU就返回到原断点处,继续执行被中断就返回到原断点处,继续执行被中断的原程序。的原程序。初学者容易模糊的是初学者容易模糊的是,中断返回,返回哪里,中断返回,返回哪里? ? 答答案是:从什么地方来,回什么地方去。不是返回到相应中断案是:从什么地方来,回什么地方去。不是返回到相应中断的入口地址,而是返回到中断断点地址。的入口地址,

33、而是返回到中断断点地址。 4.3.4 4.3.4 中断响应时间中断响应时间 CPU CPU在每个机器周期的在每个机器周期的S5P2S5P2时刻采样各中断请求信号,时刻采样各中断请求信号,并将它锁存在并将它锁存在TCONTCON或或SCONSCON,在下一个机器周期对锁存的,在下一个机器周期对锁存的中断请求标志位进行查询。中断请求标志位进行查询。外部中断的外部中断的最短最短的响应时间为的响应时间为3 3个机器周期个机器周期: : (1 1)中断请求标志位查询占)中断请求标志位查询占1 1个机器周期个机器周期。(2 2)子程序调用指令)子程序调用指令LCALLLCALL转到相应的中断服务程序入口,

34、转到相应的中断服务程序入口,需需2 2个机器周期个机器周期。 外部中断响应的外部中断响应的最长最长的响应时间为的响应时间为8 8个机器周期个机器周期:(1 1)发生在发生在CPUCPU进行中断标志查询时,进行中断标志查询时,刚好是开始执行刚好是开始执行RETIRETI或是访问或是访问IEIE或或IPIP的指令,则需把当前指令执行完再的指令,则需把当前指令执行完再继续执行一条指令后,才能响应中断,当前指令执行完继续执行一条指令后,才能响应中断,当前指令执行完最长需最长需2 2个机器周期个机器周期。(2 2)接着再执行一条指令,按最长指令(乘法指令接着再执行一条指令,按最长指令(乘法指令MULMU

35、L和和除法指令除法指令DIVDIV)来算,也只有来算,也只有4 4个机器周期个机器周期。(3 3)加上加上硬件子程序调用硬件子程序调用指令指令LCALLLCALL的执行,需要的执行,需要2 2个机个机器周期器周期。 所以,外部中断响应最长时间为所以,外部中断响应最长时间为8 8个机器个机器周期。如果已在处理同级或更高级中断,响周期。如果已在处理同级或更高级中断,响应时间无法计算。应时间无法计算。 在一个单一中断的系统里,在一个单一中断的系统里,MCS-51MCS-51单片机单片机对外部中断请求的响应的时间总是在对外部中断请求的响应的时间总是在3 38 8个个机器周期机器周期之间。之间。 4.3

36、.5 4.3.5 中断请求的撤销中断请求的撤销 中断源发出中断请求,相应中断请求标志置中断源发出中断请求,相应中断请求标志置“1 1”。 CPUCPU响应中断后,响应中断后,必须必须清除中断请求清除中断请求“1 1”标志。否则中断响标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。应返回后,将再次进入该中断,引起死循环出错。(1 1)定时器中断请求的撤销)定时器中断请求的撤销对于定时器对于定时器0 0或或1 1溢出中断,溢出中断,CPUCPU在响应中断后即由硬件自动在响应中断后即由硬件自动清除其中断标志位清除其中断标志位TF0TF0或或TF1TF1,无需采取其他措施。,无需采取其他措

37、施。(2 2)串行口中断请求的撤销)串行口中断请求的撤销对于串行口中断,对于串行口中断,CPUCPU在响应中断后,硬件不能自动清除中在响应中断后,硬件不能自动清除中断请求标志位断请求标志位TITI、RIRI,必须在中断服务程序中用软件将其清,必须在中断服务程序中用软件将其清除。除。(3 3)外部中断请求的撤销)外部中断请求的撤销外部中断可分为边沿触发型和电平触发型。外部中断可分为边沿触发型和电平触发型。例:电平触发的外部中断例:电平触发的外部中断 硬件电路如图所示。当外部设备有中断请求时,中断硬件电路如图所示。当外部设备有中断请求时,中断请求信号经反相,加到锁存器请求信号经反相,加到锁存器CP

38、CP端,作为端,作为CPCP脉冲。由于脉冲。由于D D端接地为端接地为0 0,Q Q端输出低点平,触发端输出低点平,触发INT0INT0生中断。生中断。当当CPUCPU响响应中断后,应在该中断服务程序中按排两条指令应中断后,应在该中断服务程序中按排两条指令: CLR P1.0CLR P1.0 SETB P1.0 SETB P1.0 从而撤消引起重复中断的从而撤消引起重复中断的INT0INT0低电平信号。低电平信号。 边沿触发的外部中断边沿触发的外部中断CPUCPU在响应中断后由硬件自动清除在响应中断后由硬件自动清除中断标志位中断标志位IE0IE0或或IE1IE1。因此一般来说因此一般来说,对外

39、中断,对外中断INT0INT0、INTlINTl,应尽量采用边沿触发方式,以简化硬件电路和软件应尽量采用边沿触发方式,以简化硬件电路和软件程序。程序。 4.4 4.4 中断程序设计结构及应用举例中断程序设计结构及应用举例 中断系统的应用要解决的问题主要是编写应用程序,中断系统的应用要解决的问题主要是编写应用程序,编写应用程序包括两大部分:一是中断初始化;二是中编写应用程序包括两大部分:一是中断初始化;二是中断服务程序。本节将介绍中断程序的一般设计方法,并断服务程序。本节将介绍中断程序的一般设计方法,并通过实例说明中断系统的应用。通过实例说明中断系统的应用。4.4.1 4.4.1 中断程序的一般

40、设计方法中断程序的一般设计方法1 1主程序主程序在编写主程序时应注意以下两点。在编写主程序时应注意以下两点。1 1)主程序的起始地址)主程序的起始地址:MCS-51MCS-51单片机复位后,单片机复位后,(PC)(PC)0000H0000H,而各中断源的入口地址为,而各中断源的入口地址为0003H0003H0023H0023H。因此,。因此,在编写程序时应在在编写程序时应在0000H0000H处使用一条转移指令以跳过上述处使用一条转移指令以跳过上述区域,主程序则以转移指令的目的地址作为其起始地址。区域,主程序则以转移指令的目的地址作为其起始地址。2 2)中断系统的初始化)中断系统的初始化 2

41、2中断服务程序中断服务程序在编写中断服务程序时应注意以下三点。在编写中断服务程序时应注意以下三点。1 1)由表由表4.14.1可知,五个中断源的入口地址之间彼此可知,五个中断源的入口地址之间彼此相差相差8 8个存储单元,一般来说无法容纳下一个完整的个存储单元,一般来说无法容纳下一个完整的中断服务程序。因此,通常在中断服务程序的入口中断服务程序。因此,通常在中断服务程序的入口处设置一条三字节长转移指令,这样可使中断服务处设置一条三字节长转移指令,这样可使中断服务程序安排在程序安排在64KB64KB程序存储器的任何地方。程序存储器的任何地方。2 2)在中断服务程序的开始应使用软件保护现场,在在中断

42、服务程序的开始应使用软件保护现场,在中断处理完成之后、中断返回之前应恢复现场。中断处理完成之后、中断返回之前应恢复现场。3 3)中断服务程序的最后一条指令是中断返回指令中断服务程序的最后一条指令是中断返回指令RETIRETI。下面通过实例来说明中断程序的一般设计方法。利用外部下面通过实例来说明中断程序的一般设计方法。利用外部中断中断0向向CPU申请中断,中断服务将申请中断,中断服务将Pl口作为输出驱动。口作为输出驱动。主程序如下:主程序如下: ORG 0000H AJMP MAIN ;转向主程序;转向主程序 ORG 0003H ;外部中断;外部中断0入口地址入口地址 AJMP WINT ;指向

43、中断服务程序;指向中断服务程序 ORG 0100H ;主程序;主程序MAIN:SETB IT0 ;选择边沿触发方式;选择边沿触发方式 SETB EX0 ;允许外部中断;允许外部中断0 SETB EA ;CPU允许中断允许中断HERE:AJMP HERE ;主程序踏步;主程序踏步中断服务程序如下:中断服务程序如下:ORG 0200HWINT:MOV A, #0FFHMOV P1, A ;输出驱动;输出驱动RETI ;中断返回;中断返回END4.4.2 4.4.2 中断程序应用举例中断程序应用举例【例例4.14.1】 如图如图4.64.6所示,要求每次来一个负脉冲,使连所示,要求每次来一个负脉冲,

44、使连接到接到P1P1口的发光二极管口的发光二极管LEDLED循环点亮。循环点亮。解:利用的下降沿触发中断。解:利用的下降沿触发中断。汇编语言程序如下:汇编语言程序如下:ORG 0000H ;复位入口复位入口 LJMP MAIN ORG 0013H ;中断入口中断入口 LJMP INT_X1 ORG 0100H ;主程序主程序MAIN:MOV SP, #60H ;设栈底设栈底 MOV A, #01H ; P1.0亮初始值亮初始值 MOV P1, #00H ; 初始灭灯初始灭灯 SETB IT1 ;负跳变触发中断负跳变触发中断 SETB EXl ;开开INT1中断中断 SETB EA ;开总允许开

45、关开总允许开关 SJMP $ ;等待等待INT_X1:MOV P1, A RL A RETI END对应的对应的C语言程序如下:语言程序如下:#include unsigned char i=0 x01;void intxl_isr() interrupt 2 i=1; if (i=0) i=1;/移位移位8次后,次后,i将变为将变为0,需重新赋值,需重新赋值 P1=i;void main( void) P1=0; IT1=1; EX1=1; EA=1; While (1); /循环等待循环等待【例例4.24.2】 编写流水灯的中断闪烁程序。编写流水灯的中断闪烁程序。 正常工作时单片机正常工作时单片机P1P1口的口的8 8个个LEDLED灯左移、右移,外灯左移、右移,外部中断部中断0 0产生请求时,产生请求时,LEDLED亮、灭闪亮、灭闪1010次。以下就是实现次。以下就是实现该功能的程序,它由延时子程序该功能的程序,它

温馨提示

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

评论

0/150

提交评论