资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第六章 MCS-51的中断系统,61 中断的概念,1中断:,由于外界的事件的突然发生,中止当前程序的执行,转去执行外界事件处理程序,待外界事件处理程序执行完毕后,再继续执行被中止的程序。中断通常是一种硬件事件。,例:串行通讯一贞数据接收到事件,。,中断用途:,1)实时处理外界紧急事件。,2)分时操作,解决快速CPU与慢速外设之间的矛盾。,3)将若干任务按级别处理。,2中断源,请求中断的来源。,3中断级别,响应中断的优先顺序。,第六章 MCS-51的中断系统 61 中断的概念 1中断,1,4中断向量,由硬件提供的中断程序入口地址。,5中断响应,相当于完成两种操作:,1)执行一条 LCALL“中断入口地址”;,2)置位中断优先级触发器,用于阻挡同级或低级中断的响应。,6中断返回,中断服务程序的最后一条为 RETI 用于继续被中止的程序,复位中断优先级触发器,以便能够响应其他的中断。,4中断向量5中断响应6中断返回,2,62 MCS-51 的中断系统,1.中断系统结构,62 MCS-51 的中断系统 1.中断系统结构,3,2中断源,由图见六个中断源:IE0、TF0、IE1、TF1、RI+TI、TF2+EXF2。,出处:TCON、SCON。,TCON:,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,TI,RI,SCON:,3.外部中断触发方式控制,设置为下降沿触发方式,保证负脉冲宽度大于一个机器周期。,若采用低电平触发方式,必须保证低电平的持续时间小于中断服务程序执行时间,。,2中断源 由图见六个中断源:IE0、TF0、IE1、TF1,4,4中断的屏蔽与开放控制,通过IE的设置实现:,EA,-,ET2,ES,ET1,EX1,ET0,EX0,IE:,“1”开放。,“0”屏蔽。,5中断优先级确定,通过IP的设置实现两级优先级高级或低级。,IP:,-,-,PT2,PS,PT1,PX1,PT0,PX0,“1”高级。“0”低级。,4中断的屏蔽与开放控制 通过IE的设置实现:EA-ET,5,低级中断执行时,能被高级中断所中断,不能被同级中断所中断。,高级中断执行时,不能被任何中断所中断。,同级中断,同时申请中断,时,按以下顺序响应:,IE0TF0IE1TF1RI、TITF2、EXF2,6中断入口地址,IE0:0003H,TF0:000BH,IE1:0013H,TF1:001BH,RI、TI:0023H,TF2、EXF2:002BH,低级中断执行时,能被高级中断所中断,不能被同级中断所,6,7.中断的响应过程,遇下述三种情况将不能立即响应:,CPU正在处理相同的或更高优先级的中断;,响应中断过程:,3)正在执行的指令是RETI或是访问IE或IP的指令。CPU在执行RETI或访问IE、IP的指令后,至少需要再执行一条指令才会响应新的中断请求。,2)现行的机器周期不是所执行指令的最后一个机器周期;,1)置位中断优先级触发器。,2)由硬件产生子程序长调用(LCALL),转去执行中断服务程序。,3)在中断服务程序中,遇RETI指令后返回。(回到调用中断服务程序的下一条,指令处继续执行,同时复位中断服务程序。),7.中断的响应过程 遇下述三种情况将不能立即响应:响应中断,7,8外部中断响应时间,1),若中断未被任何条件阻止,最快响应时间为3个机器周期。,2)正执行同级或高级中断:,取决于中断服务程序执行时间。,3)执行不是RETI 或访问 IE、IP 的指令,现行机器周期是所执行指令的最后一,个机器周期:,仅需3个机器周期。,4)现行机器周期不是所执行指令的最后一个机器周期,且不是RETI或访问IE、,IP 的指令:,不超过,6,个机器周期。,5)正在执行的指令是RETI或访问IE、IP的指令:,不超过8个机器周期。,8外部中断响应时间 2)正执行同级或高级中断:3)执行不,8,63 中断系统的设计,1固定时间间隔的产生,利用T0、T1的方式2自动重装方式产生定时中断,在中断服务程序中累加中断次数达到固定的时间间隔,设置“定时时间到”标志。,例:,利用T0计数器工作于方式2,每到1 秒产生一“时间到”标志。(F,OSC,=12MHZ),MS50_BUFEQU30H,S1_BUFEQU31H,S1_LABBIT00H,ORG0000H,LJMPMAIN,ORG000BH,LJMPT0_SER,ORG0030H,MAIN:MOVSP,#0CFH,LCALL INIT_T0,M0:JNB S1_LAB,M0,CLR S1_LAB,LCALL TASK1,LCALL TASK2,LCALL ASK3,LJMP M0,63 中断系统的设计 1固定时间间隔的产生例:利用T0计,9,INIT:MOV TMOD,#02H,SETB TR0,MOV TH0,#06H,SETB ET0,SETB EA,MOV MS50_BUF,#0,MOV S1_BUF,#0,CLR S1_LAB,RET,T0_SER:PUSH PSW,PUSH ACC,INC MS50_BUF,MOV A,MS50_BUF,CLR C,SUBB A,#200,JC TS1,MOV MS50_BUF,#0,INC S1_BUF,MOV A,S1_BUF,CLR C,SUBB A,#20,JC TS1,MOV S1_BUF,#0,SETB S1_LAB,TS1:POP ACC,POP PSW,RETI,END,INIT:MOV TMOD,#02HMOV,10,说明:,1)利用T0、T1工作于方式2,最大定时中断间隔为0.256MS,要产生较大时,间间隔,需要累加中断次数较多。T2计数器工作于自动重装方式时,最,大定时中断间隔为65.536MS,可通过累加较少的中断次数达到较大的时,间间隔。,2)利用此方式可产生任意大的时间间隔。,说明:,11,2顺序控制灯光“跑龙”控制,灯光“跑龙”控制:,在环行布置的一圈灯中,每隔一定时间间隔、顺序点亮一 盏灯。,例:,编写一段程序实现:每隔0.1秒点亮一盏灯,硬件见下图。,MS50_BUFEQU30H,MS100_BUFEQU31H,MS100_LABBIT00H,ORG 0000H,LJMP MAIN,ORG 000BH,LJMP T0_ISR,ORG 0030H,MAIN:MOVSP,#0CFH,LCALL INIT,M1:JNB MS100_LAB,M1,CLR MS100_LAB,LCALL RL_LAMP,LJMP M1,2顺序控制灯光“跑龙”控制 灯光“跑龙”控制:在环行布,12,RL_LAMP:,MOV A,P0,RLC A,MOV P0,A,MOV A,P1,RLC A,MOV P1,A,MOV A,P2,RLC A,MOV P2,A,JNC RL_L1,MOV P0,#01H,CLR C,RL_Ll:,RET,INIT:MOV TMOD,#02H,MOV TH0,#06H,SETB TR0,SETB ET0,SETB EA,MOV MS50_BUF,#0,MOV MS100_BUF,#0,CLR MS100_LAB,MOV P0,#01,MOV P1,#0,MOV P2,#0,CLR C,RET,RL_LAMP:INIT:MOV TMOD,#02,13,T0_ISR:,PUSH PSW,PUSH ACC,INC MS50_BUF,MOV A,MS50_BUF,CLR C,SUBB A,#200,JC TS1,MOV MS50_BUF,#0,INC MS100_BUF,MOV A,MS100_BUF,CLR C,SUBB A,#2,JC TS1,MOV MS100_BUF,#0,SETBMS100_LAB,TS1:,POP ACC,POP PSW,RETI,END,T0_ISR:SETBMS100_LAB,14,单片机6章中断,15,3交通信号灯的控制,东西、南北十字路口交通信号灯控制。,1)灯的布置,2)控制规则:,南北通8 秒 停侯2 秒 东西通6 秒 停侯2 秒,3)控制动作的状态分解,南北通8秒:亮:ER、WR、SG、NG;,灭:其余。,停后2秒:亮:NY、SY、EY、WY。,灭:其余。,东西通6秒:亮:EG、WG、SR、NR;,灭:其余。,3交通信号灯的控制 东西、南北十字路口交通信号灯控制。1,16,4)硬件设计,4)硬件设计,17,状态,时间,NRP1.0,NG,P1.1,NYP1.2,SRP1.3,SGP1.4,SYP1.5,WRP1.6,WGP1.7,WYP2.0,EP2.1,EGP2.2,EYP2.3,P1,P2,1,8,0,1,0,0,1,0,1,0,0,1,0,0,52H,02H,2,2,0,0,1,0,0,1,0,0,1,0,0,1,24H,09H,3,6,1,0,0,1,0,0,0,1,0,0,1,0,89H,04H,4,2,0,0,1,0,0,1,0,0,1,0,0,1,24H,09H,5)根据硬件的状态分解,状态时间NRP1.0NGNYP1.2SRP1.3SGP1.4,18,6)软件编程,TIME_BUFEQU30H,STATE_BUFEQU31H,STATEMAXEQU04H,S1_LABBIT00H,ORG0000H,LJMPMAIN,ORG000BH,LJMPT0_SER,ORG0030H,MAIN:,MOVSP,#0CFH,LCALL INIT,M0:LCALL OUT_STATE,M1:JNB S1_LAB,M1,CLR S1_LAB,DEC TIME_BUF,MOV A,TIME_BUF,CJNE A,#0,M1,LCALL NEXT_STATE,LJMP M0,6)软件编程TIME_BUFEQU30HLCALL,19,OUT_STATE:,MOVA,STATE_BUF,MOVB,#3,MULAB,MOVDPTR,#STATE_TAB,ADDA,DPL,MOVDPL,A,MOVA,DPH,ADDCA,#0,MOVDPH,A,MOVA,#0,MOVCA,A+DPTR,MOVTIME_BUF,A,MOVA,#1,MOVCA,A+DPTR,MOVP1,A,MOVA,#2,MOVCA,A+DPTR,MOVP2,A,RET,STATE_TAB:,DB08H,52H,02H,DB02H,24H,09H,DB20H,89H,04H,DB02H,24H,09H,OUT_STATE:MOVCA,A+DPTRSTATE_,20,NEXT_STATE:,INCSTATE_BUF,MOVA,STATE_BUF,CLRC,SUBBA,#STATEMAX,JCNS1,MOVSTATE_BUF,#0,NS1:,RET,INIT:,MOVTMOD,#02H,SETBTR0,MOVTH0,#06H,SETBET0,SETBEA,MOVSTATE_BUF,#0,MOVMS50_BUF,#0,MOVS1_BUF,#0,CLRS1_LAB,RET,T0_SER:,同例1。,NEXT_STATE:INIT:T0_SER:,21,本章习题,1.MCS-51 单片机有几个中断源,几级中断?,2.编程设定:外部中断*INT0开放中断、下降沿触发中断、低级中断;外部中断,*INT1开放中断、低电平触发中断、高级中断;按照上述设置,若两个中断同,时申请,说明先响应哪个中断?,3.编程设定:T0计数器溢出为高级中断、串行通讯为高级中断,其余为低级中,断,五,个中断源全部开放中断。若五个中断源同时申请中断,说明中断响应的,顺序。,4.编程实现:通过定时器中断形式,在 P1.1 引脚输出10KH,Z,的方波。(fosc=12MH,Z,),本章习题,22,
展开阅读全文