资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,5,中断系统,5.1,中断的基本概念,5.2 MCS-51,的中断系统,5.3,中断系统的应用,1,5.1,中断的基本概念,5.1.1 CPU,与外设交换信息的方式,5.1.2,中断的概念,5.1.3,中断服务程序与子程序,2,CPU,与外设之间通过输入,/,输出接口(简称,I/O,接口)相连,通过接口传送数据、控制、状态等信息。,CPU,与外部设备交换信息的方式,无条件传送方式,条件传送方式(查询方式),中断方式,直接存储器存取(,DMA,),方式,查询,外设状态,准备就绪?,传送数据,Y,N,查询方式,分时操作,实时处理,5.1.1,CPU,与外部设备交换信息的方式,3,5.1.2,中断的概念,图示,看,书,继,续,看,书,电话铃响,记号,接,听,电,话,主,程,序,中,断,服,务,程,序,继,续,执,行,主,程,序,中断请求,响应中断,中断返回,断点地址,入口地址,4,中断,CPU,在执行程序的过程中,若有接到,中断请求,信号,在,条件允许,的情况下,,CPU,暂停其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,(,中断服务程序,),,等处理完毕后返回到被暂停的程序继续执行。,5,5.1.3,中断服务程序与子程序,调用,调用,主程序,返回,子程序,子程序入口,断点地址,1,断点地址,2,预先安排的,中断的发生是随机的!,START:MOV P1,#00H,ACALL DELAY,MOV P1,#0FFH,ACALL DELAY,AJMP START,6,5.2 MCS-51,中断系统,5.2.1,中断源,5.2.2,中断的控制,5.2.3,中断优先级管理,5.2.4,中断有关的寄存器,5.2.4,处理过程,7,MCS-51,单片机共有,5,个中断源:,外中断,2,个,:,INT0,、,INT1,由引脚,INT0,(,P3.2,)和,INT1,(,P3.3,)引入,低电平有效,或下降脉冲有效。,定时中断,2,个,:,T0,、,T1,无引入端,请求在芯片内部发生。以记数溢出信号作为中断请求。,串行中断,1,个,:,RI/TI,无引入端,请求在芯片内部发生。接收或发送完一帧串行数,据时,就产生一个中断请求。,5.2.1,中断源,8,中断请求标志,定时器控制寄存器,TCON,中的中断请求标志,IT0,、,IT1,:,外部中断,0,、,1,电平触发方式选择位。“,0”,低电平有效;“,1”,下降沿有效。,IE0,、,IE1,:,外部中断,0,、,1,中断请求标志。置位时有中断请求,中断响应后自动清零。,TF0,、,TF1,:,定时器,/,计数器,T0,、,T1,计数溢出中断请求标志。置位时有中断请求,中断响应后自动清零。,TCON,可位寻址。复位后,,TCON=00H,。,D7,D6,D5,D4,D3,D2,D1,D0,TF1,TF0,IE1,IT1,IE0,IT0,9,串行口控制寄存器,SCON,中的中断请求标志,TI/RI,:,串行口发送,/,接收中断请求标志。串行发送,/,接收完一帧后自动置位,请求中断。需要再次发送,/,接收时,应通过指令清零。,SCON,可位寻址。复位后,,SCON=00H,。,D7,D6,D5,D4,D3,D2,D1,D0,TI,RI,10,5.2.2,中断的控制,中断允许控制寄存器,IE,EA,:,CPU,中断允许控制位。,EA=1,,开,CPU,中断。,EX0,、,EX1=1,时,允许外部中断,0,、,1,中断。,ET0,、,ET1=1,时,允许,T0,、,T1,计数溢出中断。,ES=1,时,允许串行口发送,/,接收中断。,IE,可位寻址。复位后,IE=00H,,,禁止所有中断源中断。,D7,D6,D5,D4,D3,D2,D1,D0,EA,ES,ET1,EX1,ET0,EX0,总允许,源,允许,11,中断入口地址,中断入口地址,(,中断矢量,),是指中断服务程序的入口地址。,5,个中断源的中断入口地址,外部中断,0,定时器,T0,外部中断,1,定时器,T1,串行口,0003H,000BH,0013H,001BH,0023H,START:MOV P1,#00H,ACALL DELAY,MOV P1,#0FFH,ACALL DELAY,AJMP START,12,5.2.3,中断优先级管理,MCS-51,中断系统的,中断优先级,中断优先级(权)就是指当有多个中断源同时申请中断时,,CPU,所采取的响应顺序的原则。,MCS-51,单片机中断系统允许软件设置每个中断源为高优先级中断或低优先级中断,并可实现两级中断嵌套。,13,中断嵌套原则,高优先级中断可以中断低优先级中断,反之不能;,同级或,低优先级的中断源不能中断正在执行的中断服务程序。,中断优先级寄存器,IP,IP,可位寻址。复位后,,IP=00H,(,所有中断源均为低优先级)。,D7,D6,D5,D4,D3,D2,D1,D0,PS,PT1,PX1,PT0,PX0,14,自然优先级,若同一优先级中断源有多个同时申请中断,则,CPU,按自然优先级原则确定响应顺序。,外部中断,0,高,定时器,T0,外部中断,1,定时器,T1,串行口 低,自,然,优,先,级,15,5.2.4,中断有关的寄存器,对,4,个与中断有关的特殊功能寄存器:,TCON,、,SCON,、,IE,和,IP,中的相关位进行设置,可以实现对中断的控制。这,4,个,SFR,均可位寻址。复位后:,TCON=00H,;,IT0,、,IT1=0,,,电平触发!,IE=00H,;,禁止所有中断源中断!,IP=00H,;,所有中断源均为低优先级!,IP,IE,TCON,16,中断处理过程:,1),中断响应:中断程序入口地址,PC,,,转入中断服务。,2),中断处理:执行中断源所要求的程序段。,3),中断返回:执行,RETI,指令,堆栈断点地址,PC,,程序跳转回断点处执行。,RETI=RET,指令,+,通知,CPU,中断服务已结束,主,程,序,中,断,服,务,程,序,继,续,执,行,主,程,序,中断请求,响应中断,中断返回,断点地址,入口地址,5.2.5,中断处理过程,17,中断请求标志的撤除,中断响应后,,TCON,或,SCON,中的中断请求标志应及时清除。否则就意味着中断请求仍然存在。,1),、定时中断,:硬件自动撤除,2),、串行中断,:由软件方法撤除,串行中断的标志位是,TI,和,RI,,但对这两个中断标志不进行自动清,0,。所以串行中断请求的撤除也应使用软件方法,在中断服务程序中进行。需由用户完成。,2),、外部中断,:,外部中断的撤消包括两项内容:,(,1,)中断标志位的置“,0”,:中断响应后由硬件电路自动完成;,(,2,)外中断请求信号的撤消:随脉冲信号过后消失随即自动撤消。,D7,D6,D5,D4,D3,D2,D1,D0,TF1,TF0,IE1,IT1,IE0,IT0,18,5.3,中断系统的应用,开相应中断源的中断;(,IE),设定中断优先级;,(IP),若为外部中断,设定外部中断的触发方式。,中 断系 统初始化,D7,D6,D5,D4,D3,D2,D1,D0,TF1,TF0,IE1,IT1,IE0,IT0,例,CLR IT1,SETB PX1,SETB EX1,SETB EA,ANL TCON,,,#0FBH,ORL IP,,,#04H,MOV IE,,,#84H,IE,IP,TCON,19,例,1,:要求每次按动按键,使外接发光二极管,LED,改变一次亮灭状态。,1,)跳变触发:每次跳变引起一次中断请求。,解:,INT0,输入按键信号,,P,1.0,输出改变,LED,状态。,ORG0000H,;,复位入口,AJMP MAIN,ORG0003H,;,中断入口,AJMPPINT0,ORG0100H,;,主程序,MAIN,:,MOV SP,,,#40H,;,设栈底,SETBIT0,;负跳变触发中断,SETBEA,;,开总允许开关,SETBEX0,;开,INT0,中断,H,:,SJMPH,;,执行其它任务,ORG0200H,;中断服务程序,PINT0:,CPL P1.0,;,改变,LED,RETI,;,返回主程序,单片机,INT0,P,1.0,1,+5V,20,ORG 0000H,;,复位入口,AJMP MAIN,ORG0003H,;,中断入口,AJMP PINT0,ORG0100H,;,主程序,MAIN,:,MOV SP,,,#40H,;,设栈底,SETBEA,;,开总允许开关,SETBEX0,;开,INT0,中断,CLRIT0,;,低电平触发中断,H,:,SJMPH,;,执行其它任务,ORG0200H,;,中断服务程序,PINT0,:,CPL P1.0,;,改变,LED,WAIT,:,JNBP3.2,,,WAIT,;等按键释放,(,P3.2,即,INT0,),RETI,;,返回主程序,单片机,INT0,P,1.0,1,+5V,2,)电平触发,21,例,2,:设计一个外部中断应用系统。主程序将,P1,的,8,个,LED,作左移右移,中断时使,P1,的,8,个,LED,闪烁,5,次。,22,ORG 0000H,;主程序,LJMP MAIN,ORG 0003H,;外部中断,0,中断入口,LJMP INT0,MAIN,:,MOV SP,,,#30H,;,初始化,SETB IT0,;,INT0,为边沿触发,SETB EA,;开放中断,SETB EX0,SHIFT,:,MOV A,,,#0FEH,;左移初值,MOV R2,,,#8,;左移,8,次,SL,:,RL A,;左移一次,MOV P1,,,A,;,输出,LCALL DELAY,;延时,0.2,秒,DJNZ R2,,,SL,;左移,8,次?,MOV R2,,,#7,;右移,7,次,SR,:,RR A,;,右移一次,MOV P1,,,A,;输出,LCALL DELAY,;延时,0.2,秒,DJNZ R2,,,SR,;右移,7,次,SJMP SHIFT,23,INT0,:,PUSH ACC,;,中断服务程序,PUSH PSW,;,保护现场,SETB RS0,;,使用工作寄存器组,1,CLR RS1,MOV R2,,,#10,;,闪烁,5,次(亮、灭,10,次),MOV A,,,#00H,;使,LED,全亮的数据,LP,:,MOV P1,,,A,LCALL DELAY,CPL A,DJNZ R2,,,LP,POP PSW,POP ACC,;,恢复现场,RETI,;,中断返回,DELAY,:,MOV R5,,,#20,;,延时,0.2,秒子程序,D1,:,MOV R6,,,#20,;,10,毫秒,D2,:,MOV R7,,,#248,;,0.5,毫秒,DJNZ R7,,,$,DJNZ R6,,,D2,DJNZ R5,,,D1,RET,END,24,例,3,:通过,P1.0P1.7,控制发光二极管,输出两种节日灯,并利用外中断,P3.2,,在两种状态之间切换。要求:主程序中状态:亮,1,灯左移循环,中断程序中的状态:以,1,秒间隔,8,灯依次亮起,再依次熄灭,循环,3,次后返回。,25,例,2,通过,P1.0P1.7,控制发光二极管,输出两种节日灯,并利用外中断,P3.2,,在两种状态之间切换。要求:主程序中状态:亮,1,灯左移循环,中断程序中的状态:以,1,秒间隔,8,灯依次亮起,再依次熄灭,循环,3,次后返回。,程序如下:,ORG 0000H,LJMP MAIN,ORG0003H,;中断入口,LJMP0100H,ORG0030H,START,:,MOVSP,,,#60H,SETBIT0,;设定下跳有效,SETBEX0,;开中断,SETBEA,MOVIP,,,#01HMOVA,,,#01H,LOOP,:,MOVP1,,,A,RLA,LCALL DELAY,AJMP LOOP,26,中断服务程序:,ORG 0100H,PUSH ACC,CLR A,MOV R0,,,#00H,LOOP1,:,SETB C,RLC A,MOV P1,,,A,LCALL DELAY,JNB ACC.7,,,LOOP1,LOOP2,:,CLR C,RLC A,MOV P1,,,A,LCALL DELAY,JB ACC.7,,,LOOP2,INC R0,CJNE R0,,,#03H,,,LOOP1,POP ACC,RET,DELAY,:(略);,1,秒延时,27,
展开阅读全文