《一章中断系统》由会员分享,可在线阅读,更多相关《一章中断系统(54页珍藏版)》请在金锄头文库上搜索。
1、第第5 5章章 AT89S51 AT89S51单片机的单片机的 中断系统中断系统1绚拌闰芥呐顺弓翘组勺尉磷捎呻目建靛裁枯存芹止何亥嘘雷宦堆巧处褂钩一章中断系统一章中断系统12第第5章章目目录录5.1AT89S51中断技中断技术术概述概述5.2AT89S51中断系中断系统结统结构构5.2.1中断请求源5.2.2中断请求标志寄存器5.3中断允中断允许许与中断与中断优优先先级级的控制的控制5.3.1中断允许寄存器IE5.3.2中断优先级寄存器IP5.4响响应应中断中断请请求的条件求的条件5.5外部中断的响外部中断的响应时间应时间臂残捕忱挑赚静蒋蛔揍蚤详朴晰钮氓胯杠犁重抬仪荆肚贷线菩夯鸦找卢修一章中断
2、系统一章中断系统25.6外部中断的触外部中断的触发发方式方式选择选择5.6.1电平触发方式5.6.2跳沿触发方式5.7中断中断请请求的撤求的撤销销5.8中断服中断服务务子程序的子程序的设计设计5.9多外部中断源系多外部中断源系统设计统设计逗痞侠笨分腾穴徘蛮钟萝朝死婴盼雪窿湿壳艇儿候校姻冕眉伤捎肚渴窿镶一章中断系统一章中断系统3内容概要内容概要n介绍片内功能部件中断系统的介绍片内功能部件中断系统的硬件结构硬件结构和和工作原理工作原理。n掌握与中断系统掌握与中断系统有关的特殊功能寄存器有关的特殊功能寄存器以及中断系统的以及中断系统的应用特性。应用特性。n应能熟练地进行中断系统的应能熟练地进行中断系
3、统的初始化编程初始化编程以及以及中断服务子中断服务子程序的设计程序的设计。蛙娥朗堡铬坑径睫谬篷坝漫井整被券底幢摇磨墒插搏儿蹭痔六舜繁暮魔傍一章中断系统一章中断系统45.1 AT89S515.1 AT89S51中断技术概述中断技术概述 中断技术主要用于中断技术主要用于实时监测与控制实时监测与控制,要求单片机,要求单片机能及能及时地响应中断请求源提出的服务请求时地响应中断请求源提出的服务请求,并作出快速响应、,并作出快速响应、及时处理。这是由片内的中断系统来实现的。及时处理。这是由片内的中断系统来实现的。 当中断请求源当中断请求源发出中断请求发出中断请求时,如果中断请求被允许,时,如果中断请求被允
4、许,单片机暂时中止当前正在执行的主程序,转到中断服务处单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。理程序处理中断服务请求。 中断服务处理程序处理完中断服务请求后,再回到原中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。来被中止的程序之处(断点),继续执行被中断的主程序。 图图5-15-1为整个中断响应和处理过程。为整个中断响应和处理过程。5窥唾肘陀扰瘪用涝棵阎猴敏螟袭惺抵旱扒徽燎父北萌客夷订欢恐吗搐再瘫一章中断系统一章中断系统56图图5-1中断响应和处理过程中断响应和处理过程顾轻劲侯允荆暇困啪皇互护咽帐缕嫩朋眨雁答
5、道娥用习沥秘己映对吟稠狙一章中断系统一章中断系统6如果单片机没有中断系统如果单片机没有中断系统,单片机的大量时间可能会浪费,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。在查询是否有服务请求发生的定时查询操作上。采用中断技术完全采用中断技术完全消除了单片机在查询方式中的等待现象消除了单片机在查询方式中的等待现象,大大地提高了单片机的大大地提高了单片机的工作效率工作效率和和实时性实时性。5.2 AT89S515.2 AT89S51中断系统结构中断系统结构 中断系统结构图如中断系统结构图如图图5-25-2所示。所示。中断系统有中断系统有5 5个个中断请求源(简称中断源),中断
6、请求源(简称中断源),两个中断优两个中断优先级先级,可实现,可实现两级中断服务程序嵌套两级中断服务程序嵌套。每一中断源可用软件独立控制为每一中断源可用软件独立控制为允许中断允许中断或或关中断关中断状态,状态,中断优先级中断优先级均可用软件来设置。均可用软件来设置。7斟闽磕桂干见铀短赎着增脊租一也尉洲辕因夕限眶主笺颗航喧娶练暂您注一章中断系统一章中断系统75.2.1中断请求源中断请求源由图5-2可见,AT89S51中断系统共有5个中断请求源:(1)外部中断请求0,中断请求信号由引脚输入,中断请求标志为IE0。(2)外部中断请求1,中断请求信号由引脚输入,中断请求标志为IE1。(3)定时器定时器/
7、计数器计数器T0计数溢出发出的中断请求,中断请求标志为TF0。(4)定时器定时器/计数器计数器T1计数溢出发出的中断请求,中断请求标志为TF1。(5)串行口串行口中断请求,中断请求标志为发送中断TI或接收中断RI。8省椎拧请佐雀湃户怜犹胀芒濒誊汁硼拭耕乍杜咸霍铰谩诊该惨吵狞忿畸羊一章中断系统一章中断系统89图5-2 5-2 AT89S51AT89S51的中断系的中断系统结构示意构示意图块前咐德淄释囤酸冷爽员萎虎满友达缮谜慰汹蓑孔屹滨恍褐轰值八也映峦一章中断系统一章中断系统95.2.2中断请求标志寄存器中断请求标志寄存器5个中断请求源的中断请求标志中断请求标志分别由TCON和SCON的相应位锁存
8、。1.TCON寄存器寄存器为定时器/计数器的控制寄存器,字节地址为88H,可位寻址。特殊功能寄存器TCON的格式如图图5-3所示。10图5-35-3 特殊功能寄存器特殊功能寄存器TCONTCON的格式的格式筐益船鸳冤隶谐会滓誓河砌没瓶论托旷贰渭媳潜时货漓恫房弄格葫猴曝然一章中断系统一章中断系统10TCON各标志位功能如下:各标志位功能如下:(1)TF1定时器/计数器T1的溢出中断请求标志位。当T1计数产生溢出时,由硬件使TF1置“1”,向CPU申请中断。CPU响应TF1中断时,TF1标志由硬件自动清由硬件自动清“0”,TF1也可由软件清“0”。(2)TF0定时器/计数器T0的溢出中断请求标志位
9、,功能与TF1类似。(3)IE1外部中断请求1的中断请求标志位。(4)IE0外部中断请求0中断请求标志位,功能与IE1类似。(5)IT1选择外部中断请求1为跳沿触发还是电平触发。11诀术盎这瓮熄移茸溢豆疗旨丝晚柄叁婆忻寡象合僻籍罪监朱谅邀置羔奴薯一章中断系统一章中断系统11IT1=0,电平触发,电平触发方式,引脚上低电平有效,并把IE1置“1”。转向中断服务程序时,由硬件自动把IE1清“0”。IT1=1,跳沿触发跳沿触发方式,加到引脚上的外部中断请求输入信号电平从高到低的负跳变有效负跳变有效,并把IE1置“1”。转向中断服务程序时,由硬件自动自动把IE1清“0”。(6)IT0选择外部中断请求0
10、为跳沿触发方式还是电平触发方式,其意义与IT1类似。AT89S51复位复位后,TCON被清被清“0”,5个中断源的中断请求标志均为0。TR1(D6位)、TR0(D4位)这2位与中断系统无关与中断系统无关,将在第6章定时器/计数器中介绍。12谊奈歉铰只傍氧钟今妹组拼篷莉猾疆宴赣刃沪桔询诀处苦结燃绚妇斟淹拆一章中断系统一章中断系统122.SCON寄存器寄存器串行口控制寄存器,字节地址为98H,可位寻址可位寻址。低二位锁存串行口的发送中断和接收中断的中断请求标志TI和RI,格式如图图5-4所示所示。图图5-4SCON中的中断请求标志位中的中断请求标志位各标志位的功能:(1)TI串行口的发送中断请求标
11、志位。每发送完一帧串行数据后,TI自动置“1”。TI标志必须由软件清必须由软件清“0”。13振唱松燥粕泵智役土纶无旁园季浦格掐赶孝军涡床禾岔戮淄八郴荚芬蹿湖一章中断系统一章中断系统13(2)RI串行口接收中断请求标志位。串行口接收完一个串行口接收中断请求标志位。串行口接收完一个串行数据帧,硬件自动使串行数据帧,硬件自动使RI中断请求标志置中断请求标志置“1”。必须在中断。必须在中断服务程序中用指令对服务程序中用指令对RI清清“0”。5.3中断允许与中断优先级的控制中断允许与中断优先级的控制中断允许中断允许控制由中断允许寄存器控制由中断允许寄存器IE控制。控制。中断优先级中断优先级控制由中断优先
12、级寄存器控制由中断优先级寄存器IP控制。控制。5.3.1中断允许寄存器中断允许寄存器IEAT89S51的对各中断源的开放或屏蔽,是由中断允许寄存的对各中断源的开放或屏蔽,是由中断允许寄存器器IE控制的。控制的。IE字节地址为字节地址为A8H,可位寻址可位寻址,格式如,格式如图图5-5所示所示。14副悬仿绣中压帕凰逞腋倾耀赠痘佯爷弓蜘湿全墓判阮锡哄霖危佬尖哺费蝇一章中断系统一章中断系统14图5-5中断允许寄存器IE的格式IE对中断的开放和关闭实现两级控制两级控制。有一个总的开关中断控制位EA(IE.7位),EA=0时,所有的中断请求被屏蔽;EA=1时,开放中断,但5个中断源的中断请求是否允许,还
13、要由IE中的低中的低5位位所对应的对应的5个中断请求允许控制位个中断请求允许控制位的状态来决定(图5-5)。15赦捌坎晓渔途仿抹烦蔼篮看趟消蹦政科姻新迁帐刷华晋俘昌年堂豁索李忠一章中断系统一章中断系统15IE中各位功能如下:中各位功能如下:(1)EA中断允许总开关控制位。中断允许总开关控制位。EA=0,所有的中断请求被屏蔽。,所有的中断请求被屏蔽。EA=1,所有的中断请求被开放。,所有的中断请求被开放。(2)ES串行口中断允许位。串行口中断允许位。ES=0,禁止串行口中断。,禁止串行口中断。ES=1,允许串行口中断。,允许串行口中断。(3)ET1定时器定时器/计数器计数器T1的溢出中断允许位。
14、的溢出中断允许位。ET1=0,禁止,禁止T1溢出中断。溢出中断。ET1=1,允许,允许T1溢出中断。溢出中断。(4)EX1外部中断外部中断1中断允许位。中断允许位。16绣贞觅伙区洱桥咱殿违贱秘讼三枢爽帽氛对仑潭孔儒霄驭献馋蛤沽楚缀恩一章中断系统一章中断系统16EX1=0,禁止外部中断,禁止外部中断1中断。中断。EX1=1,允许外部中断,允许外部中断1中断。中断。(5)ET0定时器定时器/计数器计数器T0的溢出中断允许位。的溢出中断允许位。ET0=0,禁止,禁止T0溢出中断。溢出中断。ET0=1,允许,允许T0溢出中断。溢出中断。(6)EX0外部中断外部中断0中断允许位。中断允许位。EX0=0,
15、禁止外部中断,禁止外部中断0中断。中断。EX0=1,允许外部中断,允许外部中断0中断。中断。述允亦帚夜泄款俯众汕丙怎绝撩替秤丝斌槽力松答均滦啦核劣赦祝躇关撰一章中断系统一章中断系统17AT89S51复位以后,复位以后,IE被清被清“0”,所有中断请求被禁止。,所有中断请求被禁止。IE中与各个中断源相应的位可用指令置中与各个中断源相应的位可用指令置“1”或清或清“0”。若使某一个中断源被允许中断若使某一个中断源被允许中断,除了,除了IE相应的位被置相应的位被置“1”外,还必须使外,还必须使EA位置位置“1”。改变改变IE的内容的内容,可由,可由位操作指令位操作指令来实现(即来实现(即SETBbi
16、t;CLRbit),也可用),也可用字节操作指令字节操作指令实现。实现。18亥那妨伦静京砌贮题迟营仓掷柬绿乔蔡甲改淘鹊蛤片祭精患刚悲左琉鞭歹一章中断系统一章中断系统18【例【例5-1】若允许片内2个定时器/计数器中断,并禁止其他中断源的中断请求,请编写设置IE的相应程序段。(1)用位操作指令)用位操作指令CLRES;禁止串行口中断;禁止串行口中断CLREX0;禁止外部中断;禁止外部中断0中断中断CLREX1;禁止外部中断;禁止外部中断1中断中断SETBET0;允许定时器;允许定时器/计数器计数器T0中断中断SETBET1;允许定时器;允许定时器/计数器计数器T1中断中断SETBEA;总中断开关
17、位开放;总中断开关位开放(2)用字节操作指令)用字节操作指令MOVIE,#8AH上述两段程序对IE的设置是相同的。19蛆豹瞧屠钟稗映帮饼谅方赶辣羌阵您淳悔吵忘菌歼婆宏在啸歌袒陀巳兴开一章中断系统一章中断系统195.3.2中断优先级寄存器中断优先级寄存器IPAT89S51的中断请求源有两个中断优先级两个中断优先级,由软件分别设置为高高优先级中断优先级中断或低低优先级中断优先级中断,可实现:两级中断嵌套两级中断嵌套AT89S51正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,待高优先级中断处理完毕后,再返回低优先级中断服务程序。两级中断嵌套两级中断嵌套的过程过程如图图5-6所示。20
18、唉谱郧惋固状仔眨皂靠餐土恰抑目恩频市燕有引戌舷淮沁宁钵庇嫉尊疟槛一章中断系统一章中断系统2021图5-6两级中断嵌套的过程户书由贩阵搂塔譬踢竹斜盐冬粉她肘鼠落岩桨潞渤赛铱术敷竿传覆氰棺批一章中断系统一章中断系统21各中断源的中断优先级关系,可归纳为两条基本规则两条基本规则:(1)低优先级可被高优先级中断,高优先级不能低优)低优先级可被高优先级中断,高优先级不能低优先级中断。先级中断。如果某一中断源被设置为高优先级中断,则不能被任何其他的中断源的中断请求所中断。(2)任何一种中断中断一旦得到响应,不会再被它的同级不会再被它的同级中断源所中断中断源所中断。中断优先级寄存器IP,其字节地址为字节地址
19、为B8H,可位寻址。只要用程序改变其内容,可进行各中断源中断优先级的设中断优先级的设置置,IP寄存器的格式如图5-7所示。22澡离硼撼届吭崔掖候株熄贸狭幂罩蒸太获僻享升徘吃子寂拿辱讹旱俺节洪一章中断系统一章中断系统22图5-7IP寄存器的格式中断优先级寄存器IP各位的含义各位的含义如下:(1)PS串行口中断优先级控制位1:高优先级0:低优先级(2)PT1定时器T1中断优先级控制位1:高优先级0:低优先级23酉选尽沙朝淀农炊进接舱畸质抢弊拢惕抛听肪徒凰壤徊措胰诲炭蛤兵澜敌一章中断系统一章中断系统23(3)PX1外部中断1中断优先级控制位1:高优先级0:低优先级(4)PT0定时器T0中断优先级控制
20、位1:高优先级0:低优先级(5)PX0外部中断0中断优先级控制位1:高优先级0:低优先级中断优先级控制寄存器IP用位操作指令或字节操作指令可更新IP的内容,以改变中断优先级。AT89S51复位复位以后,IP的内容为0,各个中断源均为低均为低优先级优先级中断。24双酬埔穆廷翔活桔肚垢庭威泊攫蘸由堕涡剐茸幌撕怔迸湃巍蝉陷京吐掇捞一章中断系统一章中断系统24AT89S51的中断系统有的中断系统有两个不可寻址的两个不可寻址的“优先级激活触优先级激活触发器。发器。一个指示某高优先级一个指示某高优先级的中断正在执行,所有后来的中断的中断正在执行,所有后来的中断均被阻止;均被阻止;另一个触发器指示某低优先级
21、另一个触发器指示某低优先级的中断正在执行,的中断正在执行,所有同级的中断都被阻止,但不阻断高优先级的中断请求。所有同级的中断都被阻止,但不阻断高优先级的中断请求。在同时收到在同时收到几个同优先级的中断请求几个同优先级的中断请求时,哪一个中断请时,哪一个中断请求能优先得到响应,求能优先得到响应,取决于内部的查询顺序。取决于内部的查询顺序。这相当于在这相当于在同一个优先级内,还同时存在另一个辅助优先级结构,其同一个优先级内,还同时存在另一个辅助优先级结构,其查询顺序见查询顺序见表表5-1。25疵切诧据限址就勃饵佳敏竟撰弹虾垒捕嫡居解杯溉赵霍佰凡锦侄袄涅痰已一章中断系统一章中断系统25表表5-1同级
22、中断的查询次序同级中断的查询次序由此可见,各中断源在同一个优先级的条件下,外部中外部中断断0的中断优先权最高最高,串行口中断串行口中断优先权最低最低。26咕董叫哇邵旅戍际逊蛋撤急瑚脾捌钻恒粉堪蒲抑陪临痞哀刺斥痢坐胰斟欠一章中断系统一章中断系统26【例【例5-25-2】IP寄存器初始化,AT89S51的两个外中断两个外中断请求为高优先级,其他中断请求为低优先级。(1)用位操作指令)用位操作指令SETB PX0SETB PX0;外中断;外中断0 0设置为高优先级设置为高优先级SETB PX1SETB PX1;外中断;外中断1 1设置为高优先级设置为高优先级CLR PSCLR PS;串行口设置为低优
23、先级;串行口设置为低优先级CLR PT0CLR PT0;定时器;定时器/ /计数器计数器T0T0为低优先级为低优先级CLR PT1CLR PT1;定时器;定时器/ /计数器计数器T1T1为低优先级为低优先级 (2)用字节操作指令)用字节操作指令MOV IPMOV IP,#05H#05H27奢袋吴策粟谎粟瓦拘苞灰驼罕善划飘纸碴秘豢吧贤丽寂勾彩洼斋杂俗策居一章中断系统一章中断系统275.4响应中断请求的条件响应中断请求的条件中断请求被响应,必须满足以下必要条件:必须满足以下必要条件:(1)总中断允许总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。(2)该中断源发出中断请求发出中断请求,即
24、对应的中断请求标志为对应的中断请求标志为“1”。(3)该中断源的中断允许位中断允许位EA=1,即该中断被允许。(4)无同级无同级或更高级中断更高级中断正在被服务。当CPU查询到有效的中断请求时,在满足上述条件时,紧接着就进行中断响应。28碑婆披堕羔竹秃堵曳订抄揽菌欲鱼豪卜凉诀鸦奔弗拴拒苛填幕脉投必吵有一章中断系统一章中断系统28中断响应的过程:中断响应的过程:首先由硬件自动生成一条长调用指令自动生成一条长调用指令“LCALLaddr16”。就是程序存储区中相应的中断入口地址相应的中断入口地址。例如,例如,对于外部中断1的响应,硬件自动生成的长调用指令为LCALL0013H首先将程序计数器PC的
25、内容的内容压入堆栈压入堆栈以保护断点,再将中断入口地址装入中断入口地址装入PC,使程序转向响应中断请求的中断入口地址。各中断源服务程序的入口地址入口地址,如表5-2所示。29邻涎阳柞矿彪悦珊歉窃灼验涎怒庸葛楞权火闲借鳞惯懊氰钻壤摹希涂抉箔一章中断系统一章中断系统29表表5-2 5-2 中断入口地址表中断入口地址表 两两个个中中断断入入口口间间只只相相隔隔8字字节节,难以安放一个完整的中断服务程序。因此,通通常常在在中中断断入入口口地地址址处处放放置置一一条条无无条条件转移指令件转移指令,使程序执行转向中断服务程序入口。30顺砍握足篓范壮奴陌女耗龚汾己赐迪探榨混趣细驹导爸密谐荐医纸爱恒升一章中断
26、系统一章中断系统30中断响应是有条件的,当遇到下列三种情况三种情况之一时,中断响应被封锁:(1)CPU正在处理同级或更高优先级正在处理同级或更高优先级的中断。(2)所查询的机器周期不是当前正在执行指令的最后不是当前正在执行指令的最后一个机器周期一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性指令执行的完整性。(3)正在执行的指令是RETI或是访问IE或IP的指令。因为按照AT89S51中断系统的规定,在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。31浙泥何秀判劲班睁清衔
27、竖缝凛滁型惜扰热卫肌蝎伸篷患京乓寨烬陪冠鲤鸳一章中断系统一章中断系统315.5外部中断的响应时间外部中断的响应时间使用外部中断外部中断时,需考虑从外部中断请求到转向中断入外部中断请求到转向中断入口地址所需的时间口地址所需的时间。外部中断的最短最短响应时间为响应时间为3个机器周期个机器周期。其中中断请求标志位查询占标志位查询占1个机器周期个机器周期,而这个机器周期恰好处于指令的最后一个机器周期。在这个机器周期结束后,中断即被响应,CPU接着执行一条硬件子程序调用指令硬件子程序调用指令LCALL到相中断服务程序入口,需要需要2个机器周期个机器周期。外部中断响应的最长最长时间为时间为8个机器周期个机
28、器周期。在CPU进行中断标志查询时,刚好才开始执行RETI或访问IE或IP的指令,需执行完指令再继续执行一条指令后,才响应中断。32探磊惭倒篱嗽济贺娟茹展堤曹应炽塞钢撤锣桂只窗玛拾螺痕共堤儿粕扫朵一章中断系统一章中断系统32执行RETI或访问IE或IP的指令,最长需要2个机器周期个机器周期。接着再执行一条指令,最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个个机器周期机器周期。再加上硬件子程序调用指令LCALL的执行,需要2个个机器周期机器周期,所以,外部中断响应的最长时间为8个机器周期。如果已经在处理同级或更高级中断处理同级或更高级中断,外部中断请求的响应时间取决于正在执行的中断服
29、务程序的处理时间,这种情况下,响应时间就无法计算了。这样,在一个单一中断单一中断的系统里,AT89S51单片机对外部中断请求的响应时间总是在38个机器周期个机器周期之间。33朵芥虎掂崎无饵坠皱人咙廷鳞逞措阁磁卒柳邮呢蔡廖汲趾迈裸撼捉歼折盆一章中断系统一章中断系统335.6外部中断的触发方式选择外部中断的触发方式选择两种触发方式:电平触发方式和跳沿触发方式。5.6.1电平触发方式电平触发方式外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入引脚的电平变化而变化。在中断服务程序返回之前中断服务程序返回之前,外中断请求输入必须无效外中断请求输入必须无效(即外部中断请求输入已由低电平
30、变为高电平),否则会再次响应中断。所以本方式适合于适合于外部中断以低电平输入以低电平输入且中断服务程序能清除外部中断请求源清除外部中断请求源(即外中断输入电平又变为高电平)的情况。34企砰椎绚寻振怨蛆俭起骄狼挫潍鹊捏苯哉忠镐辽步吻诲兔溅测练颅什洛儡一章中断系统一章中断系统345.6.2跳沿触发方式跳沿触发方式外部中断申请触发器能锁存外部中断输入线上的锁存外部中断输入线上的负跳变负跳变。即使不能响应,中断请求标志不丢失。相继连续两次采样,一个机器周期为高,下一个机器周期采样为低,则中断申请触发器置1,直到CPU响应此中断时,才清0。输入的负脉冲宽度至少保持12个时钟周期,才能被采样到。适合于以负
31、脉冲形式输入的外部中断请求。5.7中断请求的撤销中断请求的撤销某个中断请求被响应后,就存在着一个中断请求的撤销问题。35师汹荆诅署丽邯摄膜靖铀辛亦愁婴广叭摄沁句吭慷灰茁铭噬颈未雇歪毡攒一章中断系统一章中断系统351定时器定时器/计数器中断请求的撤销计数器中断请求的撤销硬件会自动把中断请求标志位(TF0或TF1)清0,自动自动撤销撤销。2外部中断请求的撤销外部中断请求的撤销(1)跳沿方式外部中断请求的撤销)跳沿方式外部中断请求的撤销包括两项:中断标志位清中断标志位清0和外中断信号的撤销外中断信号的撤销。中断标志位清中断标志位清0是在中断响应后由硬件自动完成的。外中断请求信号的撤销外中断请求信号的
32、撤销,由于跳沿信号过后也就消失了,自动撤销。36倾语馒瘩兽铱藏擦虽进卷撅噬卢葬洗社勺犬哉鸯吴忌掇琅状妖宏晶盯谬拯一章中断系统一章中断系统36(2)电平方式外部中断请求的撤销)电平方式外部中断请求的撤销电平方式外中断请求的撤销,其中中断请求标志自动撤电平方式外中断请求的撤销,其中中断请求标志自动撤销,但中断请求信号的低电平可能继续存在,为此,除了销,但中断请求信号的低电平可能继续存在,为此,除了标志位清标志位清“0”之外,还需在中断响应后之外,还需在中断响应后把中断请求信号输把中断请求信号输入引脚从入引脚从低电平低电平强制改变为强制改变为高电平高电平,如,如图图5-8所示所示。37图5-8电平方
33、式的外部中断请求的撤销电路愚私滞驮祥持鞭亩混桃苏巨灭拐嘱绸译修宛所适捆葬外霹袜磺痪护蝎贡囚一章中断系统一章中断系统37由图5-8,用D触发器锁存触发器锁存外来的中断请求外来的中断请求低电平低电平,并通过D触发器的输出端Q接到(或)。所以,增加的D触发器不影响中断请求。中断响应后,利用D触发器的SD端接AT89S51的P1.0端。因此,只要P1.0端输出一个负脉冲就可以使端输出一个负脉冲就可以使D触发器触发器置置“1”,撤销低电平的中断请求信号。负脉冲负脉冲可在中断服务程序中增加如下指令:ORLP1,#01H;P1.0为为“1”ANLP1,#0FEH;P1.0为为“0”ORLP1,#01H;P1
34、.0为为“1”38说谈羊檬磋腋到挽从埃镀翘男俱弊宋乙踞滋亦录埔扭洱虎奏墩碳筛屠年姥一章中断系统一章中断系统383串行口中断请求的撤销串行口中断请求的撤销响应串行口的中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位,以判定是接收操作判定是接收操作还是发送操作还是发送操作,然后才清除。所以串行口中断请求的撤销只能使用只能使用软件软件的方法的方法,在中断服务程序中进行,即用如下指令在中断服务程序中对串行口中断标志位进行清除:CLRTI;清;清TI标志位标志位CLRRI;清;清RI标志位标志位5.8中断服务子程序的设计中断服务子程序的设计中断系统的运行必须与中断服务子程序配合才能
35、正确使用。设计中断服务子程序需要首先明确以下几个问题。39材口乍雄死企靴酝侥愧驱技效辨脱多鹰炉芍倍纺憋纂沦胶碍九炸勃向报影一章中断系统一章中断系统391中断服务子程序设计的任务中断服务子程序设计的任务任务有下列4条:(1)设置中断允许控制寄存器设置中断允许控制寄存器IE,允许相应的中断请求源中断。(2)设置中断优先级寄存器设置中断优先级寄存器IP,确定所使用的中断源的优先级。(3)若是外部中断源若是外部中断源,还要设置中断请求的触发方式触发方式决定采用电平触发方式还是跳沿触发方式。(4)编写中断服务子程序编写中断服务子程序,处理中断请求。40鄂祖氰谚匠汛瘴键仁劳模枷茨骋伪帆民狮厌罢练邪棋抵项贺
36、是虱切蚀示桩一章中断系统一章中断系统40前3条一般放在主程序的初始化程序段中。【例【例5-35-3】假设允许外部中断外部中断0中断中断,设定为高级高级中断,采用跳沿触发方式,其他中断源为低级中断。初始化程序如下:SETBEA;EA位置1,总中断开关位开放SETBET0;ET0位置1,允许外部中断0产生中断SETBPX0;PX0位置1,外部中断0为高优先级中断SETBIT0;IT0位置1,外部中断0为跳沿触发方式41颁泰械钓琉惫腐张挂旺在俩赣美膘蝇罐娥哎沃寺额酒陨坪之钎古痕踊天盂一章中断系统一章中断系统412采用中断时的主程序结构采用中断时的主程序结构程序必须先从主程序起始地址主程序起始地址00
37、00H执行。所以,在在0000H起始地址的几个字节中,用无条件转移指令起始地址的几个字节中,用无条件转移指令,跳向主程序。另外,各中断入口地址之间依次相差8字节,中断服务子程序稍长就超过8字节,这样中断服务子程序就占用了其他的中断入口地址,影响其他中断源的中断处理。为此,一般在进入中断后,用一般在进入中断后,用一条无条件转移指令一条无条件转移指令,把中断服务,把中断服务子程序子程序跳转到跳转到远离其他中断入口的入口地址处。远离其他中断入口的入口地址处。42主爸专砍委涸论挽骚舞谚懦黎桥锻羊糜沂纠廖娱救镶蛰莹兽爆铣款抖宁苯一章中断系统一章中断系统42常用的主程序结构主程序结构如下:ORG0000H
38、LJMPMAINORGX1X2X3X4H;X1X2X3X4H为某中断源的中断入口LJMPINT;INT为某中断源的中断入口标号ORGY1Y2Y3Y4H;Y1Y2Y3Y4H为主程序入口MAIN:主程序INT:中断服务子程序注意:注意:如果有多个中断源,就有多个“ORGX1X2X3X4H”的入口地址,多个“中断入口地址”必须依次由小到大排列必须依次由小到大排列。主程序MAIN的起始地址Y1Y2Y3Y4H,根据具体情况来安排。43计谗渭良苫咬揩冷续猫谐衙芜苍烦瞩挺茨桑淤拭扮广泻郎雷您毛沏订贵瓷一章中断系统一章中断系统433中断服务子程序的流程中断服务子程序的流程中断服务子程序的基本流程如图5-9所示
39、。下面对有关中断服务子程序执行过程中的一些问题进行说明。44图5-9中断子服务程序的基本流程键娇驻畴濒撂定搐谊电掀筷恰绪异鹃鹤梁就耗节袍泞瘴乾固吐慎钦威赴辗一章中断系统一章中断系统44(1)现场保护和现场恢复)现场保护和现场恢复现场是指单片机中某些寄存器和存储器单元中的数据或状态。为使中断服务子程序的执行不破坏这些数据或状态,因此要送入堆栈保存起来,这就是现场保护现场保护。现场保护现场保护一定要位于中断处理程序的位于中断处理程序的前面前面。中断处理结束后,在返回主程序前,则需要把保存的现场内容从堆栈中弹出恢复原有内容,这就是现场恢复现场恢复。现场恢复现场恢复一定要位于中断处理的中断处理的后面后
40、面。AT89S51的堆栈操作指令:“PUSHdirect”和“POPdirect”,是供现场保护和现场恢复使用的。要保护哪些内容,应根据具体情况来定。45霓坟绅誓拈辣议怪部芥砌宾昭隧秃当思打辛宴吗拯仗差急挣殉粟杉涩恶煞一章中断系统一章中断系统45(2)关中断和开中断)关中断和开中断现场保护前现场保护前和现场恢复前现场恢复前关中断,是为防止此时有高一级的中断进入,避免现场被破坏。在现场保护和现场恢复之后的开中断在现场保护和现场恢复之后的开中断是为下一次的中断做好准备,也为了允许有更高级的中断进入。这样,中断处理可以被打断,但原来的现场保护和现场恢复不允许更改,除了现场保护和现场恢复的片刻外,仍然
41、保持着中断嵌套的功能。但有时候,一个重要的中断,必须执行完毕,不允许被但有时候,一个重要的中断,必须执行完毕,不允许被其他的中断嵌套。其他的中断嵌套。可在现场保护前先关闭总中断开关位,待中断处理完毕后再开总中断开关位。这样,需把图5-9中的“中断处理”步骤前后的“开中断”和“关中断”去掉。46榷闹誓弯秘轰枝滞买谜礁轿任挂体勤搞惧窒而恋栏喳首奖始惊用英毡档扮一章中断系统一章中断系统46(3)中断处理)中断处理应用设计者根据任务的具体要求,来编写中断处理部分的程序。(4)中断返回)中断返回中断服务子程序最后一条指令必须是返回指令最后一条指令必须是返回指令RETI。CPU执行完这条指令后,把响应中断
42、时所置把响应中断时所置1的不可寻址的不可寻址的优先级状态触发器清的优先级状态触发器清0,然后从堆栈中弹出栈顶上的两个字节的断点地址送到程序计数器PC,弹出的第一个字节送入PCH,弹出的第二个字节送入PCL,从断点处重新执行主程序。47总母谭狞讨喘血七堰芬步邯旋样劈洗粪汗疗营梳顷骤抨录酵蔽梳狼龄恐铃一章中断系统一章中断系统47【例【例5-4】根据图5-9流程,编写中断服务程序。设现场保护只将PSW寄存器和累加器A的内容压入堆栈中保护。一个典型的中断服务子程序如下:INT:CLREA;CPU关中断PUSHPSW;现场保护PUSHAccSETB EA;总中断允许中断处理段中断处理段CLREA;关中断
43、POPAcc;现场恢复POPPSWSETBEA;总中断允许RETI;中断返回,恢复断点48析寨鸭甘烯遗掏郸力酶删枫爸遥职泰吼唉信瞻蝉所然柱荒嚎潮程投祷脸蜜一章中断系统一章中断系统48上述程序几点说明几点说明:(1)本例的现场保护假设仅仅涉及PSW和A的内容,如有其他需要保护的内容,只需在相应位置再加几条PUSH和POP指令即可。注意,堆栈的操作是先进后出。(2)“中断处理程序段”,设计者应根据中断任务的具体要求,来编写中断处理程序。(3)如果不允许被其他的中断所中断,可将“中断处理程序段”前后的“SETBEA”和“CLREA”两条指令去掉。(4)最后一条指令必须是返回指令最后一条指令必须是返回
44、指令RETI,不可缺少,CPU执行完这条指令后,返回断点处,重新执行被中断的主程序。49块刁搂功到锋确充泅拓优专卧劫罐万困起定玫档戈桌严瞪擞卖威夕钓洼型一章中断系统一章中断系统495.9多外部中断源系统设计多外部中断源系统设计实际的应用中,两个外部中断请求源往往不够用两个外部中断请求源往往不够用,需对外部中断源进行扩充,如图5-10所示。系统有5个外部中断请求个外部中断请求源源IR0IR4,高电平有效。最高级的请求源IR0直接接到AT89S51的一个外部中断请求输入端,其余4个请求源IR1IR4通过各自的OC门(集电极开路门)连到AT89S51的另一个外中断源输入端,同时还连到P1口的P1.0
45、P1.3脚,供AT89S51查询。图5-10所示所示电路,除了IR0优先权级别最高优先权级别最高外,其余其余4个外个外部中断源部中断源的中断优先权取决于查询顺序取决于查询顺序,中断优先权的高与低,取决于查询顺序。50蔷颊朔蒲烈锣返称田马撞烙街博肿孟垮膏被絮野戴隶姓皱孵贰门雨公锻起一章中断系统一章中断系统5051图图5-10中断和中断和查询查询相相结结合的多外部中断合的多外部中断请请求源系求源系统统产凰叭臼罢枕诚椿窝刀孔计鬼细扁推裙彝蚊旁剧盂侧计塌巨嚼峦婶赋涩靠一章中断系统一章中断系统51假设图图5-10中的4个外设中有一个外设提出高电平有效的中断请求信号,则中断请求通过4个集电极开路OC门的输
46、出公共点,即脚的电平就会变低。究竟是哪个外设提出的请求,要通过程序查询通过程序查询P1.0P1.3引脚上的逻辑引脚上的逻辑电平电平来确定。本例假设某一时刻只能有一个外设提出中断请求,并设IR1IR4这4个中断请求源的高电平可由相应的中断服务子程序清“0”,则中断服务子程序如下:ORG0013H;INT1*的中断入口的中断入口LJMPINT1ORG0100H52性割邵呐重臆题秸哪篇建埠信阳读臃驹涎猛违咙绥骂嚣戚斯苹足螟胺羡管一章中断系统一章中断系统52INT1:PUSH PSW;保护现场PUSH AccJBP1.0,IR1;如P1.0为高,则IR1有请求,;跳IR1处理JBP1.1,IR2;如P
47、1.1为高,则IR2有请求,;跳IR2处理JBP1.2,IR3;如P1.2为高,则IR3有请求,;跳IR3处理JBP1.3,IR4;如P1.3为高,则IR4有请求,;跳IR4处理INTIR:POPAcc;恢复现场POPPSWRETI;中断返回53僳函皂长妊拭拷旋撒叫受栓匹霸乱喉庭拆欺辨妻嗓熔匠搐审诲抓詹丘嫌签一章中断系统一章中断系统53IR1:AJMPINTIR ;IR1处理完,跳INTIR处执行IR2:AJMP INTIR;IR2处理完,跳INTIR处执行IR3:AJMP INTIR;IR3处理完,跳INTIR处执行IR4:AJMP INTIR;IR4处理完,跳INTIR处执行查询法扩展外部中断源比较简单,但是扩展的外部中断源个数较多时,查询时间稍长。54IR1的中断处理子程序IR2的中断处理子程序IR3的中断处理子程序IR4的中断处理子程序桂闪果笼邑政宗蛮填狼优摹并用辈眨苍详座织容扳淆布蛙迭幢否桔旱钵蔗一章中断系统一章中断系统54