收藏 分享(赏)

盛贤君单片机原理及应用第3章中断.ppt

上传人:HR专家 文档编号:5954573 上传时间:2019-03-22 格式:PPT 页数:35 大小:413.50KB
下载 相关 举报
盛贤君单片机原理及应用第3章中断.ppt_第1页
第1页 / 共35页
盛贤君单片机原理及应用第3章中断.ppt_第2页
第2页 / 共35页
盛贤君单片机原理及应用第3章中断.ppt_第3页
第3页 / 共35页
盛贤君单片机原理及应用第3章中断.ppt_第4页
第4页 / 共35页
盛贤君单片机原理及应用第3章中断.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、第3章 MCS-51的中断系统及应用,3.1 中断的基本概念 3.2 MCS-51的中断源 3.3 中断的控制 3.4 中断查询与响应 3.5 外部中断 3.6 中断请求的撤除 3.7 中断响应时间 3.8 外部中断编程练习,中断:CPU执行正常程序时,系统中出现特殊请求(中断申请),CPU暂时中止当前的程序,转去处理更紧急的事件(执行中断服务程序),处理完毕后,CPU自动返回原程序(中断返回)的过程。,3.1 中断的基本概念,执行 主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,中断的作用,提高CPU的工作效率; 可使多项任务共享一个资源(CPU); 可及时处理

2、突发事件,实现分时操作、实时处理; 解决CPU与外设之间的速度矛盾,使CPU高效率地对多个外部设备进行管理。,3.1 中断的基本概念,中断应用举例:打印机操作,CPU采用查询方式为打印机服务,3.1 中断的基本概念,3.2.1 MCS-51的中断系统结构,MCS-51有5个中断源:外部中断(2个)、定时器中断(2个)和串行口中断。,中断标志 寄存器,中断允许寄存器IE,3.2 MCS-51的中断源,返回,3.2.2 中断标志寄存器,1、控制寄存器TCON (SFR地址:88H),2、串行口控制寄存器SCON (SFR地址:98H),3.2 MCS-51的中断源,返回,3.3.1 中断的开放和关

3、闭控制,EA: 总允许位(一级控制) ES: 串行口中断允许位(二级控制)ES=1时,允许RI、TI引发中断,否则禁止串口中断。 ET1、ET0:定时器T1、T0允许位(二级控制) EX1、EX0:外中断/ int1、/int0允许位(二级控制) “1”允许;“0”禁止中断。,3.3 中断的控制,由中断允许寄存器IE实现两级控制(SFR地址: 0A8H),返回,结构图,例如,要允许外部中断INT0开放,则可用下列指令:SETB EA SETB EX0,或mov IE,#81H,PS:串行口中断优先级设定位; PT1、PT0:定时器T1、T0中断优先级设定位; PX1、PX0:外中断 int1、

4、0中断优先级设定位;=1: 高优先级,=0:为低优先级。,3.3.2 中断的优先级控制,由中断优先级寄存器IP实现两级控制(SFR地址: 0B8H),3.3 中断的控制,返回,结构图,由于IP寄存器的设定,将5个中断源分为两个级别。对同时发生多个中断申请时,中断优先级的处理将遵循下面基本原则:,3.3.3 中断的优先级排队,不同优先级的中断同时申请(很难遇到)先高后低 相同优先级的中断同时申请(很难遇到)按序执行(见图) 正处理低优先级中断又接到高级别中断高打断低 正处理高优先级中断又接到低级别中断高不理低,3.3 中断的控制,举例:如何改变中断源的优先级顺序,从中断系统的硬件结构图可以清楚地

5、看出同一级别中5个中断源的查询顺序。很明显,要改变这种顺序只能通过IP的设置。例如:要想将串行口的级别设为最高时,将IP中的PS置1。setb ip.4或 mov 0b8h,#10h,IP寄存器,3.3 中断的控制,3.4 中断查询与响应,在每个机器周期中,所有的中断源都要按照其顺序检查一遍。到S6状态时,就查找到所有被激活的中断申请并排好优先权。在下一个机器周期的S1状态,只要不受阻断,就开始响应高级中断。如果发生下列情况,中断将被阻止:1、同级或高级中断正在执行时;2、当前的机器周期不是指令的最后一个机器周期;3、CPU正在执行的指令是RETI或访问IE、IP寄存器时, CPU是不会响应中

