《C51单片机中断系统.ppt》由会员分享,可在线阅读,更多相关《C51单片机中断系统.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章 中断系统中断系统5.1 微机的输入微机的输入/输出方式输出方式5.2 中断的概念中断的概念5.3 89C51中断系统结构及中断控制中断系统结构及中断控制5.4 中断响应及处理过程中断响应及处理过程 5.5 中断程序举例中断程序举例5.6 思考题与习题思考题与习题5.1 微机的输入微机的输入/输出方式输出方式5.1.1 无条件传送方式无条件传送方式5.1.2 查询传送方式查询传送方式5.1.3 直接存储器存取(直接存储器存取(DMA)方式)方式 无条件传送方式无条件传送方式4CPU总是认为外设在总是认为外设在任何时刻都处于任何时刻都处于“准备好准备好”的的状态。状态。4这种传送方式
2、不需要交换状态信息,这种传送方式不需要交换状态信息,只需在程序只需在程序中加入访问外设的指令中加入访问外设的指令,数据传送便可以实现。,数据传送便可以实现。4这种方法很少使用。这种方法很少使用。5.1.2 查询传送方式(条件传送)查询传送方式(条件传送)一、什么是查询传送方式一、什么是查询传送方式在输入时,需要查询外设的输入数据是否准备好;在输入时,需要查询外设的输入数据是否准备好;在输出时,需要查询外设是否把上一次在输出时,需要查询外设是否把上一次CPU输出的输出的数据处理完毕。数据处理完毕。查询传送方式:通过查询传送方式:通过查询外设的状态信息查询外设的状态信息,确信外,确信外设已处于设已
3、处于“准备好准备好”,计算机才发出访问外设的指令,计算机才发出访问外设的指令,实现数据的传送。实现数据的传送。状态信息:一般为状态信息:一般为1位二进制码。位二进制码。二、查询方式程序流程图二、查询方式程序流程图输入状态信息输入状态信息准备好?准备好?传送数据传送数据启动外设设备启动外设设备传送数据传送数据延时延时YESNO(a)(b)四、查询方式的特点四、查询方式的特点优点:优点:通用性好,可以用于各类外设和通用性好,可以用于各类外设和CPU间的数据间的数据传送。传送。缺点:缺点:CPU在完成一次数据传送后要等待很长时间才在完成一次数据传送后要等待很长时间才能进行下一次的传送。在等待过程中,
4、能进行下一次的传送。在等待过程中,CPU不能进行不能进行其他操作,所以其他操作,所以效率比较低效率比较低。三、查询方式的过程三、查询方式的过程查询方式的过程:查询方式的过程:查询查询等待等待数据传送数据传送,待到下一次数据传送时,待到下一次数据传送时则重复上述过程。(外设的工作速度比则重复上述过程。(外设的工作速度比CPU慢得多)慢得多)DMA:Direct Memory AccessCPU让出数据总线(悬浮状态),使让出数据总线(悬浮状态),使外设和存外设和存储器之间直接传送储器之间直接传送(不通过(不通过CPU)数据的方式。数据的方式。适用于外设和存储器之间有大量的数据需要传适用于外设和存
5、储器之间有大量的数据需要传送及外设工作速度很快的情况。送及外设工作速度很快的情况。5.1.3 直接存储器存取(直接存储器存取(DMA)方式)方式5.2 中断的概念中断的概念一、中断一、中断二、中断系统二、中断系统三、中断源三、中断源四、中断请求四、中断请求五、中断响应过程五、中断响应过程六、中断服务六、中断服务七、中断返回七、中断返回八、中断方式的特点八、中断方式的特点一、中断一、中断当当CPU正在处理某事件正在处理某事件的时候,外部发生的某的时候,外部发生的某一事件请求一事件请求CPU迅速去迅速去处理,于是处理,于是CPU暂时中暂时中止当前的工作,转去处止当前的工作,转去处理所发生的事件。中
6、断理所发生的事件。中断服务处理完该事件后,服务处理完该事件后,再返回到原来被中止的再返回到原来被中止的地方继续原来的工作,地方继续原来的工作,这样的过程称为中断。这样的过程称为中断。中断流程如右图所示。中断流程如右图所示。主主程程序序响应中断请求响应中断请求中中断断服服务务程程序序返回主程序返回主程序继继续续执执行行主主程程序序断点断点二、中断系统二、中断系统实现中断功能的部件称为中断系统,又称中断机构。实现中断功能的部件称为中断系统,又称中断机构。三、中断源三、中断源产生中断的请求源称为中断源。产生中断的请求源称为中断源。四、中断请求四、中断请求中断源向中断源向CPU提出的处理请求,称为中断
7、请求或中断申提出的处理请求,称为中断请求或中断申请。请。五、中断响应过程五、中断响应过程CPU暂时中止自身的事务,转去处理事件的过程,称为暂时中止自身的事务,转去处理事件的过程,称为CPU的中断响应过程。的中断响应过程。六、中断服务六、中断服务对事件的整个处理过程,称为中断服务(或中断处理)。对事件的整个处理过程,称为中断服务(或中断处理)。七、中断返回七、中断返回中断处理完毕,再回到原来被中止的地方,称为中断返回。中断处理完毕,再回到原来被中止的地方,称为中断返回。八、中断方式的特点八、中断方式的特点1、中断方式消除了、中断方式消除了CPU在查询方式中的等待现象,大大在查询方式中的等待现象,
8、大大提提高了高了CPU的工作效率的工作效率。2、将从现场采集的数据通过中断方式及时传送给、将从现场采集的数据通过中断方式及时传送给CPU,经,经过处理后可立即作出反应,实现现场控制。采用查询方式过处理后可立即作出反应,实现现场控制。采用查询方式很难做到及时采集,实时控制。很难做到及时采集,实时控制。5.3 89C51中断系统结构及中断控制中断系统结构及中断控制5.3.1 89C51中断系统结构中断系统结构5.3.2 89C51中断源中断源5.3.3 中断控制中断控制5.3.1 89C51中断系统结构中断系统结构一、中断系统结构一、中断系统结构中断系统的结构如图中断系统的结构如图5-3所示。所示
9、。(P115)二、中断技术实现的功能二、中断技术实现的功能1、分时操作、分时操作2、实时处理、实时处理3、故障处理、故障处理1、分时操作、分时操作计算机的中断系统可以使计算机的中断系统可以使CPU与外设同时与外设同时工作。工作。CPU在启动外设后,便继续执行主程序;而外设被启动后,在启动外设后,便继续执行主程序;而外设被启动后,开始进行准备工作。当外设准备就绪时,就向开始进行准备工作。当外设准备就绪时,就向CPU发出中发出中断请求,断请求,CPU响应该中断请求并为其服务完毕后,返回原响应该中断请求并为其服务完毕后,返回原来的断点处继续运行主程序。外设在得到服务后,也继续来的断点处继续运行主程序
10、。外设在得到服务后,也继续进行自己的工作。进行自己的工作。因此,因此,CPU可以使多个外设同时工作,并分时为各外设提可以使多个外设同时工作,并分时为各外设提供服务,从而提高了供服务,从而提高了CPU的利用率和输入的利用率和输入/输出的速度。输出的速度。2、实时处理、实时处理当计算机用于实时控制时,需要当计算机用于实时控制时,需要CPU提供服务的请求是随机提供服务的请求是随机发生的。有了中断系统,发生的。有了中断系统,CPU就可以立即响应并加以处理。就可以立即响应并加以处理。3、故障处理、故障处理计算机在运行时往往会出现一些故障,如断电、存储器奇计算机在运行时往往会出现一些故障,如断电、存储器奇
11、偶校验出错、运算溢出等。偶校验出错、运算溢出等。有了中断系统,当出现上述情况时,有了中断系统,当出现上述情况时,CPU可及时转去执行可及时转去执行故障处理程序,自行处理故障而不必停机。故障处理程序,自行处理故障而不必停机。5.3.2 89C51中断源中断源一、一、89C51中断系统的五个中断源中断系统的五个中断源T0定时器定时器/计数器计数器0 0溢出中断请求。溢出中断请求。T1T1定时器定时器/计数器计数器1 1溢出中断请求。溢出中断请求。RXD/TXDRXD/TXD串行口中断请求。当串行口完成一帧数据的接收串行口中断请求。当串行口完成一帧数据的接收或发送时,便请求中断。或发送时,便请求中断
12、。INT0外部中断外部中断0 0请求,低电平有效。通过请求,低电平有效。通过P3.2引脚输入。引脚输入。INT1外部中断外部中断1 1请求,低电平有效。通过请求,低电平有效。通过P3.3引脚输入。引脚输入。二、通常情况的中断源(二、通常情况的中断源(P116)1、I/O外设(外设(键盘、打印机、键盘、打印机、A/D转换器等转换器等)2、硬件故障(、硬件故障(如电源断电如电源断电)3、实时时钟(、实时时钟(用在定时检测和控制的场合用在定时检测和控制的场合)4、为调试程序而设定的中断源(、为调试程序而设定的中断源(设置断点、设置断点、单步运行单步运行)5.3.3 中断控制中断控制一、中断请求标志(
13、一、中断请求标志(TCON、SCON)二、中断允许控制(二、中断允许控制(IE)三、中断优先级控制(三、中断优先级控制(IP)一、中断请求标志一、中断请求标志1、定时器控制寄存器、定时器控制寄存器TCON中的中断标志位中的中断标志位TCON为定时器为定时器/计数器计数器T0和和T1的控制器,同时也的控制器,同时也锁锁存存T0和和T1的溢出中断标志的溢出中断标志及及外部中断外部中断0和外部中断和外部中断1的中断标志的中断标志等。等。与中断有关的位如图与中断有关的位如图5-4所示。所示。TF1TF0IE1IT1IE0IT0 TCON(88H)8FH 8EH 8DH 8CH 8BH 8AH 89H
14、88H 图图5-4 TCON中的中断标志位中的中断标志位各控制位的含义各控制位的含义TF1:定时器:定时器/计数器计数器T1溢出中断请求标志位。溢出中断请求标志位。当启动当启动T1计数后,计数后,T1从初值开始加从初值开始加1计数,计数,计数器最高位计数器最高位 产生溢出时,由硬件使产生溢出时,由硬件使TF1置置1,并向,并向CPU发出中断请求发出中断请求。当当CPU响应中断时,硬件将自动对响应中断时,硬件将自动对TF1清清0。TF0:定时器:定时器/计数器计数器T0溢出中断请求标志位。溢出中断请求标志位。含义与含义与TF1类同。类同。IE1:外部中断:外部中断1的中断请求标志。的中断请求标志
15、。INT1(P3.3)。)。当检测到外部中断引脚当检测到外部中断引脚1上上存在有效的中断请求信号存在有效的中断请求信号 时时,由硬件使,由硬件使IE1置置1。当。当CPU响应中断请求时,由硬件使响应中断请求时,由硬件使 IE1清清0。IE0:外部中断:外部中断0的中断请求标志。的中断请求标志。INT0(P3.2)。)。其含义与其含义与IE1类同。类同。IT1:外部中断:外部中断1的中断触发方式控制位。的中断触发方式控制位。IT1=0时,外部中断时,外部中断1程控为电平触发方式。程控为电平触发方式。CPU在每一个机器周期在每一个机器周期S5P2期间采样外部中断请求引脚期间采样外部中断请求引脚的的
16、输入电平。若外部中断输入电平。若外部中断1请求为低电平,则使请求为低电平,则使IE1置置1;若为;若为高电平,则使高电平,则使IE1清清0。IT1=1时,外部中断时,外部中断1程控为边沿触发方式。程控为边沿触发方式。CPU在每一个机器周期在每一个机器周期S5P2期间采样外部中断请求引脚输期间采样外部中断请求引脚输入电平。如果在相继的两个机器周期采样过程中,一个机入电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断器周期采样到外部中断1请求引脚为高电平,接着的下一个请求引脚为高电平,接着的下一个机器周期采样到为低电平,则使机器周期采样到为低电平,则使IE1置置1。直到。直到CP
17、U响应该响应该中断时,才由硬件使中断时,才由硬件使IE1清清0。IT0:外部中断:外部中断0的中断触发方式控制位。的中断触发方式控制位。其含义与其含义与IT1类同。类同。2、串行口控制寄存器、串行口控制寄存器SCON中的中断标志位中的中断标志位SCON为串行口控制寄存器,其低为串行口控制寄存器,其低2位锁存串行位锁存串行口的口的接收中断和发送中断标志接收中断和发送中断标志RI和和TI。SCON中中TI和和RI的格式如图的格式如图5-5所示。所示。SCON(98H)TIRI9FH 9EH 9DH 9CH 9BH 9AH 99H 98H图图5-5 SCON中的中断标志位中的中断标志位SCON中控制
18、位的含义中控制位的含义TI:串行口发送中断请求标志。:串行口发送中断请求标志。CPU将一个数据写入发送缓冲器将一个数据写入发送缓冲器SBUF时,就启时,就启动发送。动发送。每发送完一帧串行数据后,硬件置位每发送完一帧串行数据后,硬件置位TI。但但CPU响应中断时,并不清除响应中断时,并不清除TI,必须在中断服必须在中断服务程序中由软件对务程序中由软件对TI清清0。RI:串行口接收中断请求标志。:串行口接收中断请求标志。在串行口允许接收时,在串行口允许接收时,每接收完一个串行帧,每接收完一个串行帧,硬硬件置位件置位RI。同样,同样,CPU响应中断时不会清除响应中断时不会清除RI,必须在中断服务程
19、序中由软件对必须在中断服务程序中由软件对RI清清0。二、中断允许控制二、中断允许控制1、中断允许寄存器、中断允许寄存器IE的格式。的格式。EAESET1EX1ET0EX0 IE(A8H)AFH AEH ADH ACH ABH AAH A9H A8H2、中断允许寄存器、中断允许寄存器IE中各位的含义。中各位的含义。EA中断允许总控制位。中断允许总控制位。EA=0,屏蔽所有的中断请求;,屏蔽所有的中断请求;EA=1,CPU开放中断。对各中断源的中断请求开放中断。对各中断源的中断请求是否允许是否允许,还要取决于各中断源的中断允许控制位的状态。还要取决于各中断源的中断允许控制位的状态。这就是所谓的这就
20、是所谓的两级控制两级控制。ES串行口中断允许位。串行口中断允许位。ES=0,禁止串行口禁止串行口中断;中断;ES=1,允许串行口允许串行口中断。中断。ET1定时器定时器/计数器计数器T1的溢出中断允许位的溢出中断允许位。ET1=0,禁止禁止T1中断;中断;ET1=1,允许允许T1中断。中断。EX1外部中断外部中断1的溢出中断允许位。的溢出中断允许位。EX1=0,禁止外部中断禁止外部中断1中断;中断;EX1=1,允许外部中断允许外部中断1中断。中断。ET0定时器定时器/计数器计数器T0的溢出中断允许位。的溢出中断允许位。ET0=0,禁止禁止T0中断;中断;ET0=1,允许允许T0中断。中断。EX
21、0外部中断外部中断0的溢出中断允许位。的溢出中断允许位。EX0=0,禁止外部中断禁止外部中断0中断;中断;EX0=1,允许外部中断允许外部中断0中断。中断。例例5-1假设允许片内定时器假设允许片内定时器/计数器中断,禁止其他中断。试计数器中断,禁止其他中断。试根据假设条件设置根据假设条件设置IE的相应值。的相应值。解:(解:(IE)=10001010B=8AH(a)用字节操作指令)用字节操作指令MOV IE,#8AH;或;或 MOV A8H,#8AH;(b)用位操作指令)用位操作指令SETB ET0;定时器;定时器/计数器计数器0允许中断允许中断SETB ET1;定时器;定时器/计数器计数器1
22、允许中断允许中断SETB EA;CPU开中断开中断三、中断优先级控制三、中断优先级控制1、89C51的中断优先级的中断优先级2、中断优先级寄存器、中断优先级寄存器IP3、中断优先级排列顺序、中断优先级排列顺序4、中断优先级控制实现的功能、中断优先级控制实现的功能5、例、例5-21、89C51的中断优先级的中断优先级89C51有有两个中断优先级两个中断优先级。每个中断请求源均每个中断请求源均可编程可编程为为高高优先级中断或优先级中断或低低优先级中断。优先级中断。中断系统中有中断系统中有两个不可寻址两个不可寻址的的“优先级生效优先级生效”触触发器,分别指出发器,分别指出CPU正在执行的高、低优先级
23、正在执行的高、低优先级的中断服务程序。的中断服务程序。当其为当其为1时则分别屏蔽所有的时则分别屏蔽所有的中断请求。中断请求。2、中断优先级寄存器、中断优先级寄存器IP(interruption priority)中断优先级寄存器中断优先级寄存器IP的格式的格式 IP(B8H)PSPT1PX1PT0PX0 BCH BBH BAH B9H B8HPS 串行口中断优先级控制位串行口中断优先级控制位PT1定时器定时器/计数器计数器T1中断优先级控制位中断优先级控制位PX1外部中断外部中断1中断优先级控制位中断优先级控制位PT0定时器定时器/计数器计数器T0中断优先级控制位中断优先级控制位PX0外部中断
24、外部中断0中断优先级控制位中断优先级控制位若某控制位为若某控制位为1,则相应的中断源规定为高级中断;反之,则相应的中断源规定为高级中断;反之,为为0,则相应的中断源规定为低级中断。,则相应的中断源规定为低级中断。3、中断优先级排列顺序、中断优先级排列顺序当同时接收到几个同一优先级的中断请求时,响应哪当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件查询顺序。个中断源则取决于内部硬件查询顺序。中断源中断源同级内的中断优先级同级内的中断优先级外部中断外部中断0中断中断 高级高级定时器定时器/计数器计数器T0溢出中断溢出中断外部中断外部中断1中断中断定时器定时器/计数器计数器T1
25、溢出中断溢出中断串行口中断串行口中断 低级低级4、中断优先级控制实现的功能、中断优先级控制实现的功能(1)按内部查询顺序排队)按内部查询顺序排队当当数个中断源数个中断源同时向同时向CPU发出中断请求时,发出中断请求时,CPU根据设计根据设计者事先确定的中断源顺序号的次序,依次响应各中断请求。者事先确定的中断源顺序号的次序,依次响应各中断请求。(2)实现中断嵌套)实现中断嵌套l当当CPU正在处理一个中断请求时,又出现了另一个优先正在处理一个中断请求时,又出现了另一个优先级比它高的中断请求,这时,级比它高的中断请求,这时,CPU就暂时中止执行对原就暂时中止执行对原来优先级较低的中断源的服务程序,来
26、优先级较低的中断源的服务程序,保护当前断点保护当前断点,转,转去响应优先级更高的中断请求,并为它服务。待服务结去响应优先级更高的中断请求,并为它服务。待服务结束,再继续执行原来较低级的中断服务程序。该过程称束,再继续执行原来较低级的中断服务程序。该过程称为中断嵌套。该中断系统称为多级中断系统。为中断嵌套。该中断系统称为多级中断系统。l二级中断嵌套的中断过程如二级中断嵌套的中断过程如图图5-9 所示。所示。图图5-9 二级中断嵌套二级中断嵌套CPU在执行主程序在执行主程序低级低级中断中断请求请求响应低级中断请求响应低级中断请求CPU执行低级执行低级中断服务程序中断服务程序高级高级中断中断请求请求
27、响应高级中断请求响应高级中断请求CPU执行高级执行高级中断服务程序中断服务程序返回低级中断程序返回低级中断程序返回主程序返回主程序5、例、例5-2设设89C51的片外中断为高优先级,片内中断为低优先级。的片外中断为高优先级,片内中断为低优先级。设置设置IP相应值。相应值。解:(解:(IP)=00000101B=05H(a)用字节传送指令用字节传送指令 MOV IP,#05H;或;或 MOV 0B8H,#05H;(b)用位操作指令用位操作指令 SETB PX0 SETB PX1 CLR PS CLR PT0 CLR PT15.4 中断响应及处理过程中断响应及处理过程5.4.1 中断处理过程的三个
28、阶段中断处理过程的三个阶段5.4.2 中断响应中断响应5.4.3 中断处理中断处理5.4.4 中断返回中断返回 5.4.1 中断处理过程的三个阶段中断处理过程的三个阶段中断处理过程可分为:中断处理过程可分为:中断响应中断响应中断处理中断处理 中断返回中断返回 保护现场保护现场为外设服务为外设服务恢复现场恢复现场主程序主程序NKN+mK+1返回返回中中断断处处理理中断响应中断响应5.4.2 中断响应中断响应一、中断响应条件一、中断响应条件有中断源发出中断请求。有中断源发出中断请求。中断总允许位中断总允许位EA=1,即,即CPU开中断。开中断。申请中断的中断源的中断允许位为申请中断的中断源的中断允
29、许位为1,即中断,即中断 没有被屏蔽。没有被屏蔽。无同级或更高级中断正在被服务。无同级或更高级中断正在被服务。当前的指令周期已经结束。当前的指令周期已经结束。若若现行指令为现行指令为RETI或是访问或是访问IE或或IP指令时,指令时,该指令以及紧接着的下一条指令已执行完。该指令以及紧接着的下一条指令已执行完。二、中断响应操作过程二、中断响应操作过程1、中断响应操作过程、中断响应操作过程 把当前把当前PC值压入堆栈,保护断点。值压入堆栈,保护断点。将相应的中断服务程序的将相应的中断服务程序的入口地址送入入口地址送入PC。对有些中断源,对有些中断源,CPU会自动清除中断标志。会自动清除中断标志。执
30、行中断服务程序。执行中断服务程序。执行返回指令执行返回指令RETI,中断服务程序结束,将堆,中断服务程序结束,将堆栈内容弹出到栈内容弹出到PC,返回到原来断点继续执行。,返回到原来断点继续执行。2、各中断源及其对应的矢量地址、各中断源及其对应的矢量地址ORG 0003HLJMP INTOPRAM三、中断响应时间三、中断响应时间CPU不是在任何情况下都对中断请求予以响应,而不不是在任何情况下都对中断请求予以响应,而不同的情况下对中断响应的时间是不同的。同的情况下对中断响应的时间是不同的。对于顺利的中断响应,其最短的响应时间为对于顺利的中断响应,其最短的响应时间为3个机器个机器周期周期。对于受阻的
31、中断响应,则响应时间会更长一些。对于受阻的中断响应,则响应时间会更长一些。若中断系统只有一个中断源,则响应时间为若中断系统只有一个中断源,则响应时间为38个机个机器周期之间。器周期之间。5.4.3 中断处理中断处理一、什么是中断处理一、什么是中断处理CPU响应中断后即响应中断后即转入中断服务程序的入口转入中断服务程序的入口,执行中断,执行中断服务程序。从中断服务程序的第一条指令开始到返回指服务程序。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或中断服务。令为止,这个过程称为中断处理或中断服务。二、中断处理包括的内容二、中断处理包括的内容不同的中断源服务的内容及要求各不相同
32、,其处理过程也就不同的中断源服务的内容及要求各不相同,其处理过程也就有所区别。一般情况,中断处理包括两部分内容:有所区别。一般情况,中断处理包括两部分内容:1、保护现场、保护现场:如在:如在中断服务程序中要用到中断服务程序中要用到PSW、工作寄存、工作寄存器和器和SFR等寄存器时等寄存器时,则在进入中断服务之前应将它们的内,则在进入中断服务之前应将它们的内容保护起来,在容保护起来,在中断结束、执行中断结束、执行RETI指令前指令前应恢复现场。应恢复现场。2、为中断源服务、为中断源服务:针对中断源的具体要求进行相应的处理。:针对中断源的具体要求进行相应的处理。三、编写中断服务程序时的注意问题三、
33、编写中断服务程序时的注意问题在中断矢量地址单元处放一条无条件转移指令在中断矢量地址单元处放一条无条件转移指令,使中,使中断服务程序可灵活地安排在断服务程序可灵活地安排在64KB ROM的任何空间。的任何空间。在中断服务程序中,应注意在中断服务程序中,应注意用软件保护现场用软件保护现场,以免中,以免中断返回后丢失原来寄存器、累加器中的信息。断返回后丢失原来寄存器、累加器中的信息。若要在执行当前中断程序时若要在执行当前中断程序时禁止更高优先级中断禁止更高优先级中断,可可以先用软件关闭以先用软件关闭CPU中断中断或或禁止某中断源中断禁止某中断源中断,在中,在中断返回前再开放中断。断返回前再开放中断。
34、5.4.4 中断返回中断返回在中断服务程序中,最后一条指令必须为中断返回在中断服务程序中,最后一条指令必须为中断返回指令指令RETI。CPU执行该指令时,一方面清除中断响应时所置位执行该指令时,一方面清除中断响应时所置位的的“优先级生效优先级生效”触发器,另一方面从当前栈顶弹出触发器,另一方面从当前栈顶弹出断点地址送入程序计数器断点地址送入程序计数器PC,从而返回住程序。,从而返回住程序。注意在中断服务程序中,注意在中断服务程序中,PUSH和和POP指令必须成对指令必须成对使用使用,否则,不能正确返回断点。,否则,不能正确返回断点。5.5 外部中断扩展方法外部中断扩展方法89C51单片机有两个
35、外部中断请求输入端(单片机有两个外部中断请求输入端(INT0和和INT1)。实际应用中,若外部中断源有两个以上,则)。实际应用中,若外部中断源有两个以上,则需要扩展外部中断源:需要扩展外部中断源:利用定时器扩展外部中断源利用定时器扩展外部中断源 中断加查询扩展外部中断源中断加查询扩展外部中断源5.5.1 利用定时器扩展外部中断源利用定时器扩展外部中断源89C51单片机有两个定时器,都具有单片机有两个定时器,都具有两个内部中断标志两个内部中断标志和和外部计数输入引脚外部计数输入引脚。当当定时器设置为计数方式定时器设置为计数方式时,计数初值设置为满量程时,计数初值设置为满量程FFH。一旦外部信号从
36、计数器引脚输入一个负跳变信号,。一旦外部信号从计数器引脚输入一个负跳变信号,计数器加计数器加1产生溢出中断,从而转去处理该外部中断源的产生溢出中断,从而转去处理该外部中断源的请求。请求。将将外部中断源信号外部中断源信号接至接至T0或或T1引脚;该定时器的溢出中引脚;该定时器的溢出中断标志及中断服务程序作为扩充外部中断源的标志和中断标志及中断服务程序作为扩充外部中断源的标志和中断服务程序。断服务程序。DV1:装置装置1的的中断服务程序中断服务程序 AJMP EXIT DV2:装置装置2的的中断服务程序中断服务程序 AJMP EXIT DV3:装置装置3的的中断服务程序中断服务程序 AJMP EX
37、IT DV4:装置装置4的的中断服务程序中断服务程序 AJMP EXIT ORG 0013H LJMP INTR1P;INT1中断服务程序入口中断服务程序入口 ORG 1000H INTR1P:PUSH PSW;INT1中断服务程序是一个中断查询程中断服务程序是一个中断查询程序服务程序序服务程序 PUSHA JBP1.0,DV1 JBP1.1,DV1 JBP1.2,DV1 JBP1.3,DV1 EXIT:POP A POP PSW RETI有关中断服务程序的片段有关中断服务程序的片段5.6 中断程序举例中断程序举例5.6.1 主程序主程序5.6.2 中断服务程序中断服务程序5.6.3 中断服务
38、程序举例中断服务程序举例5.6.1 主程序主程序1、主程序、主程序的起始地址的起始地址MCS-51系列单片机系列单片机复位复位后后,(PC)=0000H而而0003H002BH分别为分别为各各中断源的入口地址。中断源的入口地址。编程时应在编程时应在0000H处写一条处写一条跳转指令跳转指令(一般为长跳转指(一般为长跳转指令),令),主程序是以跳转的目主程序是以跳转的目标地址作为起始地址开始编标地址作为起始地址开始编写写,一般从,一般从0030H开始,如开始,如右图所示。右图所示。0000HLJMP00300030H主程序主程序2 2、主程序的初始化内容、主程序的初始化内容初始化:初始化:将用到
39、的内部部件或扩展芯片进行初始工作状将用到的内部部件或扩展芯片进行初始工作状态设定。态设定。单片机单片机复位复位后,特殊功能寄存器后,特殊功能寄存器IE、IP内容均为内容均为00H,所以应对所以应对IE、IP进行初始化编程,以开放中断,允许某进行初始化编程,以开放中断,允许某些中断源中断和设置中断优先级等些中断源中断和设置中断优先级等。5.6.2 中断服务程序中断服务程序当当CPU接收到中断请求信号并予以响应后,接收到中断请求信号并予以响应后,CPU把当前把当前的的PC内容压入堆栈进行保护,然后转入响应的中断服务内容压入堆栈进行保护,然后转入响应的中断服务程序入口处执行。程序入口处执行。1、中断
40、服务程序的起始地址、中断服务程序的起始地址中断系统对五个中断源分别规定了各自的入口地址,但中断系统对五个中断源分别规定了各自的入口地址,但这些入口地址相距很近(这些入口地址相距很近(8个字节)。个字节)。如中断服务程序的指令代码少于如中断服务程序的指令代码少于8个字节,则可从规定的个字节,则可从规定的中断服务程序入口地址开始,直接编写中断服务程序;中断服务程序入口地址开始,直接编写中断服务程序;如中断服务程序的指令代码大于如中断服务程序的指令代码大于8个字节,则应采用与主个字节,则应采用与主程序相同的方法,程序相同的方法,在相应的入口处写一条跳转指令,并在相应的入口处写一条跳转指令,并以跳转指
41、令的目标地址作为中断服务程序的起始地址进以跳转指令的目标地址作为中断服务程序的起始地址进行编程行编程。1、中断服务程序的起始地址、中断服务程序的起始地址以以INT0为例,为例,中断矢量地址中断矢量地址为为0003H,中,中断服务程序从断服务程序从0200H开始,开始,如右图所示。如右图所示。0003HLJMP02000200H中断服中断服务程序务程序2、中断服务程序编制中的注意事项、中断服务程序编制中的注意事项 视需要确定是否保护现场。视需要确定是否保护现场。及时清除那些不能被硬件自动清除的中断请求标志,以及时清除那些不能被硬件自动清除的中断请求标志,以免产生错误的中断。免产生错误的中断。中断
42、服务程序中的压栈与弹栈指令必须成对使用,以确中断服务程序中的压栈与弹栈指令必须成对使用,以确保中断服务程序的正确返回。保中断服务程序的正确返回。主程序和中断服务程序之间的参数传递与主程序和子程主程序和中断服务程序之间的参数传递与主程序和子程序的参数传递方式相同。序的参数传递方式相同。例例5-3 外部中断实验外部中断实验例例5-3:如图:如图5-14所示,将所示,将P1口的口的P1.4P1.7作为作为输入输入位,位,P1.0P1.3作为作为输出输出位。要求利用位。要求利用89C5189C51将开关所设的将开关所设的数据读入单片机内,并依次通过数据读入单片机内,并依次通过P1.0P1.0P1.3P
43、1.3输出,驱输出,驱动发光二极管,以检查动发光二极管,以检查P1.4P1.4P1.7P1.7输入的电平情况输入的电平情况(若输入为高电平则相应的(若输入为高电平则相应的LEDLED亮)。亮)。现要求采用现要求采用中断边沿触发中断边沿触发方式,每中断一次,完成一次方式,每中断一次,完成一次读读/写操作。写操作。5.6.3 中断服务程序举例中断服务程序举例P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0INT089C51 +5V+5V+5V+5V+5V12S1图图514 外外部部中中断断实实验验例例5-3解:如图所示,采用外部中断解:如图所示,采用外部中断0,中断申请从,中断申请
44、从INT0输入,并输入,并采用了去抖动电路。采用了去抖动电路。当当P1.0P1.3的任何一位输出为的任何一位输出为1时,相应的发光二极管时,相应的发光二极管就会发光。当开关就会发光。当开关S1来回拨动一次时,发出中断请求。来回拨动一次时,发出中断请求。中断服务程序的矢量地址为中断服务程序的矢量地址为0003H。源程序如下页。源程序如下页。例例5-3源程序如下:源程序如下:ORG 0000H SJMP MAIN ;上电,转向主程序;上电,转向主程序 ORG 0003H ;外部中断;外部中断0入口地址入口地址 SJMP INSER ;转向中断服务程序;转向中断服务程序 ORG 0030H ;主程序
45、;主程序MAIN:SETB EX0 ;允许外部中断;允许外部中断0中断中断 SETB IT0 ;选择边沿触发方式;选择边沿触发方式 SETB EA ;CPU开中断开中断HERE:SJMP HERE ;等待中断;等待中断例例5-3 ORG 0200H ;中断服务程序中断服务程序INSER:MOV A,#0F0H MOV P1,A ;设设P1.4P1.7为输入为输入 MOV A,P1 ;取开关状态取开关状态 SWAP A ;A的高、低四位互换的高、低四位互换 MOV P1,A ;输出驱动输出驱动LED发光发光 RETI ;中断返回中断返回 END5.7 思考题与习题思考题与习题1、什么是中断和中断
46、系统?其主要功能是什么?、什么是中断和中断系统?其主要功能是什么?2、试编写一段对中断系统初始化的程序,使之允许、试编写一段对中断系统初始化的程序,使之允许INT0,INT1,TO,串行口中断,且使,串行口中断,且使T0中断为高优先级中断。中断为高优先级中断。3、在单片机中,中断能实现哪些功能?、在单片机中,中断能实现哪些功能?4、89C51共有哪些中断源?对其中端请求如何进行控制?共有哪些中断源?对其中端请求如何进行控制?5、什么是中断优先级?中断优先处理的原则是什么?、什么是中断优先级?中断优先处理的原则是什么?6、说明外部中断请求的查询和响应过程。、说明外部中断请求的查询和响应过程。7、
47、89C51在什么条件下可响应中断?在什么条件下可响应中断?8、简述、简述89C51单片机的中断响应过程。单片机的中断响应过程。8、在、在89C51内存中,应如何安排程序区?内存中,应如何安排程序区?9、试述中断的作用及中断的全过程。、试述中断的作用及中断的全过程。10、当正在执行某一个中断源的中断服务程序时,如果有新的、当正在执行某一个中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求?中断请求出现,试问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?在什么情况下不能响应新的中断请求?11、89C51单片机有五个中断源,但只能设置两个中断优先级
48、,单片机有五个中断源,但只能设置两个中断优先级,因此,在中断优先级安排上受到一定的限制。试问以下几因此,在中断优先级安排上受到一定的限制。试问以下几种中断优先顺序的安排(级别由高到低)是否可能:若可种中断优先顺序的安排(级别由高到低)是否可能:若可能,则应如何设置中断源的中断级别:否则,请简述不可能,则应如何设置中断源的中断级别:否则,请简述不可能的理由。能的理由。定时器定时器0,定时器,定时器1,外中断,外中断0,外中断,外中断1,串行口中断。,串行口中断。串行口中断,外中断串行口中断,外中断0,定时器,定时器0,外中断,外中断1,定时器,定时器1。外中断外中断0,定时器,定时器1,外中断,
49、外中断1,定时器,定时器0,串行口中断。,串行口中断。外中断外中断0,外中断,外中断1,串行口中断,串行口中断,定时器定时器0,定时器,定时器1。串行口中断,定时器串行口中断,定时器0,外中断,外中断0,外中断,外中断1,定时器,定时器1。外中断外中断0,外中断,外中断1,定时器,定时器0,串行口中断,定时器,串行口中断,定时器1。外中断外中断0,定时器,定时器1,定时器,定时器0,外中断,外中断1,串行口中断。,串行口中断。12、简述、简述89C51单片机的中断响应过程。单片机的中断响应过程。13、89C51单片机外部中断源有几种触发中断请求的方法?如何单片机外部中断源有几种触发中断请求的方法?如何实现中断请求?实现中断请求?14、以中断方法设计单片机秒、分脉冲发生器。假定、以中断方法设计单片机秒、分脉冲发生器。假定P1.0每秒产每秒产生一个机器周期的正脉冲,生一个机器周期的正脉冲,P1.1P1.1每分钟产生一个机器周期的每分钟产生一个机器周期的正脉冲。正脉冲。
限制150内