1、单片机应用技术单片机应用技术 (C C语言版)语言版)第第6 6章章 中断系统中断系统第第6 6章章 MCS-51MCS-51单片机中断系统单片机中断系统目目 录录6.1 6.1 中断的概述中断的概述 6.2 6.2 中断系统结构中断系统结构6.3 6.3 中断控制系统中断控制系统6.4 6.4 中断处理过程中断处理过程6.5 C516.5 C51中断程序设计中断程序设计1 1、中断的概念、中断的概念CPUCPU正常运行,发生异常正常运行,发生异常情况或特殊请求,暂时中断情况或特殊请求,暂时中断当前程序,处理发生的事件,当前程序,处理发生的事件,处理完后,再返回继续运行。处理完后,再返回继续运
2、行。此过程称为中断此过程称为中断。6.1 6.1 中断的相关概念中断的相关概念 2 2、中断源、中断源 引起引起CPUCPU中断的设备和事件就是中断源。中断的设备和事件就是中断源。(1 1)外部设备中断源(打印机和键盘)外部设备中断源(打印机和键盘)(2 2)控制对象中断源(被控对象:电压、电)控制对象中断源(被控对象:电压、电流等)流等)(3 3)故障中断源(掉电中断)故障中断源(掉电中断)(4 4)定时器中断源(定时器溢出)定时器中断源(定时器溢出)3 3、中断请求、中断请求 中断源向中断源向CPUCPU发出的请求处理信号,发出的请求处理信号,即中断请求或中断申请。即中断请求或中断申请。4
3、 4、中断响应、中断响应 CPUCPU暂时中止正在处理的事情,转去暂时中止正在处理的事情,转去处理突发事件的过程,称为处理突发事件的过程,称为中断响应中断响应。包括:中断优先级、断点保护等包括:中断优先级、断点保护等5 5、其他概念、其他概念中断系统:中断系统:实现中断功能的部件,又称实现中断功能的部件,又称中断机构。中断机构。中断服务程序:中断服务程序:CPUCPU响应中断后,处理响应中断后,处理中断事件的程序。中断事件的程序。断点:断点:CPUCPU响应中断请求,转去响应中断请求,转去执行中执行中断服务程序时的断服务程序时的PCPC值,即为断点地址值,即为断点地址。中断返回:中断返回:CP
4、UCPU执行完中断服务程序后执行完中断服务程序后回到断点的过程。回到断点的过程。6 6、中断的功能、中断的功能 中断是计算机的一项重要技术,计算中断是计算机的一项重要技术,计算机引入中断后,大大提高了它的工作效率机引入中断后,大大提高了它的工作效率和处理问题的灵活性,主要功能有以下几和处理问题的灵活性,主要功能有以下几个方面。个方面。使使CPUCPU与外设同步工作与外设同步工作 (多个外设,(多个外设,减少等待时间)减少等待时间)实现实时处理实现实时处理 (中断条件满足)(中断条件满足)故障及时处理故障及时处理 (通过中断通知(通过中断通知CPUCPU)中断系统构成:中断系统构成:基本型单片机
5、主要提供基本型单片机主要提供5 5个中断源个中断源,2 2个中断优先级。个中断优先级。特殊功能寄存器主要用于:特殊功能寄存器主要用于:控制中断的控制中断的开放和关闭、保存中断信息、设置中断的优开放和关闭、保存中断信息、设置中断的优先级别。先级别。MCS-51MCS-51增强型单片机的中断结构如图增强型单片机的中断结构如图5-25-2所所示。示。6.2 6.2 中断系统的结构中断系统的结构 1 1、增强型单片机的中断系统结构、增强型单片机的中断系统结构2 2、MCS-51MCS-51的中断源的中断源 MCS-51 MCS-51基本型中断系统主要是对基本型中断系统主要是对5 5个个中断源进行管理,
6、依次为:中断源进行管理,依次为:1.1.外部中断外部中断0 02.2.外部中断外部中断1 13.3.定时器定时器/计数器计数器T0T0溢出中断溢出中断4.4.定时器定时器/计数器计数器T1T1溢出中断溢出中断5.5.串行口中断串行口中断 CPU CPU主要是通过主要是通过请求标志寄存器请求标志寄存器(TCON(TCON、SCON)SCON)、中断允许寄存器(、中断允许寄存器(IEIE)、)、优先级寄存器优先级寄存器(IP)(IP)对中断源进行管理。对中断源进行管理。1 1、T0T0、T1T1及外中断的控制寄存器及外中断的控制寄存器TCONTCON TCONTCON格式如下:格式如下:TCONT
7、CON(88H)(88H)D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0 定时器控制寄存器定时器控制寄存器 TCONTCON可位寻址。复位后可位寻址。复位后TCON=00HTCON=00H。6.3 6.3 中断控制系统中断控制系统IT0IT0:外中断:外中断0 0触发方式设置位触发方式设置位IT0=0IT0=0,外中断,外中断0 0为低电平触发为低电平触发 IT0=1IT0=1,外中断,外中断0 0为下降沿触发为下降沿触发IT1IT1:外中断:外中断1 1触发方式控制位触发方式控制
8、位。功能同功能同IT0IT0。IE1IE1:外中断:外中断1 1中断请求标志位中断请求标志位外部中断外部中断1 1引脚有请求信号置引脚有请求信号置1 1;IE1IE1的清的清0 0方式问题:与外中断的触发方式方式问题:与外中断的触发方式有关有关(1 1)低电平触发,则低电平触发,则P3.3P3.3引脚为高电平引脚为高电平自动对自动对IE1IE1清清0 0;(2 2)下降沿触发,则)下降沿触发,则CPUCPU响应中断由硬件响应中断由硬件自动对自动对IE1IE1清清0 0。IE0IE0:外部中断:外部中断0 0中断请求标志位中断请求标志位功能同功能同IE1IE1。外中断触发方式的选择(外中断触发方
9、式的选择(P119P119)1 1、电平触发。、电平触发。适合于外部中断输入为低电适合于外部中断输入为低电平,且中断服务程序能清除外部中断请平,且中断服务程序能清除外部中断请求源。求源。2 2、跳变触发(下降沿触发)。适合于以负、跳变触发(下降沿触发)。适合于以负脉冲形式输入的外部中断请求,这种触脉冲形式输入的外部中断请求,这种触发方式可靠性高,不宜连续被中断响应。发方式可靠性高,不宜连续被中断响应。TF1TF1(TCON.7TCON.7):T1:T1溢出标志位溢出标志位当当T1T1计满溢出时,由内部硬件置位;计满溢出时,由内部硬件置位;中断响应后自动清中断响应后自动清0 0。TF0:T0TF
10、0:T0溢出标志位溢出标志位 功能同功能同TF1TF1。TR0:TR0:定时定时/计数器计数器T0T0允许(启允许(启/停)控制位停)控制位 TR0=1TR0=1,定时器,定时器T0T0立即开始计数;立即开始计数;TR0=0TR0=0,定时器,定时器T0T0立即停止计数;立即停止计数;TR1TR1作用同作用同TR0TR0。TR0TR0和和TR1TR1状态可由用户通过程序设定。状态可由用户通过程序设定。2 2、串行口控制寄存器、串行口控制寄存器SCON SCON 字节地址字节地址98H98H。可以位寻址可以位寻址,格式如下:格式如下:TITI(SCONSCON1 1):串行口发送中断标志。:串行
11、口发送中断标志。串行口发送完一帧,由硬件置位。串行口发送完一帧,由硬件置位。响应中响应中断后,必须用软件清断后,必须用软件清0 0。例如:例如:TI=0;TI=0;RIRI(SCONSCON0 0):串行口接收中断标志。串行口接收中断标志。SCONSCON(98H)(98H)D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0TITIRIRI串行口控制寄存器串行口控制寄存器 串行口接收完一帧,由硬件置位。响应中串行口接收完一帧,由硬件置位。响应中断后,断后,必须用软件清必须用软件清0 0。例如:例如:RI=0RI=0;复位后,复位后,SCON=00HSCON=00H3 3、中断允许
12、寄存器、中断允许寄存器IEIE可以位寻址可以位寻址,其格式如图所示:,其格式如图所示:单片机复位后,单片机复位后,IE=00HIE=00HIEIE(A8H)(A8H)D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0EAEAESESET1ET1 EX1EX1 ET0ET0 EX0EX0中断允许寄存器中断允许寄存器 MCS-51 MCS-51中断的开放和关闭是通过中断的开放和关闭是通过IEIE进行两级进行两级控制的。控制的。两级控制:两级控制:中断允许总控制位中断允许总控制位EAEA,各中断各中断源的中断允许控制位源的中断允许控制位例例 假设允许假设允许T0T0中断,试设置中断,试
13、设置IEIE的值。的值。解:解:(1 1)用)用C C语言字节操作:语言字节操作:IE=0 x82IE=0 x82;(2 2)用)用C C语言位操作指令语言位操作指令EA=1EA=1;/开总中断控制开总中断控制 ET0=1ET0=1;/允许定时允许定时/计数器计数器0 0中断中断IEIE(A8H)(A8H)D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0EAEA ET2ET2ESESET1ET1 EX1EX1 ET0ET0 EX0EX0中断允许寄存器中断允许寄存器 两级两级控制控制4 4、中断优先级控制寄存器、中断优先级控制寄存器IPIP MCS-51 MCS-51单片机有单片
14、机有5 5个中断源个中断源,每个中,每个中断源有断源有两级优先级控制:两级优先级控制:高优先级高优先级和和低优低优先级,先级,以便以便CPUCPU对所有的中断实现两级中对所有的中断实现两级中断嵌套。断嵌套。对对 IPIP设置可让中断源处于不同的优先级。设置可让中断源处于不同的优先级。其格式如下图所示。其格式如下图所示。(不能位寻址不能位寻址)IPIP(B8H(B8H)D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0PSPSPT1PT1PX1PX1PT0PT0PX0PX0中断优先级控制寄存器中断优先级控制寄存器 IPIP复位后为复位后为00H00H。即所有中断源均为低优先级。即所
15、有中断源均为低优先级。中断优先级同级顺序中断优先级同级顺序中断源中断源同级优先级顺序同级优先级顺序外部中断外部中断0 0定时器定时器/计数器计数器0 0外部中断外部中断1 1定时器定时器/计数器计数器1 1串行口中断串行口中断最最 高高 最最 低低中断优先级规则:中断优先级规则:(1 1)对同时发生多个中断申请)对同时发生多个中断申请 不同优先级的中断同时申请:不同优先级的中断同时申请:先高后低先高后低 相同优先级的中断同时申请:相同优先级的中断同时申请:按序执行按序执行(2 2)不同时发生多个中断申请)不同时发生多个中断申请 正处理低优先级中断又接到高级别中断正处理低优先级中断又接到高级别中
16、断:高打断低高打断低 正处理高优先级中断又接到低级别中断:正处理高优先级中断又接到低级别中断:高不理低高不理低中断嵌套中断嵌套注:注:5151单片机只可实现两级中断嵌套单片机只可实现两级中断嵌套思考:当系统正在处理定时器思考:当系统正在处理定时器0 0中断的过程中断的过程中,定时器中,定时器1 1和外部中断和外部中断0 0有中断请求,描述有中断请求,描述CPUCPU的中断处理过程?的中断处理过程?中断优先级同级顺序中断优先级同级顺序中断源中断源同级优先级顺序同级优先级顺序外部中断外部中断0 0定时器定时器/计数器计数器0 0外部中断外部中断1 1定时器定时器/计数器计数器1 1串行口中断串行口
17、中断最最 高高 最最 低低例例 设定时器和串行口中断为高优先设定时器和串行口中断为高优先级,两个外部中断为低优先级,试设置级,两个外部中断为低优先级,试设置IPIP的值。的值。解:解:C C语言程序语言程序 IP=0 x1aIP=0 x1a;IPIP(B8H(B8H)D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0PSPSPT1PT1PX1PX1PT0PT0PX0PX0中断优先级控制寄存器中断优先级控制寄存器 6.4 6.4 中断处理过程中断处理过程一、中断响应条件一、中断响应条件(1 1)中断源有中断请求;)中断源有中断请求;(2 2)中断总允许位)中断总允许位EA=1EA=
18、1;(3 3)发出中断请求的中断源的中断允许)发出中断请求的中断源的中断允许控制位为控制位为1 1。在满足以上条件的基础上,若有下列任在满足以上条件的基础上,若有下列任何一种情况存在,不能响应中断。何一种情况存在,不能响应中断。(1 1)CPUCPU正在执行一个同级或高优先级的正在执行一个同级或高优先级的中断服务程序;中断服务程序;(2 2)正在执行的指令尚未执行完;)正在执行的指令尚未执行完;(3 3)正在执行中断返回指令)正在执行中断返回指令RETIRETI或者对寄或者对寄存器存器IEIE、IPIP进行读进行读/写的指令。写的指令。CPUCPU在执行完上述指令之后,才能响应在执行完上述指令
19、之后,才能响应中断请求。中断请求。二、中断响应过程二、中断响应过程 从中断请求发生直到被响应,准备从中断请求发生直到被响应,准备去执行中断服务程序,此过程即去执行中断服务程序,此过程即中断响应过中断响应过程程。中断响应过程的操作步骤:中断响应过程的操作步骤:优先级查询优先级查询,将相应的将相应的优先级状态触发器置优先级状态触发器置1 1,以阻止后来同级或低级中断源的中断请求;以阻止后来同级或低级中断源的中断请求;清除可清除的中断请求标志位清除可清除的中断请求标志位硬件自动生成长调用指令硬件自动生成长调用指令LCALL addr16LCALL addr16(中(中断程序断程序入口地址入口地址)。
20、)。PCPC的内容(即断点地址)压入堆栈。的内容(即断点地址)压入堆栈。先低位先低位地址,后高位地址,并修改堆栈指针地址,后高位地址,并修改堆栈指针SPSP。将中断源的中断入口地址装入程序计数器将中断源的中断入口地址装入程序计数器PCPC,准备执行中断服务程序。准备执行中断服务程序。三、中断响应的时间三、中断响应的时间 中断响应时间:中断响应时间:从中断请求标志位从中断请求标志位置位到置位到CPUCPU开始执行中断服务程序的第开始执行中断服务程序的第一条指令所需的时间。一条指令所需的时间。一般来说,一般来说,中断的响应时间最短为中断的响应时间最短为3 3个个机器周期,最长为机器周期,最长为8
21、8个机器周期。个机器周期。四、四、中断处理和返回过程中断处理和返回过程1 1、中断处理过程、中断处理过程 当当CPUCPU响应中断后,响应中断后,做中断处理。首先获做中断处理。首先获得中断服务程序的入得中断服务程序的入口地址。口地址。其次:执行中断其次:执行中断服务程序服务程序。中断源中断源 中断入口中断入口外部中断外部中断0 0 0003H 0003H 定时器定时器/计数器计数器0 0 000BH000BH外部中断外部中断1 1 0013H 0013H 定时器定时器/计数器计数器1 1 001BH 001BH 串行口串行口0023H0023H定时器定时器/计数器计数器2 2 002BH002
22、BH2 2、中断返回、中断返回使用使用RETIRETI指令指令 RETIRETI指令包含两个功能:指令包含两个功能:首先将相应的首先将相应的优先级状态触发器清优先级状态触发器清0 0,以开放同级别中断源的中断请求;以开放同级别中断源的中断请求;其次,从堆栈区把其次,从堆栈区把断点地址弹出给断点地址弹出给程序程序计数器计数器PCPC。注意:注意:不能用不能用RETRET指令代替指令代替RETIRETI指令。指令。因为因为RETRET没有没有优先级状态触发器清优先级状态触发器清0 0功能。功能。C51C51编程时,编译器自动加上编程时,编译器自动加上返回值类型返回值类型 函数名函数名 interr
23、upt n using m interrupt n using m 编号编号 n n所代表的中断源所代表的中断源0 0外部中断外部中断0 01 1定时定时/计数器计数器0 02 2外部中断外部中断1 13 3定时定时/计数器计数器1 14 4串口串口void Int0(void)interrupt 0void Int0(void)interrupt 0m m:工作寄存器采用的组号:工作寄存器采用的组号省略为省略为 using 0using 0 C51 C51中断程序设计格式:中断程序设计格式:6.6 6.6 C51 C51中断程序设计中断程序设计 C51 C51处理中断程序设计处理中断程序设计
24、 INT0 P1.05V5V#include sbit P1_0=P10;void main(void)/主程序主程序 IT0=1;/负跳变触发中断负跳变触发中断 EA=1;/开总允许中断开总允许中断 EX0=1;/开开INT0中断中断 while(1);/等待下一次中断等待下一次中断 void Int0(void)interrupt 0 /中断服务程序,工作寄存器采用中断服务程序,工作寄存器采用0组组 /(省略了省略了using 0)P1_0=P1_0;/P1.0取反,改变取反,改变LED亮灭的状态亮灭的状态本章小结本章小结 本章介绍了中断的基本概念,中断系本章介绍了中断的基本概念,中断系统的逻辑结构,中断控制的过程、以及中断统的逻辑结构,中断控制的过程、以及中断的应用。的应用。89C51 89C51单片机内部有单片机内部有5 5个中断源,它们个中断源,它们分别是外部中断分别是外部中断0 0、外部中断、外部中断1 1、定时器、定时器0 0,1 1,串行口。对应串行口。对应4 4个特殊功能寄存器(中断标个特殊功能寄存器(中断标志,中断允许、优先级控制位。)志,中断允许、优先级控制位。)
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。