6、断,而且要等到该指令的下一条指令执行完后中断才能响应。,3.4.1 中断的查询,返回,当满足中断条件时 CPU查询到某一中断源后,使相应的“优先级激活触发器”置位用以阻断同级或低级中断。 在硬件控制下,自动将当时PC的内容(断点地址)进栈,以备返回; 然后将相应的中断矢量装入PC,使CPU转向对应的中断服务程序。 中断服务程序最后一条指令是RETI,它将清除“优先级激活触发器”,从堆栈中弹出断点地址并装入PC中,使CPU回到原来主程序断点处继续运行。,3.4 中断查询与响应,0000H,0003H,000BH,0013H,001BH,0023H,3.4.2 中断的响应过程,3.5 外部中断,在

7、MCS-51引脚上有/INT0、/INT1两个外部的中断输入。作为外部事件的触发信号,其信号必须满足一定的要求,否则将不能正确地引发中断。,TCON (SFR地址:88H),CPU在每个机器周期的S5P2期间对它们进行一次检测。 系统设定了两种触发方式: 下降沿触发、低电平触发,由控制寄存器TCON中的IT0、IT1位来确定。,IT=1时,下降沿触发;IT=0时,低电平触发。,返回,1、边沿触发方式:在相邻的两个机器周期,如果第一次采集是高电平,第二次采集是低电平时,则TCON中的标志IE0或IE1置位。所以,在边沿触发方式时:外部设备发出的边沿信号(高电平和低电平)的时间应大于一个机器周期,

8、否则信号将可能漏检。2、电平触发方式:CPU在每个机器周期的S5P2期间采集到INT0或INT1的引脚为低电平时将激活标志IE0或IE1。所以在这种触发方式中,外部的低电平至少应保留一个机器周期。,MCS51对外部中断触发信号的要求,3.5 外部中断,如果外电路的信号不能满足要求,可使用触发器等硬件电路解决。,3.6 中断请求的撤除,以外中断电平触发为例: 当CPU响应该中断进入到服务程序后,在执行RETI指令返回主程序前,必须将外部的低电平撤掉,否则当CPU返回主程序后,会因为外部过长的低电平信号而使其再次进入中断,这样不仅造成一次多余的错误操作,而且使主程序无法正常运行。 同理,其它中断源

9、也存在类似的问题。所以在使用中断时必须清楚在返回主程序前时,其中断请求(标志)是否要撤除、如何撤除等问题。,一种解决外部电平请求信号过长的硬件方案,此电路还可以解决外部脉冲过窄,不能正确引发中断的情况。,中断服务程序,撤消,“1”,“1”,申请,3.6 中断请求的撤除,解决外部中断信号过长的软件方案,在中断处理程序的最后、返回主程序之前,对外中断信号进行判断、等待,只有当外信号消失后再返回主程序; 软件方案的一优点:简化硬件电路;缺点:降低了程序的运行速度,同时不能解决外部中断信号过窄的问题。 具体问题具体对待,选用哪种方案要根据具体情况综合考虑。,3.6 中断请求的撤除,MCS-51的中断请

10、求的撤除方法,注:此表指使用中断服务程序来处理中断事件时的情况。 如果采用查询的方法来处理事件时,都需要软件来清除标志。,3.6 中断请求的撤除,3.7 中断响应时间(以INTx为例),每个机器周期的S5P2时刻,INTx引脚的电平被锁存到内部寄存器中,待下一个周期查询。1、最短时间:中断请求有效,查询后在下一个周期便开始执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔3个机器周期。,返回前一次,中断响应时间:从中断请求有效(外部中断请求标志置1)到转向中断入口地址所需要的响应时间,2、最长时间:如果中断信号发生在

