1、单片机原理及应用单片机原理及应用(C语言版)语言版)第第5章章 MCS-51单片机中断系统单片机中断系统主主 编:编:周国运周国运本章本章制作:制作:仝选悦仝选悦中国水利水电出版社中国水利水电出版社第第5章章 MCS-51单片机中断系统单片机中断系统目目 录录5.1 中断概述中断概述 5.2 中断系统结构及控制中断系统结构及控制5.3 中断响应过程及处理过程中断响应过程及处理过程5.4 中断应用举例中断应用举例 本章主要讨论本章主要讨论MCS-51单片机中断系统。单片机中断系统。内容主要有:内容主要有:MCS-51单片机中断系统结单片机中断系统结构、中断控制、中断优先级、中断处理过构、中断控制
2、、中断优先级、中断处理过程,以及中断的应用。程,以及中断的应用。通过本章的学习,应该理解中断系统通过本章的学习,应该理解中断系统结构、中断响应的条件和中断处理过程;结构、中断响应的条件和中断处理过程;掌握中断控制、中断优先级,灵活的应掌握中断控制、中断优先级,灵活的应用中断解决实际问题。用中断解决实际问题。第第5章章 MCS-51单片机的中断系统单片机的中断系统5.1 中断概述中断概述主要内容主要内容5.1.1 微机的输入微机的输入/输出几种控制方式输出几种控制方式5.1.2 中断的相关概念中断的相关概念 5.1.1 微机的输入微机的输入/输出几种控制方式输出几种控制方式单片机系统中,单片机系
3、统中,CPU和外部设备之间不和外部设备之间不断进行信息的传输。通常断进行信息的传输。通常CPU和外设之间和外设之间的信息传送方式有以下几种:的信息传送方式有以下几种:程序控制方式程序控制方式中断方式中断方式直接存储器存取(直接存储器存取(DMA)方式)方式5.1.1 微机的输入微机的输入/输出方式输出方式 1、程序控制方式程序控制方式可以分为以下两种方式。可以分为以下两种方式。(1)无条件传送方式)无条件传送方式 外设始终处于就绪状态,外设始终处于就绪状态,CPU不必查询不必查询外设的状态,直接进行信息传输外设的状态,直接进行信息传输,称为无条件,称为无条件传送方式。传送方式。此种信息传送方式
4、只适用于简单的外设。此种信息传送方式只适用于简单的外设。如开关和数码段显示器等。如开关和数码段显示器等。5.1.1 微机的输入微机的输入/输出方式输出方式 (2)条件传送方式)条件传送方式 CPU通过执行程序不断读取并测试外部通过执行程序不断读取并测试外部设备状态,设备状态,如果输入设备处于准备好状态或如果输入设备处于准备好状态或输出设备为空闲状态时,则输出设备为空闲状态时,则CPU执行传送信执行传送信息操作。息操作。由于条件传送方式需要由于条件传送方式需要CPU不断地查询不断地查询外部设备的状态,然后才进行信息传送,所外部设备的状态,然后才进行信息传送,所以以也称为也称为“查询式传送查询式传
5、送”。5.1.1 微机的输入微机的输入/输出方式输出方式2、中断方式中断方式 外部设备与外部设备与CPU之间以中断信号作为之间以中断信号作为数据交换的控制信号数据交换的控制信号。当外部设备需要与当外部设备需要与CPU进行数据交换进行数据交换时,由接口部件向时,由接口部件向CPU发出一个请求信号,发出一个请求信号,CPU响应这一中断请求后,在中断服务程响应这一中断请求后,在中断服务程序中完成一个字节或多个字节的信息交换。序中完成一个字节或多个字节的信息交换。中断方式具有并行工作、实时传输、中断方式具有并行工作、实时传输、充分利用充分利用CPU效率等特点。效率等特点。5.1.1 微机的输入微机的输
6、入/输出方式输出方式 中断传送仍由中断传送仍由CPU通过程序来传送,每通过程序来传送,每次都要执行指令进行断点、现场的保护和恢次都要执行指令进行断点、现场的保护和恢复。对于高速复。对于高速I/O,就显得速度太慢了。,就显得速度太慢了。3、DMA方式方式(直接存储器存取直接存储器存取)DMA控制方式主要用于存储器和外设控制方式主要用于存储器和外设之间直接传送、块传输。之间直接传送、块传输。DMA请求总线:请求总线:当某一外部设备需要当某一外部设备需要输入输入/输出一批数据时,向输出一批数据时,向DMA控制器发出控制器发出请求,请求,DMA控制器接收到这一请求后,向控制器接收到这一请求后,向CPU
7、发出总线请求信号。发出总线请求信号。5.1.1 微机的输入微机的输入/输出方式输出方式 DMA控制数据传输:控制数据传输:CPU响应响应DMA的的请求,把总线使用权交给请求,把总线使用权交给DMA控制器,控制器,DMA将外设数据读入、并直接写入存储器,或将将外设数据读入、并直接写入存储器,或将数据从存储器读出并直接送给外设。数据从存储器读出并直接送给外设。传送过传送过程不需要程不需要CPU参与。参与。DMA释放总线:释放总线:当一批数据传送后,当一批数据传送后,DMA控制器再向控制器再向CPU发出发出“结束总线请求结束总线请求”,CPU响应请求,收回总线使用权。响应请求,收回总线使用权。DMA
8、方式速度高、效率高,可以与方式速度高、效率高,可以与CPU并行工作。并行工作。1、中断的概念、中断的概念CPU在正常运行的时候,在正常运行的时候,外部或者内部发生了请求外部或者内部发生了请求CPU迅速去处理的事件,迅速去处理的事件,CPU暂时中断当前的程序,暂时中断当前的程序,去处理所发生的事件,处理去处理所发生的事件,处理完事件后,再返回到原来被完事件后,再返回到原来被中断的程序继续运行。中断的程序继续运行。此过此过程称为中断程称为中断。5.1.2 中断的相关概念中断的相关概念 2、中断源、中断源 引起引起CPU中断的设备和事件就是中断源。中断的设备和事件就是中断源。3、中断请求、中断请求
9、中断源向中断源向CPU发出的请求处理信号,即发出的请求处理信号,即中断请求或中断申请。中断请求或中断申请。4、中断响应、中断响应 CPU暂时中止正在处理的事情,转去处暂时中止正在处理的事情,转去处理突发事件的过程,称为理突发事件的过程,称为中断响应中断响应。5.1.2 中断的相关概念中断的相关概念 5、其他概念、其他概念中断系统:中断系统:实现中断功能的部件称为,实现中断功能的部件称为,又称中断机构。又称中断机构。中断服务程序:中断服务程序:CPU响应中断后,处理响应中断后,处理中断事件的程序。中断事件的程序。断点:断点:CPU响应中断请求,转去响应中断请求,转去执行中执行中断服务程序时的断服
10、务程序时的PC值,即为断点地址值,即为断点地址。中断返回:中断返回:CPU执行完中断服务程序后执行完中断服务程序后回到断点的过程。回到断点的过程。5.1.2 中断的相关概念中断的相关概念 6、中断的功能、中断的功能 中断是计算机的一项重要技术,计算机中断是计算机的一项重要技术,计算机引入中断后,大大提高了它的工作效率和引入中断后,大大提高了它的工作效率和处理问题的灵活性,主要功能有以下几个处理问题的灵活性,主要功能有以下几个方面。方面。使使CPU与外设同步工作与外设同步工作实现实时处理实现实时处理故障及时处理故障及时处理5.1.2 中断的相关概念中断的相关概念 5.2 中断系统的结构及控制中断
11、系统的结构及控制主要内容主要内容5.2.1 MCS-51的中断结构的中断结构5.2.2 MCS-51的中断源的中断源5.2.1 MCS-51单片机的中断结构单片机的中断结构 中断系统构成:中断系统构成:增强单片机主要由增强单片机主要由5个特个特殊功能寄存器殊功能寄存器、相关、相关硬件电路等组成硬件电路等组成。有。有6个个中断源中断源,两个中断优先级。,两个中断优先级。特殊功能寄存器主要用于:特殊功能寄存器主要用于:控制中断的开控制中断的开放和关闭、保存中断信息、设置中断的优先放和关闭、保存中断信息、设置中断的优先级别。级别。硬件查询电路主要用于:硬件查询电路主要用于:判定判定6个中断源个中断源
12、的优先级别。的优先级别。MCS-51增强型单片机的中断结构如图增强型单片机的中断结构如图5-2所示。所示。图图5-2 增强型单片机的中断系统结构增强型单片机的中断系统结构5.2.2 MCS-51的中断源的中断源 MCS-51中断系统主要是对中断系统主要是对6个中断源个中断源进行管理,依次为:进行管理,依次为:外部中断外部中断0(P3.2)外部中断外部中断1(P3.3)定时器定时器/计数器计数器0溢出中断溢出中断定时器定时器/计数器计数器1溢出中断溢出中断定时器定时器/计数器计数器2溢出中断溢出中断串行口中断串行口中断 CPU主要是通过标志寄存器、控制寄主要是通过标志寄存器、控制寄存器、优先级寄
13、存器对中断源进行管理。存器、优先级寄存器对中断源进行管理。5.2.2 MCS-51单片机的中断源单片机的中断源(1)与中断标志相关的与中断标志相关的SFR主要有:定时器主要有:定时器/计数器计数器T0、T1控制控制寄存器寄存器TCON串行口控制寄存器串行口控制寄存器SCON定时器定时器/计数器计数器2控制寄存器控制寄存器T2CON(第(第6章介绍)章介绍)(2)中断控制寄存器:)中断控制寄存器:TCON、IE(3)中断优先级寄存器:)中断优先级寄存器:IP5.2.2 MCS-51单片机的中断源单片机的中断源1、串行口控制寄存器、串行口控制寄存器SCON 字节地址字节地址98H。可以位寻址,可以
14、位寻址,格式如下:格式如下:TI(SCON1):串行口发送中断标志。:串行口发送中断标志。串行口发送完一帧,由硬件置位。响应中串行口发送完一帧,由硬件置位。响应中断后,必须用软件清断后,必须用软件清 0。RI(SCON0):串行口接收中断标志。串行口接收中断标志。SCON(98H)D7D6D5D4D3D2D1D0TIRI图图5-4 串行口控制寄存器串行口控制寄存器 5.2.2 MCS-51单片机的中断源单片机的中断源 串行口接收完一帧,由硬件置位。响应中串行口接收完一帧,由硬件置位。响应中断后,必须用软件清断后,必须用软件清0。例如:例如:CLR TI;5.2.2 MCS-51单片机的中断源单
15、片机的中断源2、T0、T1 的控制寄存器的控制寄存器TCON TCON格式如下:格式如下:TCON(88H)D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1IT1IE0IT0图图5-3 定时器的控制寄存器定时器的控制寄存器 TCON可位寻址。可位寻址。复位后复位后TCON=00H。TF1(TCON.7):T1溢出标志位溢出标志位当当T1计满溢出时,由内部硬件置位;计满溢出时,由内部硬件置位;中断响应后自动清中断响应后自动清 0。5.2.2 MCS-51单片机的中断源单片机的中断源TF0:T0溢出标志位溢出标志位 功能同功能同TF1。IT1:外中断:外中断1触发方式设置位触
16、发方式设置位IT1=0,外中断,外中断1为低电平触发为低电平触发 CPU在每一个机器周期的在每一个机器周期的S5P2期间对期间对P3.3引脚采样,引脚采样,若若P3.3为低电平,则使为低电平,则使IE1置置1,否则否则IE1清清0。5.2.2 MCS-51单片机的中断源单片机的中断源 IT1=1,外中断,外中断1为下降沿触发为下降沿触发 采样:采样:CPU在每一个机器周期的在每一个机器周期的S5P2期间期间对对P3.3引脚采样,若上一个机器周期检测为引脚采样,若上一个机器周期检测为高电平,紧挨着的下一个机器周期为低电平,高电平,紧挨着的下一个机器周期为低电平,则使则使IE1置置1。IT0:外中
17、断:外中断0触发方式控制位触发方式控制位。功能同功能同IT1。5.2.2 MCS-51单片机的中断源单片机的中断源IE1:外中断:外中断1中断请求标志位中断请求标志位外部中断外部中断1引脚有请求信号置引脚有请求信号置1;IE1的清的清0方式问题:与外中断的触发方式方式问题:与外中断的触发方式有关有关(1)低电平触发,则低电平触发,则P3.3引脚为高电平引脚为高电平自动对自动对IE1清清0;(2)下降沿触发,则下降沿触发,则CPU响应中断由硬响应中断由硬件自动对件自动对IE1清清0。IE0:外部中断:外部中断0中断请求标志位中断请求标志位功能同功能同IE1。5.2.2 MCS-51单片机的中断源
18、单片机的中断源3、中断允许寄存器、中断允许寄存器IE可以位寻址,其格式如图可以位寻址,其格式如图5-5所示:所示:IE(A8H)D7D6D5D4D3D2D1D0EAET2ESET1 EX1 ET0 EX0图图5-5 中断允许寄存器中断允许寄存器 5.2.2 MCS-51单片机的中断源单片机的中断源EA(IE.7):中断允许总控位中断允许总控位。EA=0,屏蔽所有的中断请求;,屏蔽所有的中断请求;EA=1,开放中断总控制位。开放中断总控制位。ET2(IE.5):定时器定时器/计数器计数器2的中断允许位的中断允许位ET2=0,禁止,禁止T2中断;中断;ET2=1,允许,允许T2中断。中断。ES(I
19、E.4):串行口中断允许位串行口中断允许位。5.2.2 MCS-51单片机的中断源单片机的中断源 ES=0,禁止串行口中断;,禁止串行口中断;ES=1,允许串行口中断。,允许串行口中断。ET1(IE.3):定时器定时器/计数器计数器1中断允许中断允许 ET1=0,禁止禁止T1中断;中断;ET1=1,允许,允许T1中断。中断。EX1(IE.2):外部中断外部中断1中断允许位中断允许位EX1=0,禁止外部中断禁止外部中断1中断;中断;EX1=1,允许外部中断允许外部中断1中断。中断。5.2.2 MCS-51单片机的中断源单片机的中断源ET0(IE.1):定时器定时器/计数器计数器0中断允许位中断允
20、许位ET0=0,禁止禁止T0中断;中断;ET0=1,允许,允许T0中断。中断。EX0(IE.0):外部中断外部中断0的中断允许位的中断允许位EX0=0,禁止外部中断,禁止外部中断0中断;中断;EX0=1,允许外部中断,允许外部中断0中断。中断。例例5-1 假设允许假设允许INT0、INT1、T0、T1中断,中断,试设置试设置IE的值。的值。解:解:(1)用)用C语言字节操作:语言字节操作:IE=0 x8f;5.2.2 MCS-51单片机的中断源单片机的中断源(2)用)用C语言位操作指令语言位操作指令EX0=1;/允许外部中断允许外部中断0中断中断ET0=1;/允许定时允许定时/计数器计数器0中
21、断中断EX1=1;/允许外部中断允许外部中断1中断中断ET1=1;/允许定时允许定时/计数器计数器1中断中断EA=1/开总中断控制开总中断控制 汇编语言汇编语言(1)用字节操作指令)用字节操作指令:MOV IE,#8FH(2)用位操作指令)用位操作指令:5.2.2 MCS-51单片机的中断源单片机的中断源SETB EX0;允许外部中断;允许外部中断0中断中断SETB ET0;允许定时;允许定时/计数器计数器0中断中断SETB EX1;允许外部中断;允许外部中断1中断中断SETB ET1;允许定时;允许定时/计数器计数器1中断中断SETB EA;开总中断控制位;开总中断控制位4、中断优先级控制寄
22、存器、中断优先级控制寄存器IP MCS-51单片机有单片机有6个中断源个中断源,每个中断,每个中断源有源有两级优先级控制:两级优先级控制:高优先级高优先级和和低优先低优先级,级,以便以便CPU对所有的中断实现两级中断对所有的中断实现两级中断嵌套。嵌套。对对 IP设置可让中断源处于不同的优先级。设置可让中断源处于不同的优先级。5.2.2 MCS-51单片机的中断源单片机的中断源IP复位后为复位后为00H。其格式如下图所示。其格式如下图所示。IP(B8H)D7D6D5D4D3D2D1D0PT2PSPT1 PX1 PT0 PX0图图5-6 中断优先级控制寄存器中断优先级控制寄存器 PT2(IP.5)
23、:T2中断优先级控制位中断优先级控制位PT2=0,设置为低优先级;,设置为低优先级;PT2=1,设置为高优先级。,设置为高优先级。5.2.2 MCS-51单片机的中断源单片机的中断源PS(IP.4):串行口中断优先级控制位:串行口中断优先级控制位PS=0,设置为低优先级;,设置为低优先级;PS=1,设置为高优先级。,设置为高优先级。PT1(IP.3):T1的中断优先级控制位的中断优先级控制位功能同功能同PT2。PX1(IP.2):外中断:外中断1中断优先级控制位中断优先级控制位PX1=0,设置为低优先级;,设置为低优先级;PX1=1,设置为高优先级。,设置为高优先级。5.2.2 MCS-51单
24、片机的中断源单片机的中断源PT0(IP.1):T0中断优先级控制位中断优先级控制位功能同功能同PT1。PX0(IP.0):外中断:外中断0中断优先级控制位中断优先级控制位功能同功能同PX1。89C52单片机的中断优先级采用了自然单片机的中断优先级采用了自然优先级和人工设置高、低优先级的策略。优先级和人工设置高、低优先级的策略。中中断处于同一级别时,就由自然优先级确定。断处于同一级别时,就由自然优先级确定。开机时,每个中断都处于低优先级,中断优开机时,每个中断都处于低优先级,中断优先级可以通过程序来设定,由中断优先级寄先级可以通过程序来设定,由中断优先级寄存器存器IP来统一管理。来统一管理。如下
25、图所示:如下图所示:5.2.2 MCS-51单片机的中断源单片机的中断源系统优先级规则图:系统优先级规则图:表表 5-1 中断优先级的排列顺序中断优先级的排列顺序 中断源中断源自然优先级顺序自然优先级顺序外部中断外部中断0定时器定时器/计数器计数器0外部中断外部中断1定时器定时器/计数器计数器1串行口中断串行口中断定时器定时器/计数器计数器2最最 高高最低最低5.2.2 MCS-51单片机的中断源单片机的中断源中断优先级规则:中断优先级规则:(1)对同时发生多个中断申请)对同时发生多个中断申请 不同优先级的中断同时申请:不同优先级的中断同时申请:先高后低先高后低 相同优先级的中断同时申请:相同
26、优先级的中断同时申请:按序执行按序执行(2)不同时发生多个中断申请)不同时发生多个中断申请 正处理低优先级中断又接到高级别中断正处理低优先级中断又接到高级别中断:高打断低高打断低 正处理高优先级中断又接到低级别中断:正处理高优先级中断又接到低级别中断:高不理低高不理低 5.2.2 MCS-51单片机的中断源单片机的中断源 在上述规则中,当在上述规则中,当CPU正在处理一个中正在处理一个中断请求时,又出现了另一个优先级比它高的断请求时,又出现了另一个优先级比它高的中断请求,就暂时中止执行优先级较低的中中断请求,就暂时中止执行优先级较低的中断源的服务程序,保护当前断点,转去处理断源的服务程序,保护
27、当前断点,转去处理更高的中断请求,服务完毕,回到原来被中更高的中断请求,服务完毕,回到原来被中止的中断程序继续执行。此过程为中断嵌套。止的中断程序继续执行。此过程为中断嵌套。两级中断嵌套的处理过程如图两级中断嵌套的处理过程如图5-7所示。所示。5.2.2 MCS-51单片机的中断源单片机的中断源思考:当系统正在处理定时器思考:当系统正在处理定时器0中断的过程中断的过程中,定时器中,定时器1和外部中断和外部中断0有中断请求,描述有中断请求,描述CPU的中断处理过程?的中断处理过程?5.2.2 MCS-51单片机的中断源单片机的中断源例例5-2 设定时器和串行口中断为高优先级,设定时器和串行口中断
28、为高优先级,两个外部中断为低优先级,试设置两个外部中断为低优先级,试设置IP的值。的值。解:解:C语言程序语言程序IP=0 x3a;汇编语言程序汇编语言程序:(1)使用字节操作指令:)使用字节操作指令:MOV IP,#3AH(2)使用位操作指令:)使用位操作指令:CLRPX0;设置外部中断;设置外部中断0为低级中断为低级中断5.2.2 MCS-51单片机的中断源单片机的中断源CLRPX1;置外部中断;置外部中断1为低级中断为低级中断SETBPT0;置定时器;置定时器/计数器计数器0为高级中断为高级中断SETBPT1;置定时器;置定时器/计数器计数器0为高级中断为高级中断SETBPS;置串行口中
29、断为高优先级;置串行口中断为高优先级SETBPT2;置定时器;置定时器/计数器计数器2为高级中断为高级中断 由于复位后由于复位后IP=00H,外部中断在此可以,外部中断在此可以不设置。不设置。5.3 中断响应及处理过程中断响应及处理过程主要内容主要内容5.3.1 中断响应的过程中断响应的过程5.3.2 中断的处理和返回过程中断的处理和返回过程5.3.1 中断响应的过程中断响应的过程一、中断响应条件一、中断响应条件(1)中断源有中断请求;)中断源有中断请求;(2)中断总允许位)中断总允许位EA=1;(3)发出中断请求的中断源的中断允许)发出中断请求的中断源的中断允许控制位为控制位为1。在满足以上
30、条件的基础上,若有下列任何在满足以上条件的基础上,若有下列任何一种情况存在,硬件生成的长调用指令一种情况存在,硬件生成的长调用指令“LCALL”将被封锁。将被封锁。5.3.1 中断响应的过程中断响应的过程(1)CPU正在执行一个同级或高优先级的正在执行一个同级或高优先级的中断服务程序;中断服务程序;(2)正在执行的指令尚未执行完;)正在执行的指令尚未执行完;(3)正在执行中断返回指令)正在执行中断返回指令RETI或者对或者对寄存器寄存器IE、IP进行读进行读/写的指令写的指令。CPU在执行完上述指令之后,要再执行在执行完上述指令之后,要再执行一条指令,才能响应中断请求。一条指令,才能响应中断请
31、求。5.3.1 中断响应的过程中断响应的过程二、中断响应过程二、中断响应过程 从中断请求发生直到被响应,准备去执从中断请求发生直到被响应,准备去执行中断服务程序,此过程即中断响应过程。行中断服务程序,此过程即中断响应过程。中断响应过程一般包括如下几个阶段中断响应过程一般包括如下几个阶段:1、中断采样并置位、中断采样并置位 中断采样过程:中断采样过程:CPU在每个机器周期在每个机器周期S5P2期间期间顺序对中断源采样、置中断标志。顺序对中断源采样、置中断标志。2、查询标志、查询标志 在中断采样后的下一个周期的在中断采样后的下一个周期的S6按优先按优先级顺序查询中断标志。级顺序查询中断标志。5.3
32、.1 中断响应的过程中断响应的过程 3、响应中断、响应中断 在满足中断响应条件情况下,若中断标志在满足中断响应条件情况下,若中断标志为为1,在接下来周期在接下来周期S1开始开始按优先级顺序进行中按优先级顺序进行中断处理。断处理。中断响应过程的操作步骤:中断响应过程的操作步骤:硬件自动生成长调用指令硬件自动生成长调用指令LCALL addr16,addr16为为各中断源的各中断源的中断程序入口地址中断程序入口地址。PC的内容(即断点地址)压入堆栈。的内容(即断点地址)压入堆栈。先低先低位地址,后高位地址,并修改堆栈指针位地址,后高位地址,并修改堆栈指针SP。将中断源的中断入口地址装入程序计数器将
33、中断源的中断入口地址装入程序计数器PC,执行中断服务程序。执行中断服务程序。5.3.1 中断响应过程中断响应过程三、中断响应的时间三、中断响应的时间 一般来说,一般来说,中断的响应时间最短为中断的响应时间最短为3个个机器周期,最长为机器周期,最长为8个机器周期。个机器周期。一般中断请求标志位查询占一般中断请求标志位查询占1个机器周个机器周期期。而机器周期又恰好是指令的最后一个机。而机器周期又恰好是指令的最后一个机器周期。执行此指令后,器周期。执行此指令后,CPU将响应中断,将响应中断,产生硬件长调用指令。产生硬件长调用指令。长调用长调用LCALL指令需要指令需要2个机器周期个机器周期。这样,中
34、断响应时间为这样,中断响应时间为3个机器周期。个机器周期。5.3.1 中断响应过程中断响应过程响应时间最长的情况(响应时间最长的情况(8周期):周期):CPU正在执行的是正在执行的是RETI指令、或访问指令、或访问IP、IE指令;指令;其后恰好是其后恰好是4个机器周期的指令个机器周期的指令MUL、或或DIV)。加上执行长调用指令加上执行长调用指令LCALL所需所需2个个机器周期,则需要机器周期,则需要8个机器周期。个机器周期。如果中断请求被前面所列三个条件之如果中断请求被前面所列三个条件之一所阻一所阻 止,则所需的响应时间就更长。止,则所需的响应时间就更长。对于实时性要求高的系统,应该考虑中对
35、于实时性要求高的系统,应该考虑中断响应的时间。断响应的时间。5.3.2 中断处理和返回过程中断处理和返回过程一、中断处理过一、中断处理过程程 当当CPU响应中断后,响应中断后,做中断处理。首先获做中断处理。首先获得中断服务程序的入得中断服务程序的入口地址。口地址。其次:执行中断服其次:执行中断服务程序务程序。中断源中断源 中断入口中断入口外部中断外部中断0 0003H 定时器定时器/计数器计数器0 000BH外部中断外部中断1 0013H 定时器定时器/计数器计数器1 001BH 串行口串行口0023H定时器定时器/计数器计数器2 002BH5.3.2 中断处理和返回过程中断处理和返回过程 中
36、断服务程序中断服务程序一般包括三部分内容;一般包括三部分内容;保护现场保护现场中断处理程序中断处理程序恢复现场恢复现场现场:现场:是指中断发生时单片微机中存储是指中断发生时单片微机中存储单元、寄存器、特殊功能寄存器中的数据或单元、寄存器、特殊功能寄存器中的数据或标志位等。标志位等。例如例如A、B、Rn、PSW、DPTR等等 5.3.2 中断的处理和返回过程中断的处理和返回过程保护的方法可以有以下几种:保护的方法可以有以下几种:进栈进栈(使用(使用PUSH、POP)切换工作寄存器切换工作寄存器暂存内部存储器单元暂存内部存储器单元多使用堆栈方法,多使用堆栈方法,PUSH、POP成对使成对使用。用。
37、5.3.2 中断处理和返回过程中断处理和返回过程二、中断返回二、中断返回使用使用RETI指令指令 RETI指令包含两个功能:指令包含两个功能:首先将相应的首先将相应的优先级状态触发器清优先级状态触发器清0,以开放同级别中断源的中断请求;以开放同级别中断源的中断请求;其次,从堆栈区把其次,从堆栈区把断点地址弹出给断点地址弹出给程序程序计数器计数器PC。注意:注意:不能用不能用RET指令代替指令代替RETI指令。指令。5.4 中断应用举例中断应用举例主要内容主要内容1、中断程序的组织结构、中断程序的组织结构2、中断的初始化过程、中断的初始化过程3、中断服务程序的设计、中断服务程序的设计4、中断程序
38、举例、中断程序举例5.4 中断应用举例中断应用举例一、中断程序安排一、中断程序安排1、主程序主程序 MCS-51单片机复位后,(单片机复位后,(PC)=0000H,主程序只分配主程序只分配0000H-0002H共共3个单元。经常个单元。经常在在0000H单元设置一条单元设置一条LJMP指令,转向主程指令,转向主程序的入口处序的入口处。而真正的主程序一般安排在中。而真正的主程序一般安排在中断区域之后。断区域之后。2、各中断服务程序各中断服务程序 每个中断服务程序在固定的位置由系统分每个中断服务程序在固定的位置由系统分配相邻的配相邻的8个单元个单元用于存储程序。用于存储程序。5.4 中断应用举例中
39、断应用举例程序组织的一般结构:程序组织的一般结构:ORG0000HLJMPMAIN ORG0003HLJMPINT_0ORG 0030HMAIN:.;主程序区主程序区.;进行初始化进行初始化SJMP$;等待中断等待中断INT_0:.;外部中断外部中断0服务子程序服务子程序.RETI5.4 中断应用举例中断应用举例二、中断初始化步骤二、中断初始化步骤 89C52单片机中,共有单片机中,共有6个中断源,个中断源,中断的中断的初始化主要是对由初始化主要是对由5个特殊功能寄存器个特殊功能寄存器TCON、T2CON、SCON、IE和和IP的设置。的设置。中断初始化部分一般放在主程序中。中断初始化部分一般
40、放在主程序中。5.4 中断应用举例中断应用举例三、中断服务程序流程设计三、中断服务程序流程设计 MCS-51结束到中断请求后,在条件满足结束到中断请求后,在条件满足的情况下,响应中断并转到对应的中断服务的情况下,响应中断并转到对应的中断服务程序入口处执行程序入口处执行。中断程序主要由如下所中断程序主要由如下所示几部分组成:示几部分组成:1、保护现场、保护现场 中断响应后,系统已自动将断点进行保中断响应后,系统已自动将断点进行保护。护。保护现场,主要针对中断程序中的寄存保护现场,主要针对中断程序中的寄存器和存储单元。其位置在中断服务程序前段。器和存储单元。其位置在中断服务程序前段。5.4 中断应
41、用举例中断应用举例2、关中断和开中断、关中断和开中断 89C52允许中断嵌套允许中断嵌套。为了在保护现场或。为了在保护现场或恢复现场时,由于恢复现场时,由于CPU响应其它中断请求,响应其它中断请求,而使现场破坏,一般在保护和恢复现场时,而使现场破坏,一般在保护和恢复现场时,CPU不响应外界的中断请求,即关中断。不响应外界的中断请求,即关中断。在保护现场和恢复现场前,关中断;在在保护现场和恢复现场前,关中断;在保护现场和恢复现场后,再根据需要使保护现场和恢复现场后,再根据需要使CPUCPU开中断。开中断。思考:如果允许中断嵌套,什么时间关中思考:如果允许中断嵌套,什么时间关中断和开中断?断和开中
42、断?5.4 中断应用举例中断应用举例3、中断请求撤除、中断请求撤除 CPU响应某中断请求后,在响应某中断请求后,在中断返回前中断返回前,应该应该撤消撤消该该中断请求。中断请求。中断请求撤除方法如中断请求撤除方法如下:下:定时器定时器0、1溢出中断请求的撤除:允许溢出中断请求的撤除:允许中断的情况下,响应中断后,硬件会自动清中断的情况下,响应中断后,硬件会自动清除中断请求标志除中断请求标志TFx。定时器定时器/计数器计数器2请求的撤除:请求的撤除:T2中断请中断请求标志位求标志位TF2和和EXF2不能自动复位,须不能自动复位,须软件软件复位复位。串行口中断的撤除:串行口中断的撤除:串行口中断请求
43、标串行口中断请求标志位志位TI和和RI,必须,必须软件复位软件复位。5.4 中断应用举例中断应用举例 外部中断的撤除外部中断的撤除:外部中断为外部中断为边沿触发边沿触发方式时,响应中断后,方式时,响应中断后,硬件自动清除硬件自动清除IE0或或IE1。外部中断为电平触发方式时外部中断为电平触发方式时。响应中断。响应中断后,后,硬件会自动清除硬件会自动清除IE0或或IE1。但由于加但由于加到或引脚的外部中断请求信号并未撤除,到或引脚的外部中断请求信号并未撤除,中断请求标志中断请求标志IE0或或IE1会再次被置会再次被置1,所以,所以在在CPU响应中断后应立即撤除或引脚上的响应中断后应立即撤除或引脚
44、上的低电平。低电平。一般采用加一个一般采用加一个D触发器和几条指令的触发器和几条指令的方法来解决这个问题方法来解决这个问题。5.4 中断应用举例中断应用举例4、中断源的识别、中断源的识别 串行口中断串行口中断:接收请求标志接收请求标志RI和发送中断和发送中断请求标志位请求标志位TI共用中断入口地址(共用中断入口地址(0023H),),中断允许位中断允许位ES和中断优先级选择位和中断优先级选择位PS。定时器定时器/计数器计数器2:中断请求标志中断请求标志TF2和和EXF2,共用一个中断矢量地址(,共用一个中断矢量地址(002BH),),中断允许位中断允许位ET2和中断优先级选择位和中断优先级选择
45、位PT2。在中断服务程序中注意区分是哪种中断在中断服务程序中注意区分是哪种中断引起的中断请求,并清除其中断请求标志。引起的中断请求,并清除其中断请求标志。5.4 中断应用举例中断应用举例5、恢复现场、恢复现场 在结束中断服务程序,在结束中断服务程序,返回断点处前返回断点处前要要恢恢复现场复现场。6、中断返回、中断返回 当当CPU执行到执行到RETI指令时,将指令时,将当前栈顶当前栈顶内容弹出到内容弹出到PC,恢复断点恢复断点。注意:中断服务程序的最后一条指令,必注意:中断服务程序的最后一条指令,必须为须为RETI返回指令,不能为返回指令,不能为RET指令指令。5.4 中断应用举例中断应用举例例
46、例5-3 如图如图5-9所示,将所示,将P1口的口的P1.4P1.7作为作为输入输入位,位,P1.0P1.3作为作为输出输出位。位。要求利用要求利用89C52将将开关所设的数据读入开关所设的数据读入单片单片机内,并依次机内,并依次通过通过P1.0P1.3输出输出,驱动发,驱动发光二极管,以检查光二极管,以检查P1.4P1.7输入的电平情输入的电平情况(若况(若输入为高电平则相应的输入为高电平则相应的LED亮亮)。)。要求采用要求采用中断边沿触发方式中断边沿触发方式,中断一次,中断一次,完成一次读完成一次读/写操作。写操作。5.4 中断应用举例中断应用举例5.4 中断应用举例中断应用举例分析:分
47、析:5-9中,用外部中断中,用外部中断0,中断请求从,中断请求从P3.2输入,并采用去抖动电路。当输入,并采用去抖动电路。当P1.0P1.3的的某一位输出为某一位输出为0时,相应的发光二极管就会发光。时,相应的发光二极管就会发光。当开关当开关S1来回拨动一次时,将产生一个下降沿信来回拨动一次时,将产生一个下降沿信号,发出中断请求。中断服务程序的入口地址为号,发出中断请求。中断服务程序的入口地址为0003H。C语言程序语言程序:#includevoid main()EX0=1;/允许外部中断允许外部中断0中断中断5.4 中断应用举例中断应用举例 IT0=1;/选边沿触发方式选边沿触发方式EA=1
48、;/CPU开中断开中断while(1);/等待中断等待中断void int0_int(void)interrupt 0 unsignedchar data d;P1=0 xf0;/设设P1.4P1.7为输入为输入d=P1;/取开关数取开关数P1=(d4);/驱动驱动LED发光发光5.4 中断应用举例中断应用举例汇编程序:汇编程序:ORG 0000HSJMPMAIN;上电,转向主程序上电,转向主程序ORG0003H;外部中断外部中断0入口地址入口地址SJMPINSER;转向中断服务程序转向中断服务程序ORG0030H;主程序主程序MAIN:SETBEX0;允许外部中断允许外部中断0中断中断SET
49、BIT0;选择边沿触发方式选择边沿触发方式SETBEA;CPU开中断开中断5.4 中断应用举例中断应用举例HERE:SJMPHERE;等待中断等待中断INSER:;中断服务程序中断服务程序MOV AMOV P1,#0F0H;设设P1.4P1.7为输入为输入MOV A,P1;取开关数据取开关数据SWAP A;A的高、低四位互换的高、低四位互换 CPLMOV P1,A;输出驱动输出驱动LED发光发光RETI;中断返回中断返回END本章小结本章小结 本章介绍了中断的基本概念,中断系统本章介绍了中断的基本概念,中断系统的逻辑结构,中断控制的过程、以及中断的的逻辑结构,中断控制的过程、以及中断的应用。应用。89C52单片机内部有单片机内部有6个中断源,它们分个中断源,它们分别是外部中断别是外部中断0、外部中断、外部中断1、定时器、定时器0,1,2和串行口。对应和串行口。对应8个中断标志,个中断标志,6个中断允个中断允许和优先级控制位。许和优先级控制位。不同中断源有不同的中断入口地址,不同中断源有不同的中断入口地址,读者在编制程序时一定要注意正确区分中断读者在编制程序时一定要注意正确区分中断源,从而保证中断功能的正确实现。源,从而保证中断功能的正确实现。