资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单片微型计算机原理及应用,C,Microcontrollers Principle and Applications,单击此处编辑母版标题样式,*,Microcontrollers Principle and Applications,单片机原理及应用,C,上节内容回顾,MCS51,单片机的程序设计,伪指令,顺序结构,分支结构,JZ,、,JNZ,循环结构,CJNZ,、,DJNZ,子程序,RET,、,ACALL,、,LCALL,6.1,MCS51,单片机的中断系统,现实生活中的中断事件,某人看书,某人正在处理一件事,A,手机铃响,出现另一件须立即解决的事,B,暂停看书,中止,A,书中作记号,记录断点,便于继续,电话谈话,处理,B,继续看书,继续,A,的工作,中断请求,保护断点,中断响应,中断返回,中断的,原因,上例中,,及时处理接电话,再继续看书,,效率更高一些。,由于单片机中,仅有一个,CPU,,并不能同时处理多个任务。,当面临多个任务时,单片机采用,中断,的方式,效率更高。,中断,B,服务程序,RETI,主程序,A,中断处理的简要过程,CPU,进行工作,A,时,,发生了事件,B,,请求,CPU,马上处理,CPU,暂时,中断当前工作,A,,转去处理事件,B,事件,B,处理完后,回到工作,A,被中断的地方继续处理,A,工作,主程序,A,中断申请,断点,保护现场,恢复现场,中断的优点,利用率高,实时性强,可靠性好,中断技术的应用,并行处理,CPU,可以与多台外设并行工作,并分时与他们进行信息交换,提高了,CPU,的工作效率。,实时控制,单片机应用系统可能随机请求,CPU,提供服务。有了中断系统,,CPU,就可以立即响应并予以处理。,故障处理,单片机系统在工作时可能会出现一些突发故障,如电源断电,存储器出错,程序执行错误(如除数为,0,)等,一旦出现故障,,CPU,就可及时转去执行故障处理程序,而不必停机。,中断系统,为实现中断功能而配置的,硬件,和编写的,软件,就是,中断系统,。,中断源的判断,优先级的排队,中断的屏蔽,断点,PC,值的保存,断点的恢复,优先级的设置,中断开启,/,关闭设置,中断现场的保护,中断现场的恢复,中断处理过程,6.1.1 MCS51,中断系统,包含,5,个,中断源,(,提出中断申请的设备或事件,),即两个外部中断、两个计时器、一个串口中断请求,具有两个,中断优先级,(,单片机响应中断的先后顺序,),可实现两级,中断服务嵌套,(,在执行低级中断处理时,允许更高级别的中断打断该服务程序的执行,转而处理此高级别的中断,),。,MCS51,中断系统结构,该列为,1,,,表示中断源有请求,中断源,中断触发方式,源允许控制,总允许控制,优先级设定,MCS51,的中断源,能够向,CPU,发出中断申请的部件称为,中断源,5,个中断源详情如下,序号,中断源,说明,1,外部中断,从,P3.2,引脚引入的外部中断申请,2,定时器,T0,中断,定时器,T0,溢出时引发中断申请,3,外部中断,从,P3.3,引脚引入的外部中断申请,4,定时器,T1,中断,定时器,T1,溢出时引发中断申请,5,串行口中断,一次串行发送或接收完成后,发出中断申请,6.1.2,中断控制寄存器,中断源的屏蔽与否、优先级的设定等,需要通过,4,个,特殊功能寄存器,来实施中断控制。,中断允许寄存器,IE,中断优先级寄存器,IP,定时,/,计数器及外部中断控制寄存器,TCON,串口控制寄存器,SCON,定时,/,计数器及外部中断控制寄存器,TCON,外部中断请求标志,IE1,、,IE0,(用,IEx,表示),外部中断触发方式位,IT1,、,IT0,(,用,ITx,表示,),电平方式(,ITx=0,),,,/,INTx,引脚,低电平,时,若,IEx=1,,响应中断后,IEx,不自动清,0,(,INTx,引脚状态)。,边沿方式(,ITx=1,),,,/,INTx,引脚由,高变低,时,若,IEx=1,,响应中断后,由硬件将,IEx,自动清,0,。,7,6,5,4,3,2,1,0,TCON,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,字节地址,:,88H,电平方式,和,边沿触发,方式的区别,电平方式,时,,INTx,低电平必须保持到响应时,否则就会漏掉;在中断服务结束前,,INTx,低电平必须撤除,否则中断返回之后将再次产生中断。,边沿方式,时,采样到有效下降沿后,在,IEx,中将锁存一个,1,。若,CPU,暂时不能响应,申请标志也不会丢失,直到响应时才清,0,。,定时,/,计数器及外部中断控制寄存器,TCON,溢出中断标志,TF1,、,TF0,(用,TFx,表示),溢出中断请求标志,TFx,,计数器,Tx,启动后就开始由初值进行加,1,计数,直至最高位产生溢出使,TFx=1,向,CPU,请求中断。,CPU,响应中断后,TFx,自动清,0,。,计数运行控制位,TR1,、,TR0,,,为,1/0,,,则启动,/,停止计数器工作,。,7,6,5,4,3,2,1,0,TCON,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,字节地址,:,88H,TCON,练习,请通过编程,将,/INT0,设置为电平触发、,/INT1,设置为边沿触发。,CLR IT0,SETB IT1,7,6,5,4,3,2,1,0,TCON,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,字节地址,:,88H,串行口控制寄存器,SCON,RI,:串口,接收,中断标志。,当串行口接收完一个数据帧时,硬件自动将,RI,置,1,。响应中断时,不能自动清除,,必须在中断服务程序中用软件清除,。,TI,:串口,发送,中断标志。,当发送缓冲器,SBUF,满时,硬件自动将,TI,置,1,。响应中断时,不能自动清除,,必须在中断服务程序中用软件清除,。,7,6,5,4,3,2,1,0,SCON,T1,R1,字节地址,:,98H,中断允许控制寄存器,IE,EX0,:,为,1,表示,外中断,0,允许;,ET0,:,为,1,表示,T0,中断允许;,EX1,:,为,1,表示,外中断,1,允许;,ET1,:,为,1,表示,T1,中断允许;,ES,:,为,1,表示,串口,中断允许;,EA,:,为,1,表示,CPU,开放,中断,否则,禁止,所有中断。,7,6,5,4,3,2,1,0,IE,EA,ES,ET1,EX1,ET0,EX0,字节地址,:,A8H,IE,练习,若允许片内,2,个定时器,/,计数器中断,禁止其他中断源的中断请求,请编写出设置,IE,的相应程序段。,CLR ES,CLR EX1,CLR EX0,SETB ET0,SETB ET1,SETB EA,7,6,5,4,3,2,1,0,IE,EA,ES,ET1,EX1,ET0,EX0,字节地址,:,A8H,中断优先级寄存器,IP,中断优先级由,IP,控制,(,1,,,高级,;,0,,,低级,),PX0:,外中断,0,优先级,PT0:,T0,中断优先级,PX1:,外中断,1,优先级,PT1:,T1,中断优先级,PS:,串口中断优先级,7,6,5,4,3,2,1,0,IP,PS,PT1,PX1,PT0,PX0,字节地址,:,B8H,中断优先级遵循的原则,几个中断同时申请,先响应高级的中断。,正进行的中断服务,同级或低级中断不能对其中断,但可以被高级中断所中断,(,即中断,嵌套,),。,同一优先级的自然顺序:,自高至低:,INT0,、,T0,、,INT1,、,T1,、串口。,IP,练习,设置,IP,寄存器的初始值,使得,MCS51,的,2,个外中断请求为高优先级,其他中断请求为低优先级。,SETB PX0,SETB PX1,CLR PS,CLR PT0,CLR PT1,7,6,5,4,3,2,1,0,IP,PS,PT1,PX1,PT0,PX0,字节地址,:,B8H,6.2,单片机的中断处理过程,中断响应的条件,有中断请求,相应的中断允许位为,1(ET,、,EX,或,ES,为,1,),CPU,开中断,(,即,EA=1,),无同级或更高级中断正在被服务,单片机的中断处理过程,CPU,响应中断的过程,将相应优先级状态触发器置,1,,以阻断后来同级或低级中断,执行硬件,LCALL,指令,(,PC,入栈,中断服务程序入口址送,PC,),执行,中断服务程序,6.3,中断服务程序,编写中断服务程序的过程,中断服务程序入口存放指令,LJMP,或,AJMP,现场保护与现场恢复,执行数据或过程的处理,RETI,结束中断服务程序,中断源,入口地址,外中断,0,(,INT0,),0003H,定时器,0,(,T0,),000BH,外中断,1,(,INT1,),0013H,定时器,1,(,T1,),001BH,串行口,(,UART,),0023H,将断点从堆栈弹送,PC,,,CPU,从原断点继续执行,将相应优先级状态触发器清,0,,恢复原来工作状态,中断服务程序,的流程,开始时应设置中断服务程序入口地址。,关中断期间不允许响应其它中断,以保证保护现场和恢复现场的完整性。,一定要以,RETI,结束。,开始,中断处理,现场保护,关中断,开中断,RETI,结束,恢复现场,关中断,开中断,中断服务程序,的编写,ORG 0000H,LJMP MAIN,ORG,中断入口地址,LJMP INT,ORG XXXXH,MAIN,:,主程序,INT,:,中断服务程序,其它中断入口,地址表,MAIN,主程序,中断服务程序,LJMP MAIN,LJMP INT,中断服务程序,RETI,INT,中断,向量表,中断服务程序举例,1,某外部中断源,其中断请求端连接,8051,的,/INT0,端,采用,电平,触发,当中断发生时,需要从片外,RAM,的,1200H,地址处取连续,8,个字节的数据放入片内,RAM,的,4047H,。,中断源,入口地址,外中断,0,(,INT0,),0003H,定时器,0,(,T0,),000BH,外中断,1,(,INT1,),0013H,定时器,1,(,T1,),001BH,串行口,(,UART,),0023H,ORG 0000H,LJMP,MAIN,ORG 0003H,LJMP,INT0,ORG 0030H,MAIN:CLR IT0,SETB EA,SETB EX0,ORG 1000H,INT,:,PUSH PSW,PUSH ACC,PUSH DPTR,MOV R1,,,#40H,MOV DPTR,,,#1200H,TR1:MOVX A,DPTR,MOV R1,A,INC R1,INC DPTR,CJNZ R1,#47H,TR1,POP DPTR,POP ACC,POP PSW,RETI,中断服务程序综合举例,2,如图所示的电路中,,8051,的,/INT0,接手动脉冲,用户通过按动脉冲申请中断,要求程序中对每次中断进行计数,并将计数结果显示在发光二极管上。,分析,:从连线图和要求中可知,,/INT0,为系统的唯一中断源,且其触发方式为,边沿触发,。,在中断程序中,应设置累加器,A,加,1,,同时将结果送到,P1,口,控制发光二极管数据的变化。,中断服务程序综合举例,2,LJMP X0_INT,ORG 0050H,MAIN:CLR A,MOV P1,A,SETB,IT0,SETB,EX0,SETB,EA,SETB,PX0,SJMP$,ORG 0000H,LJMP MAIN,ORG,0003H,X0_INT:INC A,MOV P1,A,RETI,小结,1,、,5,个中断源及其对应入口地址:,外中断,2,个:,INT0,、,INT1,定时中断,2,个:,T0,、,T1,串行中断,1,个:,RI/TI,2,、中断优先原则:分,2,个优先级;,同级,:,INT0T0INT1T1RI/TI,。,3,、中断响应过程,4,、中断处理程序的编写,
展开阅读全文