11、前面所说的3种情况时,响应时间就要变长:(1)响应时间取决于正在执行的同级或高级中断的执行时间;(2)指当前CPU执行的指令是多周期指令,如乘除法指令(4个周期),最坏情况,还要等3个周期。这样响应周期变为3+3=6个周期;(3)CPU当前执行的指令是RETI或访问IE、IP寄存器时,本指令(1个周期)没有响应,且下一条指令执行完后才能响应,这样附加的等待时间最长不会超过5个周期(1+4)。整个响应为5+3=8个周期。这样,如果不考虑第1种情况,整个中断响应的时间范围应当是: 38个机器周期。,3.7 中断响应时间(以INTx为例),3.8 外部中断编程练习,【例】电路如图。要求编程实现:主程

12、序将P1口的8个LED从上到下循环显示(间隔时间约1S ),中断时(INT0)使8个LED同时闪烁5次(间隔时间约1S,设单片机晶振为6MHz)。,+5V,INT0,P1.0,MCS-51,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7,74LS245,R8,(1)主程序ORG 0000HLJMP START START:MOV IE,#10000001B;允许INT0中断MOV IP,#00000001B;INT0中断优先MOV TCON,#01H ;INT0边沿触发方式MOV SP,#70HMOV A,#80H ;左移初值 LOOP1:RL AMOV P1,ACALL

13、 DELAY;延时1sAJMP LOOP1,程序可分为3个模块:主程序、中断服务程序、延时子程序,3.8 外部中断编程练习,ORG 0003HLJMP EXT0 EXT0: PUSH ACCPUSH PSWSETB RS0CLR RS1MOV A,#0FFH;为使P1全亮MOV R2,# ;闪烁5次 LOOP3:MOV P1,ACALL DELAY;延时1sCPL ADJNZ R2, LOOP3 POP PSWPOP ACCRETI,10,3.8 外部中断编程练习,(2)中 断 服 务 程 序,(3)延时子程序(约1s) DELAY:MOV R5,#5D1:MOV R6,#200D2:MOV

14、R7,#250D3:DJNZ R7,D3;1msDJNZ R6,D2;约0.2sDJNZ R5,D1;约1sRET,3.8 外部中断编程练习,【例】故障诊断处理。当系统无故障时,4个故障源输入端全为低电平,显示灯全熄灭,只有当某部分出现故障,其相应的输入线才由低电平变为高电平从而引起中断。中断服务程序的任务就是判定故障源,并进行相应的灯光显示。(外中断扩展问题),程序编制如下:,ORG 0000H AJMP MA1 ;转向主程序ORG 0003HAJMP SERVE ;转向中断服务程序 MA1: MOV P1,#55H ;全部指示灯灭,并为读入故障信号作准备SETB IT0 ;选取外中断为脉冲

15、触发方式SETB EX0 ;允许外中断0中断SETB EA ;开CPU中断 LOOP: MOV A,P1 ;ANL A,#55H ;JNZ LOOP ;有故障信号转LOOPMOV P1,#55H ;无故障信号灯全灭,并为读入故障信号作准备SJMP LOOP ;等待中断,SERVE:JNB P1.0,L1;中断服务程序,查询故障源,若有故障,将;相应的灯点亮SETB P1.1SJMP L2 L1: CLR P1.1 L2: JNB P1.2,L3SETB P1.3SJMP L4 L3: CLR P1.3 L4: JNB P1.4,L5SETB P1.5SJMP L6 L5: CLR P1.5 L

16、6: JNB P1.6,L7SETB P1.7SJMP L8 L7: CLR P1.7 L8: RETI,学习中断技术,要重点理解的内容 中断矢量的含义以及在ROM中的地址单元; 中断发生的条件(5个中断源); CPU如何响应中断(转到中断服务程序)? 与查询方式相比,中断方式的优点是什么? 为什么中断调用后,会自动返回原程序? 编制中断服务程序要注意什么问题? 中断与子程序调用的区别是什么?,在CPU已经开放了外部中断允许的前提下: 在INT0/INT1引脚输入一个负脉冲或低电平, TCON寄存器中的IE0/IE1标志位自动变“1”, CPU检测到IE0/IE1变“1”后,将自动产生指令:L

