中断设计.docx
- 文档编号:3102187
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:21
- 大小:58.16KB
中断设计.docx
《中断设计.docx》由会员分享,可在线阅读,更多相关《中断设计.docx(21页珍藏版)》请在冰点文库上搜索。
中断设计
课 时 授 课 计 划
课次序号:
一、课 题:
第四章中断系统
4.1概述
4.2中断系统结构及中断控制
二、课 型:
课堂讲授
三、目的要求:
中断是现代计算机必须具备的重要功能,也是计算机发展史上的一个里程碑。
因此建立准确的中断概念和灵活掌握中断技术是学好单片机的关键问题之一。
本节需要掌握中断相关的几个概念和中断系统功能。
四、重点、难点:
中断源和中断嵌套。
中断相关寄存器、中断处理过程和中断应用。
五、教学方法及手段:
理论讲授,在讲课过程中适当举例,提高学生的实际解决问题的能力。
六、参考资料:
赵全利,肖兴达机械工业出版社出版单片机原理及应用教程
七、作业:
八、授课记录:
授课日期
10.181.12节
班 次
机电07级
九、授课效果分析:
十、教学进程(教学内容、教学环节及时间分配等)
1、复习(5分钟)
简单总结回顾第三章单片机的编程语言和编程思想。
2、导入课题(5分钟)
MCS-51有了存储器ROM和RAM后就可以执行存储器中程序而对数据进行加工处理。
但是,怎么把这些程序和数据存入存储器,并把运算后的计算结果送给外界呢?
MCS-51通过专门的外部设备来完成它与外界的联系。
人们通过输入设备向单片机输入原始的程序和数据,单片机则通过输出设备向外界输出计算结果。
单片机和外部设备之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的,这种信息传送方式通常用到中断传送,因此,中断系统是单片机的重要组成部分。
实时控制、故障自动处理、单片机与外围设备间的数据传送往往采用中断系统,中断系统的应用大大提高了计算机效率。
3、教学内容
中断源(25分钟)
中断嵌套(35分钟)
中断系统功能(25分钟)
4、课堂总结(5分钟)
总结中断相关概念和中断系统功能。
5、布置作业
MCS-51有了存储器ROM和RAM后就可以执行存储器中程序而对数据进行加工处理。
但是,人们怎么把这些程序和数据存入存储器,并把运算后的计算结果送给外界呢?
MCS-51原来是通过专门的外部设备来完成它与外界的联系的。
外部设备分为输入和输出两种。
人们通过输入设备向单片机输入原始的程序和数据,单片机则通过输出设备向外界输出计算结果。
单片机和外部设备之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的,这种信息传送方式通常用到中断传送,因此,中断系统是单片机的重要组成部分。
实时控制、故障自动处理、单片机与外围设备间的数据传送往往采用中断系统。
中断系统的应用大大提高了计算机效率。
4.1概述
中断是现代计算机必须具备的重要功能,也是计算机发展史上的一个里程碑。
因此建立准确的中断概念和灵活掌握中断技术是学好单片机的关键问题之一。
一、中断的定义
计算机在执行程序的过程中,当出现CPU以外的某种情况,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。
中断是指暂时停止执行原程序执行而为外部设备服务,并在服务完成后自动返回原程序执行的过程。
“中断”之后所执行的相应的处理程序通常称之为中断服务或中断处理子程序,原来正常运行的程序称为主程序。
主程序被断开的位置(或地址)称为“断点”。
引起中断的原因,或能发出中断申请的来源,称为“中断源”。
中断源要求服务的请求称为“中断请求”(或中断申请)。
如图4-1p71
二、中断源
通常,计算机的中断源有如下几种:
(1)外部设备中断源
外部设备主要为计算机输入和输出数据,故它是最原始最广泛的中断源。
在用作中断源时,通常要求它在输入或输出一个数据时能自动产生一个“终端请求”信号送到CPU的中断请求输入线,以供CPU监测和响应,例如打印机打印完一个字符时可以通过打印中断要求CPU为他送下一个打印字符。
通常键盘、打印机都可以用作中断源。
(2)控制对象中断源
在计算机用作实时控制时,被控对象常常被用作中断源,用于产生中断请求信号,要求CPU及时采集系统的控制参量、越限参数以及要求发送和接收数据,等等。
例如:
电压、电流、温度、压力、流量和流速等超越上限和下限以及开关和继电器的闭合或断开都可以作为中断源来产生中断请求信号,要求CPU通过执行中断服务程序来加以处理。
因此,被控对象常常是用作实时控制的计算机的巨大中断源。
(3)故障中断源
故障源是产生故障信息的源泉,把它作为中断源是要CPU以中断方式对已发生故障进行分析处理。
计算机故障中断源有内部和外部之分:
CPU内部故障源引起内部中断,如被零除中断等;CPU外部故障源引起外部中断;如掉电中断等。
在掉电时,掉电检测电路检测到它时就自动产生一个掉电中断请求,CPU检测到后便在大滤波电容维持正常供电的几秒钟内通过执行掉电中断服务程序来保护现场和启用备用电池,以便市电恢复正常后继续执行掉电前的用户程序。
和上述CPU故障中断源类似,被控对象的故障源也可用作故障中断源,以便对被控对象进行应急处理,从而可以减少系统在发生故障时的损失。
(4)定时脉冲中断源
定时脉冲中断源又称为定时器中断源,实际上是一种定时脉冲电路或定时器。
定时脉冲中断源用于产生定时器中断,定时器中断有内部和外部之分。
内部定时器中断由CPU内部的定时器/计数器溢出(全“1”变全“0”)时自动产生,故又称为内部定时器溢出中断;外部定时器中断通常由外部定时电路的定时脉冲通过CPU的中断请求输入线引起。
不论是内部定时器中断还是外部定时器中断都可以使CPU进行计时处理,以便达到时间控制的目的。
三、中断嵌套
通常,一个CPU总会有若干个中断源,可以接收若干个中断源发出的中断请求。
但在同一瞬间,CPU只能响应若干个中断源中的一个中断请求,CPU为了避免在同一瞬间因响应若干个中断源的中断请求而带来的混乱,就必须给每个中断源的中断请求赋给一个特定的中断优先级,以便CPU先响应中断优先级高的中断请求,然后再逐次响应中断优先级次高和次低的中断请求。
中断优先级又叫做中断优先权,可以直接反映每个中断源的中断请求为CPU响应的优先程度,也是分析中断嵌套的基础。
和子程序类似,中断也是允许嵌套的。
在某一瞬间,CPU因响应某一中断源的中断请求而正在执行它的中断服务程序时,若CPU此时的中断是开放的,那它必然可以把正在执行的中断服务程序暂停下来转而响应和处理中断优先权更高中断源的中断请求,等到处理完后再转回来继续执行原来的中断服务程序。
这就是中断嵌套。
因此,中断嵌套的先决条件是中断服务程序开头应设置一条开中断指令(因为CPU会因响应中断而自动关闭中断),其次才是要有中断优先权更高中断源的中断请求存在。
两者不可缺一,都是实现中断嵌套的必要条件。
图为中断嵌套示意图。
图中,若假设A中断比B中断的中断优先级高,则中断嵌套过程可以归纳如下:
1.CPU执行安排在主程序开头的开中断指令后,若来了一个B中断请求,CPU便可响应B中断而进入B中断服务程序执行
2.CPU执行设置在B中断服务程序开头的一条开中断指令后使CPU中断再次开放,若此时又来了优先级更高的A中断请求,则CPU响应A中断而进入A中断服务程序执行
3.CPU执行到A中断服务程序末尾的一条中断返回指令RETI后自动返回B中断服务程序执行
4.CPU执行到B中断服务程序末尾的一条中断返回指令RETI后又可返回主程序执行。
至此,CPU便已完成一次嵌套深度为2的中断嵌套。
对于嵌套深度更大的中断嵌套,其工作过程也与此类似。
四、中断系统功能
中断系统是指能够实现中断功能的那部分硬件电路和软件程序。
对于MCS-51单片机,大部分中断电路都是集成在芯片内部的,虽然没有必要去弄清MCS-51内部中断电路的细微末节,但从系统高度论述一下这部分电路的功能也是十分必要的。
中断系统的功能通常有如下几条:
1.进行中断优先权排队
一个CPU通常可以和多个中断源相连,故总会发生在同一瞬时有两个或两个以上中断源同时请求中断的情况,这就要求人们能按轻重缓急给每个中断源的中断请求赋给一个中断优先级。
这样,当多个中断源同时向CPU请求中断时,CPU就可以通过中断优先权排队电路率先响应中断优先权高的中断请求而把中断优先权低的中断请求暂时搁置起来,等到处理完优先权高的中断请求后再来响应优先权低的中断。
MCS-51内部集成的中断优先权排队电路在软件的配合下可以对它的五级中断进行优先权排队。
2.实现中断嵌套
CPU的中断嵌套功能可以使它在响应某一中断源中断请求的同时再去响应更高中断优先权的指令,而把原中断服务程序束之高阁,等处理完这个更高优先级的中断请求后再来响应。
例如:
某单片机监测系统正在响应打印中断时巧遇敌电台开始发报,若监测系统不能暂时中止打印机的打印中断而去嵌套响应捕捉敌台信号的中断,那就会贻误战机,造成无法弥补的损失。
3.自动响应中断
中断源产生的中断请求是随机发生的,无法预料的。
因此,CPU必须不断检测中断输入线上的中断请求信号,而且相邻两次检测必须不能相隔太长,否则就会影响响应中断的时效。
通常,CPU总是在每条指令的最后状态对中断请求进行一次检测,因此,中断源产生中断请求到它被CPU检测到它的存在一般不会超过一条指令的时间。
例如:
当某中断源使8031的
线变为低电平时,8031便可在现行指令的S5P2和S6P1时检测到
上中断是否开放,若
上中断是开放的,则8031就立即响应,否则就暂时搁置。
CPU在响应中断时通常要自动做三件事:
一是自动关闭中断(严防其它中断进来干扰本次中断)和把原执行程序的断点地址(在程序计数器PC中)压入堆栈,以便中断服务程序末尾的中断返回指令RETI可以按照此地址返回原程序执行;二是按中断源提供(或预先约定)的中断矢量自动转入相应中断服务程序执行;三是自动或通过安排在中断服务程序中指令来撤除本次中断请求,以避免再次响应本次中断请求。
4.实现中断返回
通常,每个中断源都要为它配一个中断服务程序,中断源不同相应中断服务程序也不相同。
各个中断服务程序由用户根据具体情况编好后放在一定的内存区域(若容许中断嵌套,则中断服务程序开头应安排开中断指令)。
CPU在响应某中断源中断请求便自动转入相应中断服务程序执行,在执行到安排在中断服务程序末尾的中断返回指令时,便自动到堆找取出断点地址(CPU在响应中断时自动压入)返回中断前的原程序执行。
4.2MCS-51的中断系统
1.MCS-51中断系统的结构框图
中断过程是在硬件基础上再配以相应的软件而实现的,不同的计算机其硬件结构和软件指令是不完全相同的,因此,中断系统也是不相同的。
MCS-51中断系统的结构框图所示。
由图可知,与中断有关的寄存器有4个,分别为中断源寄存器TCON和SCON、中断允许控制寄存器IE和中断优先级控制寄存器IP。
有中断源5个,分别为外部中断0请求
、外部中断1请求
、定时器T0溢出中断请求TF0、定时器T1溢出中断请求TF1和串行中断请求RI或TI。
5个中断源的排列顺序由中断优先级控制寄存器IP和顺序查询逻辑电路共同决定,5个中断源分别对应5个固定的中断入口地址。
MCS-51的5个中断源详述如下:
(1)
和
:
外部中断0、1请求,由P3.2和P3.3引脚输入。
8031究竟工作于哪种中断触发方式,可由用户对定时器控制寄存器TCON中IT0和IT1位状态的设定来选取。
8031在每个机器周期的S5P2时对
/
线上中断请求信号进行一次检测,检测方式和中断触发方式的选取有关。
若8031设定为电平触发方式(IT0=0或IT1=0),则CPU检测到
/
上低电平时就可认定其上中断请求有效;若设定为边沿触发方式(IT0=1或IT1=1),则CPU需要两次检测
/
线上电平方能确定其上中断请求是否有效,即前一次检测为高电平和后一次检测为低电平时
/
上中断请求才有效。
(2)定时器溢出中断源
定时器溢出中断由8031内部定时器中断源产生,故它们属于内部中断。
8031内部有两个16位定时器计数器T0/T1,受内部定时脉冲(主脉冲经12分频后)或T0/T1引脚上输入的外部定时脉冲计数。
定时器T0/T1在定时脉冲作用下从全“1”变为全“0”时可以自动向CPU提出溢出中断请求,以表明定时器T0或T1的定时时间已到。
定时器T0/Tl的定时时间可由用户通过程序设定,以便CPU在定时器溢出中断服务程序内进行计时。
(3)RI或TI:
串行中断请求。
当接收或发送完一串行帧时,内部串行口中断请求标志位RI(SCON.0)或TI(SCON.1)置位(由硬件自动执行),请求中断。
由8031内部串行口中断源产生,故也是一种内部中断。
串行口中断分为串行口发送终端和串行口接收中断两种。
在串行口进行发送/接收数据时,每当串行口发送/接收完一组串行数据时串行口电路自动使串行口控制寄存器SCON中的RI或TI中断标志位置位,并自动向CPU发出串行口中断请求,CPU响应串行口中断后便立即转入串行口中断服务程序执行。
因此,只要在串行口中断服务程序中安排一段SCON中RI和TI中断标志位状态的判断程序,便可区分串行口发生了接收中断请求还是发送中断请求。
2.中断标志
8031在S5P2时检测(或接收)外部(或内部)中断源发来的中断请求信号后先使相应中断标志位置位,然后便在下个机器周期检测这些中断标志位状态,以决定是否响应该中断。
8031中断标志位集中安排在定时器控制寄存器TCON和串行口控制寄存器SCON中,由于它们对8031中断初始化关系密切,因此要熟记。
1)定时器控制寄存器TCON(位地址88H)
TCON为定时器T0和T1的控制寄存器,同时也锁存T0和T1的溢出中断标志及外部中断
和
的中断标志等。
与中断有关位如下:
(1)TCON.7TF1:
T1的溢出中断标志。
T1被启动计数后,从初值做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。
也可由软件查询该标志,并由软件清0。
(2)TCON.5TF0:
T0溢出中断标志。
其操作功能与TF1相同。
(3)TCON.3IE1:
中断标志。
IE1=1,外部中断1向CPU申请中断。
(4)TCON.2IT1:
中断触发方式控制位。
当IT1=0,外部中断1控制为电平触发方式。
在这种方式下,CPU在每个机器周期的S5P2期间对
(P3.3)引脚采样,若为低电平,则认为有中断申请,随即使IE1标志置位;若为高电平,则认为无中断申请,或中断申请已撤除,随即使IE1标志复位。
在电平触发方式中,CPU响应中断后不能由硬件自动清除IE1标志,也不能由软件清除IE1标志,所以,在中断返回之前必须撤消
引脚上的低电平,否则将再次中断导致出错。
(5)TCON.1IE0:
中断标志。
其操作功能与IE1相同。
(6)TCON.0IT0:
中断触发方式控制位。
其操作功能与IT1相同。
2)SCON寄存器中的中断标志
SCON是串行口控制寄存器,其低2位TI和RI锁存串行口的接收中断标志和发送中断标志。
(1)SCON.1TI:
串行发送中断标志。
CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。
但CPU响应中断时并不清除TI,必须由软件清除。
(2)SCON.0RI:
串行接收中断标志。
在串行口允许接收时,每接收完一个串行帧,硬件将使RI置位。
同样,CPU在响应中断时不会清除RI,必须由软件清除。
8051系统复位后,TCON和SCON均清0,应用时要注意各位的初始状态。
3)IE寄存器中断的开放和禁止标志
计算机中断系统有两种不同类型的中断:
一类称为非屏蔽中断,另一类称为可屏蔽中断。
对非屏蔽中断,用户不能用软件的方法加以禁止,一旦有中断申请,CPU必须予以响应。
对可屏蔽中断,用户则可以通过软件方法来控制是否允许某中断源的中断,允许中断称中断开放,不允许中断称中断屏蔽。
MCS-51系列单片机的5个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE用于控制CPU对各中断源的开放或屏蔽。
IE寄存器各位定义如下:
(1)IE.7EA:
总中断允许控制位。
EA=1,开放所有中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;EA=0,禁止所有中断。
(2)IE.4ES:
串行口中断允许位。
ES=1,允许串行口中断;ES=0禁止串行口中断。
(3)IE.3ET1:
定时器T1中断允许位。
ET1=1,允许T1中断;ET1=0,禁止T1中断。
(4)IE.2EX1:
外部中断1(
)中断允许位。
EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。
(5)IE.1ET0:
定时器T0中断允许位。
ET0=1,允许T0中断;ET0=0,禁止T0中断。
(6)IE.0EX0:
外部中断0(
)中断允许位。
EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。
8051单片机系统复位后,IE中各中断允许位均被清0,即禁止所有中断。
4)IP寄存器中断优先级标志
8051单片机有两个中断优先级,每个中断源都可以通过编程确定为高优先级中断或低优先级中断,因此,可实现二级嵌套。
同一优先级别中的中断源可能不止一个,也有中断优先权排队的问题。
专用寄存器IP为中断优先级寄存器,锁存各中断源优先级控制位,IP中的每一位均可由软件来置1或清0,且1表示高优先级,0表示低优先级。
其格式如下:
(1)IP.4PS:
串行口中断优先控制位。
PS=1,设定串行口为高优先级中断;PS=0,设定串行口为低优先级中断。
(2)IP.3PT1:
定时器T1中断优先控制位。
PT1=1,设定定时器T1中断为高优先级中断;PT1=0,设定定时器T1中断为低优先级中断。
(3)IP.2PX1:
外部中断1中断优先控制位。
PX1=1,设定外部中断1为高优先级中断;PX1=0,设定外部中断1为低优先级中断。
(4)IP.1PT0:
定时器T0中断优先控制位。
PT0=1,设定定时器T0中断为高优先级中断;PT0=0,设定定时器T0中断为低优先级中断。
(5)IP.0PX0:
外部中断0中断优先控制位。
PX0=1,设定外部中断0为高优先级中断;PX0=0,设定外部中断0为低优先级中断。
当系统复位后,IP低5位全部清0,所有中断源均设定为低优先级中断。
如果几个同一优先级的中断源同时向CPU申请中断,CPU通过内部硬件查询逻辑,按自然优先级顺序确定先响应哪个中断请求。
自然优先级由硬件形成,排列如下:
中断源同级自然优先级
外部中断0最高级
定时器T0中断
外部中断1
定时器T1中断
串行口中断最低级
3.中断处理过程
中断处理过程可分为中断响应、中断处理和中断返回三个阶段。
不同的计算机因其中断系统的硬件结构不同,中断响应的方式也有所不同。
这里,仅以8051单片机为例进行叙述。
1)中断响应
中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。
CPU并非任何时刻都响应中断请求,而是在中断响应条件满足之后才会响应。
(1)中断响应条件
CPU响应中断的条件有:
a.有中断源发出中断请求。
b.中断总允许位EA=1。
c.申请中断的中断源允许。
满足以上基本条件,CPU一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断。
a.CPU正在响应同级或高优先级的中断。
b.当前指令未执行完。
c.正在执行RETI中断返回指令或访问专用寄存器IE和IP的指令。
若存在上述任何一种情况,中断查询结果即被取消,CPU不响应中断请求而在下一机器周期继续查询,否则,CPU在下一机器周期响应中断。
(2)中断响应过程
中断响应过程包括保护断点和将程序转向中断服务程序的入口地址。
首先,中断系统通过硬件自动生成长调用指令(LACLL),该指令将自动把断点地址压入堆栈保护(不保护累加器A、状态寄存器PSW和其它寄存器的内容),然后,将对应的中断入口地址装入程序计数器PC(由硬件自动执行),使程序转向该中断入口地址,执行中断服务程序。
MCS-51系列单片机各中断源的入口地址由硬件事先设定,分配如下:
中断源入口地址
外部中断00003H
定时器T0中断000BH
外部中断10013H
定时器T1中断001BH
串行口中断0023H
8051五个中断源的入口地址之间彼此相差八个存储单元,这八个存储单元用来存放中断服务程序通常是放不下的。
为了解决这一困难问题,用户常可在八个中断入口地址处存放一条三字节长转移指令,CPU执行这条长转移指令便可转入相应中断服务程序执行。
例如:
若
中断服务程序始址在2000H单元,则如下指令执行后便可转入2000H处执行中断服务程序。
ORG0003H
LCALL2000H
2)中断处理
中断处理就是执行中断服务程序。
中断服务程序从中断入口地址开始执行,到返回指令“RETI”为止,一般包括两部分内容,一是保护现场,二是完成中断源请求的服务。
通常,主程序和中断服务程序都会用到累加器A、状态寄存器PSW及其它一些寄存器,当CPU进入中断服务程序用到上述寄存器时,会破坏原来存储在寄存器中的内容,一旦中断返回,将会导致主程序的混乱,因此,在进入中断服务程序后,一般要先保护现场,然后,执行中断处理程序,在中断返回之前再恢复现场。
编写中断服务程序时还需注意以下几点:
(1)各中断源的中断入口地址之间只相隔8个字节,容纳不下普通的中断服务程序,因此,在中断入口地址单元通常存放一条无条件转移指令,可将中断服务程序转至存储器的其它任何空间。
(2)若要在执行当前中断程序时禁止其它更高优先级中断,需先用软件关闭CPU中断,或用软件禁止相应高优先级的中断,在中断返回前再开放中断。
(3)在保护和恢复现场时,为了不使现场数据遭到破坏或造成混乱,一般规定此时CPU不再响应新的中断请求。
因此,在编写中断服务程序时,要注意在保护现场前关中断,在保护现场后若允许高优先级中断,则应开中断。
同样,在恢复现场前也应先关中断,恢复之后再开中断。
3)中断返回
中断返回是指中断服务完后,计算机返回原来断开的位置(即断点),继续执行原来的程序。
中断返回由中断返回指令RETI来实现。
该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC,此外,还通知中断系统已完成中断处理,并同时清除优先级状态触发器。
特别要注意不能用“RET”指令代替“RETI”指令。
中断处理过程如图所示。
4)中断请求的撤除
CPU响应中断请求后即进入中断服务程序,在中断返回前,应撤除该中断请求,否则,会重复引起中断而导致错误。
MCS-51各中断源中断请求撤消的方法各不相同,分别为:
(1)定时器中断请求的撤除
对于定时器0或1溢出中断,CPU在响应中断后即由硬件自动清除其中断标志位TF0或TF1,无需采取其它措施。
(2)串行口中断请求的撤除
对于串行口中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TI、RI,必须在中断服务程序中用软件将其清除。
如:
CLRT1;清除发送中断
CLRT0;清除接收中断
或ANLSCON#0FCH;清除发送和接收指令
(3)外部中断请求的撤除
外部中断可分为边沿触发型和电平触发型。
对于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中断 设计