资源描述
,单击此处编辑母版标题样式,第,6,章,STC11F,单片机中断系统,6.1,中断系统概述 (不讲),6.2 STC11F,单片机的中断系统,6.3 STC11F,单片机外中断扩展,1,中断源和中断请求标志,2,中断允许控制,3,中断优先级,4,中断响应过程,6.2 STC11F,单片机的中断系统,6.2.1 STC11F,中断源,与中断系统有关的,SFR,有中断允许控制寄存器,IE,、中断优先级控制寄存器,IP,以及中断请求标志位(在,TCON,、,SCON,、,PCON,中)。,MCS-51,中断系统的功能为:,5,个(,52,子系列,6,个)中断源;,2,个中断优先级。,STC11F,有,6,个中断源:,INT0,、,T0,、,INT1,、,T1,、串行中断、低电压检测中断。,6.2.1 STC11F,中断源,1.,中断源,两个外部中断为,-INT0,和,-INT1,(由,P3.2,和,P3.3,输入);,3,个片内中断 为定时器,/,计数器,T0,和,T1,的溢出中断,TF0,和,TF1,及串行口中断请求,TI,或,RI,;,外部中断为请求,-INT0,和,-INT1,有两种触发方式,即电平触发方式和边沿触发方式,由,IT0,、,IT1,设置触发方式;,每一个中断源都对应一个中断请求标志位,这些请求标志分别锁存在特殊功能寄存器,TCON,和,SCON,中。,STC11F,增加中断源:,LVDF,片内电源低电压检测中断,(标志,sbit,LVDF=PCON5,),注意上电复位时,,LVDF=1,,应注意软件清零。,寄存器分布:,TCON,、,SCON,和,PCON,;,标志位:,IE0,、,TF0,、,IE1,、,TF1,、,TI RI,、,LVDF,2.,中断请求标志,(分布于,3,个寄存器),6.2.1 STC11F,中断源,(,1,),TCON,寄存器,TCON,是定时器,/,计数器控制寄存器,字节地址,88H,。其中有,6,位与中断请求有关。,B,7,B,6,B,5,B,4,B,3,B,2,B,1,B,0,TCON,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,ITx,=,0,为电平触发方式,,-,INTx,低电平有效。,1,为边沿触发方式,,-,INTx,由高到低的负跳变有效。,ITx,(,x=0,、,1,),:外部中断,x,(,-,INTx,)请求的触发,(trigger),方式控制位,由软件置位或复位。,IEx,(,x=0,、,1,),:外部中断,x,请求标志。当,CPU,响应中断,转向中断服务程序时由硬件自动清零,IE0,。,图,IEx,与,-,INTX,及,ITx,的关系,TFx,(,x=0,、,1,),:片内定时器,/,计数器,x,溢出中断请求标志。由,硬件置“,1”TFx,,,CPU,响应,TF0,中断时,由,硬件清“,0,”,该标志位,;,TFx,也可用,软件清“,0”,(查询方式),。,TR0,、,TR1,是定时器启动控制位,6.2.1 STC11F,中断源,(,2,),SCON,寄存器,SCON,:串行口控制寄存器,字节地址为,98H,,有,TI,和,RI,两位与中断请求有关:,B,7,B,6,B,5,B,4,B,3,B,2,B,1,B,0,SCON,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,TI,:,串行口发送中断标志。,在串行口以方式,0,发送时,当发送完,8,位数据,由硬件对,TI,置“,1”,;,若以方式,1,、,2,或,3,发送时,在发送停止位的开始时对,TI,置“,1”,。,TI,必须软件清“,0”,,,(,CLR TI,/ANL SCON,,,#0FDH,),RI,:,串行口接收中断标志。,若以方式,0,接收,当接收到第,8,位数据时对,RI,置“,1”,;,若以方式,1,、,2,、,3,接收,且,SM2=0,时,当接收到停止位的中间时对,RI,置“,1”,;,当串行口以方式,2,或,3,接收,且,SM2=1,时,仅当接收到的第,9,位数据,RB8,为,1,后,同时还要接收到停止位的中间时对,RI,置“,1”,。,必须由软件清“,0”RI,,(,CLR TI,/ANL SCON,,,#0FEH,),6.2.1 STC11F,中断源,(,1,),ISP/IAP,有效地操作,需要可靠的电压,门槛为:,5V,:,4.1V,;,3V,:,2.4V,解决措施:其一,选择高的复位门槛电压;,其二,软件判断低电压标志,LVDF=1,,软清,0,,再延时判断是否为,0,?,PCON,地址,B7,B6,B5,B4,B3,B2,B1,B0,复位值,87H,SMOD,SMOD0,LVDF,POF,GF1,GF0,PD,IDL,00110000,LVDF,不能位寻址,,MOV A,PCON,ANL A,#00100000B ;#20H,JZ FY ;,为,0,,则,LVDF,不等于,1,MOV A,PCON ;,不等于,0,,则,LVDF,等于,1,ANL A,#11011111B ;,清,LVDF,标志,MOV PCON,A,.,(2),使用并不太方便!,同一次修改的放在同一扇区。否则要读出来保护,扇区擦除后再写进去,较麻烦。,(,3,)读、编程、扇区擦除时间不同。,2T,55,S,,,21mS,(,3,),PCON,寄存器,(回顾,EEPROM,使用注意事项页面),低电压检测中断标志,对各中断源的中断开放(允许)或关闭(屏蔽)是由专用寄存器,IE,中的某一位控制,,IE,的定义和功能如下:,6.2.2 STC11F,中断控制,EA,:,CPU,中断允许标志。,ELVD:,开放或禁止低电压检测中断。(,STC11F,独有),ES,:,开放或禁止串行口中断。,ET1,:,开放或禁止定时器,/,计数器,1,溢出中断。,EX1,:,开放或禁止外部中断,1,。,ET0,:,开放或禁止定时器,0,溢出中断。,EX0,:,开放或禁止外部中断,0,。,对于以上各位:“,1”,代表允许中断,“,0”,代表禁止中断。,B,7,B,6,B,5,B,4,B,3,B,2,B,1,B,0,IE,EA,ELVD,ES,ET1,EX1,ET0,EX0,1.,中断允许控制,IE,6.2.2 STC11F,中断控制,PX0,:,决定外部中断,0,的中断优先级。,PT0,:,决定定时器,/,计数器,0,的中断优先级。,PX1,:,决定外部中断,1,的中断优先级。,PT1,:,决定定时器,/,计数器,1,的中断优先级。,PS,:,决定串行口的中断优先级。,PLVD:,决定低电压检测中断优先级。(,STC11F,独有),以上各位:被置为“,0”,,为低级中断;被置为“,1”,,为高级中断。,设置了高、低两个中断优先级,对每一个中断请求都可以通过对中断优先级控制寄存器,IP,相应位的编程来设置为高级中断或低级中断。,IP,各位的定义和功能如下:,B,7,B,6,B,5,B,4,B,3,B,2,B,1,B,0,IP,PLVD,PS,PT1,PX1,PT0,PX0,2.,中断优先级控制,IP,STC,单片机对中断优先级的处理原则是:,不同级的中断源同时申请中断时,,先高后低;,处理低级中断时又收到高级中断请求时,,停低就高;,处理高级中断又收到低级中断请求时,,高不就低;,同一级的中断源同时申请中断时按内部,事先规定。,最高级别,最低级别,6.2.3 STC11F,中断处理过程,阻止中断响应的情形:,CPU,正在执行一个同级或高一级的中断服务;,当前指令没有执行完毕;,正在执行,RETI,或者访问,IE,、,IP,寄存器指令。,CPU,响应中断时,先置位相应的优先级状态触发器(该触发器指出,CPU,开始处理的中断优先级别),然后由硬件生成一个长调用指令(,LCALL,),使控制转到响应的中断入口向量地址,并清除中断源的中断请求标志(,TI,和,RI,除外)。,必要条件:,有中断源请求;,CPU,和各中断源均开中断。,1.,中断响应的条件与过程,6.2.3 STC11F,中断处理过程,STC11F,各中断源的固定中断向量:,外部中断,0,0003H,定时器,T0,中断,000BH,外部中断,1,0013H,定时器,T1,中断,001BH,串行口中断,0023H,预留,002BH,LVD,中断,0033H,1.,中断响应条件与过程,汇编处理:,ORG 001BH ;TI,中断入口,AJMP T1_ISR ;,转,T1,中断服务,保护现场:,A,PSW,(,或,PDTR),reg,组往往要换组号。,C51,中中断号与中断源固定对应关系,void INT0_ISR(void)interrupt,0,void Time0_ISR(void)interrupt,1,void INT1_ISR(void)interrupt,2,void Time1_ISR(void)interrupt,3,void,UART_ISR(void)interrupt,4,void,LVD_ISR(void)interrupt,6,6.2.3 STC11F,中断处理过程,若,-,ITx,=0,,外中断为电平触发方式。,此时,撤销中断请求信号,,常采用中断请求触发器。,2.,外部中断的触发与撤除,图,6.3,外部中断请求及撤除电路,外部中断请求信号的下降沿使,D,触发器置,0,;用,D,触发器,Q,端申请中断,,D,触发器置位端受,P1.0,的控制,控制信号平时输出为“,1”,,中断响应后,它变为“,0”,,从而使,D,触发器置“,1”,撤消外部中断请求。,中断服务程序中加上两条指令:,ANL P1,,,#0FEH,ORL P1,,,#01H,6.2.3 STC11F,中断处理过程,若,-,ITx,=1,外部中断为边沿触发器方式。,如果在,-,INTx连续采样到一个周期的高电平和紧接着下一个周期的低电平,则TCON寄存器中的中断请求标志位IEx就被置位请求中断。显然中断请求即使CPU暂时不能响应,中断申请标志由于被保存也不会丢失,。,而一旦CPU响应中断,,进入中断服务程序时,IEx会被CPU自动清除。,3.,外部中断的响应时间,外部中断响应时间至少需要三个完整的机器周期。,在执行另一个同级或更高级的中断,附加的等待时间取决于该正执行中断服务程序的长短以及是否还有更高级的中断源存在。在一个单一中断源情况中,中断响应时间总是在,3,8,个机器周期之间。,6.2.4 STC11F,中断应用举例,汇编程序,ORG 0000H,AJMP,MAIN,ORG 0003H,AJMP,INT0_ISR,ORG 0100H,MAIN:,MOV A,#60H ;,建立堆栈,MOV A,#0FEH ;,最低位先亮,SETB TT0 ;,边沿触发,SETB EA,SETB EX0,SJMP$;,等待,INT0_ISR:,MOV P1,A,RL A,RETI,END,例题,6.1,由,key1,(,INT0,)引发中断,循环点亮,P1,流水灯。,C51,程序,#include,unsigned char i=0 x01;,/*-,中断,0,服务函数,-*/,void x0_isr(),interupt,(),p1=I,;“”,取反,i=1,;“”,左移,if(i,=0)i=0 x01;,/*-,主函数,-*/,void,main(void,),IT0=1,EA=1,EX0=1,while(,1,)/1,号中断,思考:,P1,工作模式?如果用电平触发?,程序怎么完善。,6.3 STC11F,外中断扩展,1,.,外部中断扩展见微机原理(已讲过),利用定时器、串行口扩展(移到第,7,章定时器中补充,,移到第,8,章串行口中补充)。,中断系统调试例程,课堂演示过程:,1.,示例,2_,外中断,1,有错工程示例,2.,示例,3_,外中断,1,正确工程示例,课后编程作业:,建立能验证中断嵌套及优先级别的工程,要求可验证开放与禁止嵌套、低级别后来请求,高级别后来请求等情形。,对应的解决方法是(已隐含,),1.,设置“调试”菜单打钩“软件模拟器 模拟真实速度”;,2.,建立工程时选择“不添加启动代码,startup code”,即可;,3.,调试时不选择“模拟真实速度”,即可正常;,4.,利用外部设备菜单的中断调试框;,5.,在工程窗口删除添加的另一文件;编译当前文件和建立目标不同。,6.,asm,文件名长度减少到,8,以内。,同学们自己总结答案!,中断系统调试例程,通过动手调试,掌握以下具体调试技能:,1.,怎样使模拟和下载实验过程的运行速度基本一致;,2.,怎样防止每进入单步、跟踪等调试就自动进入反汇编窗口;,3.,怎样克服程序正确,但,RETI,中断返回时延迟较大的现象;,4.,怎样调试模拟中断服务程序;,5.,观察同时添加文件,TEST02.ASM,后,依然调试,TEST01.ASM,的现象,正确理解:添加单个文件调试,同时添加,2,个文件调试,加入两个但窗口打开一个,;,编译时按重建所有目标,重建目标和编译当前文件不同方式的调试会出现的各种现象。,6.,建立一工程,Project.uv2,汇编文件,test_pro123.asm,,调试有何现象?解决出现的问题。,6.4 STC15,系列的中断源及控制,1.STC15,系列新增,8,个中断源(,6+8=14,),新增,5,号:,A/D,转换中断,ADC_FLAG,(在,10,章,A/D,),新增,7,号:,PCG/CPP,中断,(在,11,章,CCON,),新增,8,号:串口,S2,中断,S2RI,、,S2TI,(在,9,章串口,9.3,节),新增,9,号:,SPI,串行中断,SPIF,(在,12,章,SPI,),新增,10,号:外部中断,INT2,(下降沿),新增,11,号:外部中断,INT3,(下降沿),新增,12,号:定时器,T2,(在,8,章定时器),新增,13,号:外部中断,INT4,(下降沿),2.,STC15,中断有关寄存器,标志:,TCON,、,SCON,、,PCON,、,S2CON,、,ADC_CONTR,、,SPSTAT,、,CCON,允许:,IE,、,IE2,、,INT_CLKO,优先级:,IP,、,IP2,被屏蔽标志:,T2,、,INT2,、,INT3,、,INT4,标志用户不可见,响应后会自动清零。,既不可以查询。,第,6,章,STC11F,单片机中断系统,内容结束,
展开阅读全文