17、CALL 0003H(/0013H)执行中断服务程序, 并将IE0/IE1标志位自动清“0”,以备下次申请。,外部中断(INT0,INT1)申请及CPU的处理过程:,中断与子程序调用区别在于: (1) 中断出现是随机的,可能出现,也可能不出现,更不知道什么会时候出现,即被中断程序的断点无法预测。而子程序的执行由调用指令LCALL或ACALL实现,只要满足特定条件,一定会发生,断点由程序员控制。,(2)中断服务程序入口地址(也称为中断向量)由硬件决定,与CPU类型有关,不能更改。而子程序入口地址由用户安排。,(3) 子程序中可以任意调用另一子程序,但中断有优先级,同级或低级中断不能打断正在执行的

18、同级或更高优先级中断服务程序。,(4) 尽管子程序返回指令RET和中断返回指令RETI均会将栈顶两个字节信息装入PC,恢复断点,但RETI还清除相应中断优先级触发器,因此中断返回指令不可用子程序返回指令RET代替。,3.2.4 MCS-51扩展外部中断请求输入口,8051单片机只提供了两个外部中断请求输入端,如果需要使用多于两个的中断源,就必须扩展外部中断请求输入口。1定时器/计数器用于扩展外部中断请求输入口8051单片机有两个定时器/计数器,它们作为计数器使用时,计数输入端T0(或T1)发生负跳变将使计数器加1,利用此特性,适当设置计数初值,就可以把计数输入端T0(或T1)作为外部中断请求输

19、入口。其特点是以占用内部定时中断为代价的。中断服务程序的入口地址仍然为000BH或001BH。,2查询方式扩展外部中断请求输入口把多个中断源通过硬件(如与非门)引入外部中断输入端,同时又连到某个I/O口。当有中断源申请中断时,在中断服务程序中通过软件查询可确定哪一个是正在申请的中断源,其查询的次序可由中断优先级决定。其特点是中断响应速度较慢。 适用于外部中断源较多的场合。下页例题中,我们采用74LS21A四输入端双与门实现该任务。 3使用专用芯片扩展外部中断请求输入口当外部中断源较多,同时又要求中断响应速度很高时,查询方式扩展外部中断请求输入口的方法很难满足要求。这时可以使用专用接口芯片进行外

20、部中断请求输入口的扩展。下面例题中,我们采用74LS21A四输入端双与门实现该任务。,查询方式扩展外部中断请求输入口的电路实现:,74ls21的逻辑表是:当输入全高时输出为高,任一输入低则输出就为低。 电路分析:当没有按键按下时,由于上拉电阻的作用,74ls21输出高,使INT0口为高电平,此时中断程序不被触发。如果任何一个按键按下,则74ls21输出低电平,触发中断程序。 中断程序设计为:如果程序设计检测次序是P1.0、P1.1、P1.2、P1.3口,优先级即按顺序排列,如果同时有多个键被按下,可根据实际要求设定为1、仅仅只响应最优先中断;2、按优先级顺序依次执行各个中断。,设计程序如下:O

21、RG 0000H LJMP MAIN ORG 0003H ; 外部中断0中断服务入口地址LJMP INT ; 转中断服务ORG 0100H MAIN: SETB EA ; 开总中断允许SETB EX0 ; 开INT0中断SETB IT0 ; 下降沿有效 中断服务程序清单如下: INTI CALL D20 ; 延时去抖动MOV P1,#0FFH ;P1口送全1值(准双向口原因)MOV A, P1 ; 读P1口各引脚(设另四口未用)CJNE A, #0FFH,CLOSE ; 验证是否确实有键闭合AJMP INT0 ; 无键按下(按键时间过短)则退 ;出中断,CLOSE: JNB ACC.3, KEY 0 ; 查询0号键JNB ACC.2, KEY 1 ; 查询1号键JNB ACC.1, KEY 2 ; 查询2号键JNB ACC.0,KEY 3 ; 查询3号键INT0: RETIKEY 0: ; 7号键处理程序KEY 01: MOV A, P1 ; 再读P1口各引脚JNB ACC.0, FUNC71 ; 确认键是否释放RETIKEY 1: ; 其他键处理程序 D20: ; 20ms延时子程序 END,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报