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