资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本章内容,定时,/,计数器,C,语言的函数,中断系统,第,4,章 定时与中断系统,任务要求:,正常情况下,8,个霓虹灯(,LED,灯)依次顺序点亮,循环显示,时间间隔为,1s,。按键(按,P3.2,口)按下后,8,个霓虹灯同时亮灭一次,时间间隔为,0.5s,。用,T0,、工作方式,1,编制延时程序,按键动作采用外部中断,INT0,实现。,任务,9,可控霓虹灯控制,#include,void delay0_5s(),/,延时,0.5s,unsigned char i;,for(i=0;i0 x0a;i+),TH0=0 x3c;,TL0=0 xb0;,TR0=1;,while(!TF0);,TF0=0;,void delay_t(unsigned char t),unsigned char i;,for(i=0;it;i+),delay0_5s();,void int_0()interrupt 0,P1=0 x00;,delay0_5s();,P1=0 xff;,delay0_5s();,void main(),unsigned char i,w;,EA=1;,EX0=1;,IT0=1;,TMOD=0 x01;,while(1),w=0 x01;,for(i=0;i8;i+),P1=w;,w=1;,delay_t(2);,中断是指通过硬件来改变,CPU,的运行方向,。计算机在执行程序的过程中,外部设备向,CPU,发出中断请求信号,要求,CPU,暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。,这种程序在执行过程中由于外界的原因而被中间打断的情况称为,“,中断,”,。,什么是中断,MCS-51,单片机的中断系统结构,执行主程序,主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,(,1,),中断服务程序:,CPU,响应中断后,转去执行相应的处理程序,该处理程序通常称之为中断服务程序。,(,2,),主程序:,原来正常运行的程序称为主程序。,(,3,),断点:,主程序被断开的位置(或地址)称为断点。,(,4,),中断源:,引起中断的原因,或能发出中断申请的来源,称为中断源。,(,5,),中断请求:,中断源要求服务的请求称为中断请求(或中断申请)。,中断基本概念,同步工作:,中断是,CPU,和接口之间的信息传递方式之一,它使,CPU,与外设同步工作,较好地解决了,CPU,与慢速外设之间的配合问题。例如:打印输出。,异常处理:,针对难以预料的异常情况,如掉电、存储出错、运算溢出等,可以通过中断系统由故障源向,CPU,发出中断请求,再由,CPU,转到相应的故障处理程序进行处理。,实时处理:,CPU,能够及时处理应用系统的随机事件,系统的实时性大大增强。,中断特点,中断系统的结构,1,、,4,个与中断有关的寄存器,:,中断标志,TCON,、,SCON,、,IE,、,IP,2,、,5,个中断源:,INT0,、,INT1,、,T0,、,T1,、,RI/TI,3,、中断标志位,4,、中断允许控制位,5,、中断源的中断优先级,MCS-51,系列单片机中断源,序号,中断源,说 明,1,INT0,外部中断,0,请求,由,P3.2,引脚输入,通过,IT0,位(,TCON.0,)来决定是低电平有效还是下降沿有效。一旦输入信号有效,即向,CPU,申请中断,并建立,IE0,(,TCON.1,)中断标志。任务,9,中采用下降沿有效,由按键产生下降沿。,2,INT1,外部中断,1,请求,由,P3.3,引脚输入,通过,IT1,位(,TCON.2,)来决定是低电平有效还是下降沿有效。一旦输入信号有效,即向,CPU,申请中断,并建立,IE1,(,TCON.3,)中断标志。,3,TF0,T0,溢出中断请求,当,T0,产生溢出时,,T0,溢出中断标志位,TF0,(,TCON.5,)置位(由硬件自动执行),请求中断处理。,4,TF1,T1,溢出中断请求,当,T1,产生溢出时,,T1,溢出中断标志位,TF1,(,TCON.7,)置位(由硬件自动执行),请求中断处理。,5,RI,或,TI,串行口中断请求,当接收或发送完一个串行帧时,内部串行口中断请求标志位,RI,(,SCON.0,)或,TI,(,SCON.1,)置位(由硬件自动执行),请求中断。,二、中断请求标志,1,、,TCON,的中断标志,IT0,(,TCON.0,),外部中断,0,触发方式控制位。,当,IT0=0,时,为电平触发方式。,当,IT0=1,时,为边沿触发方式(下降沿有效)。,IE0,(,TCON.1,),外部中断,0,中断请求标志位。,IT1,(,TCON.2,),外部中断,1,触发方式控制位。,IE1,(,TCON.3,),外部中断,1,中断请求标志位。,TF0,(,TCON.5,),定时,/,计数器,T0,溢出中断请求标志位。,TF1,(,TCON.7,),定时,/,计数器,T1,溢出中断请求标志位。,当中断源向,CPU,申请中断时,相应中断标志位由硬件自动置,1,。,CPU,在响应中断后即由硬件将各标志位自动复位。(串行中断除外),2,、,SCON,的中断标志,RI,(,SCON.0,),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位,RI,。注意,,RI,必须由软件清除。,TI,(,SCON.1,),串行口发送中断标志位。当,CPU,将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位,TI,。,CPU,响应中断时,不能自动清除,TI,,,TI,必须由软件清除。,中断标志位,中断标志位,位名称,说 明,TF1,T1,溢出中断标志,TCON.7,T1,被启动计数后,从初值开始加,1,计数,计满溢出后由硬件置位,TF1,,同时向,CPU,发出中断请求,此标志一直保持到,CPU,响应中断后才由硬件自动清,0,。也可由软件查询该标志,并由软件清,0,。前述的定时器编程都是采用查询方式实现。,TF0,T0,溢出中断标志,TCON.5,T0,被启动计数后,从初值开始加,1,计数,计满溢出后由硬件置位,TF0,,同时向,CPU,发出中断请求,此标志一直保持到,CPU,响应中断后才由硬件自动清,0,。也可由软件查询该标志,并由软件清,0,。,IE1,外部中断,1,中断标志,TCON.3,IE1=1,,外部中断,1,向,CPU,申请中断。,IT1,中断触发方式控制位,TCON.2,当,IT1=0,,外部中断,1,控制为电平触发方式;当,IT1=1,,外部中断,1,控制为边沿(下降沿)触发方式。,IE0,外部中断,0,中断标志,TCON.1,IE0=1,,外部中断,0,向,CPU,申请中断。,IT0,中断触发方式控制位,TCON.0,当,IT0=0,,外部中断,0,控制为电平触发方式;当,IT0=1,,外部中断,0,控制为边沿(下降沿)触发方式。,TI,串行发送中断标志,SCON.1,CPU,将数据写入发送缓冲器,SBUF,时,启动发送,每发送完一个串行帧,硬件都使,TI,置位;但,CPU,响应中断时并不自动清除,TI,,必须由软件清除。,RI,串行接收中断标志,SCON.0,当串行口允许接收时,每接收完一个串行帧,硬件都使,RI,置位;同样,,CPU,在响应中断时不会自动清除,RI,,必须由软件清除。,中断的开放和禁止,MCS-51,系列单片机的,5,个中断源都是可屏蔽中断,中断系统内部设有一个专用寄存器,IE,,用于控制,CPU,对各中断源的开放或屏蔽。,IE,寄存器格式如下:,EA,ES,ET1,EX1,ET0,EX0,D7,D6,D5,D4,D3,D2,D1,D0,IE(A8H),中断的开放和禁止,中断允许位,位名称,说明,EA,总中断允许控制位,IE.7,EA=1,,开放所有中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;,EA=0,,禁止所有中断。,ES,串行口中断允许位,IE.4,ES=1,,允许串行口中断;,ES=0,禁止串行口中断。,ET1,T1,中断允许位,IE.3,ET1=1,,允许,T1,中断;,ET1=0,,禁止,T1,中断。,EX1,INT1,中断允许位,IE.2,EX1=1,,允许外部中断,1,中断;,EX1=0,,禁止外部中断,1,中断。,ET0,T0,中断允许位,IE.1,ET0=1,,允许,T0,中断;,ET0=0,,禁止,T0,中断。,EX0,INT0,中断允许位,IE.0,EX0=1,,允许外部中断,0,中断;,EX0=0,,禁止外部中断,0,中断。,EA,ES,ET1,EX1,ET0,EX0,D7,D6,D5,D4,D3,D2,D1,D0,IE(A8H),1,、,自然优先级,中断优先级,MCS-51,系列单片机有两个中断优先级:高优先级和低优先级。,每个中断源都可以通过设置中断优先级寄存器,IP,确定为高优先级中断或低优先级中断,实现二级嵌套。同一优先级别的中断源可能不止一个,因此,也需要进行优先权排队。同一优先级别的中断源采用自然优先级。,中断优先级寄存器,IP,,用于锁存各中断源优先级控制位。,IP,中的每一位均可由软件来置,1,或清,0,,,1,表示高优先级,,0,表示低优先级。,中断优先级,中断优先级控制位,位名称,说明,PS,串行口中断优先控制位,IP.4,PS=1,,设定串行口为高优先级中断;,PS=0,,设定串行口为低优先级中断。,PT1,定时器,T1,中断优先控制位,IP.3,PT1=1,,设定定时器,T1,为高优先级中断;,PT1=0,,设定定时器,T1,为低优先级中断。,PX1,外部中断,1,中断优先控制位,IP.2,PX1=1,,设定外部中断,1,为高优先级中断;,PX1=0,,设定外部中断,1,为低优先级中断。,PT0,T0,中断优先控制位,IP.1,PT0=1,,设定定时器,T0,为高优先级中断;,PT0=0,,设定定时器,T0,为低优先级中断。,PX0,外部中断,0,中断优先控制位,IP.0,PX0=1,,设定外部中断,0,为高优先级中断;,PX0=0,,设定外部中断,0,为低优先级中断。,中断处理过程,中断响应,中断响应是指,CPU,对中断源中断请求的响应。,CPU,并非任何时刻都能响应中断请求,而是在满足所有中断响应条件、且不存在任何一种中断阻断情况时才会响应。,CPU,响应中断的条件有:有中断源发出中断请求;中断总允许位,EA,置,1,;申请中断的中断源允许位置,1,。,CPU,响应中断的阻断情况有:,CPU,正在响应同级或更高优先级的中断;当前指令未执行完;正在执行中断返回或访问寄存器,IE,和,IP,。,中断处理过程,中断响应过程就是自动调用并执行中断函数的过程。,C51,编译器支持在,C,源程序中直接以函数形式编写中断服务程序。常用的中断函数定义语法如下:,void,函数名(),interrupt n,其中,n,为中断类型号,,C51,编译器允许,0,31,个中断,,n,取值范围,0,31,。下面给出了,8051,控制器所提供的,5,个中断源所对应的中断类型号和中断服务程序入口地址:,中断源,n,入口地址,外部中断,0 00003H,定时,/,计数器,0 1000BH,外部中断,1 20013H,定时,/,计数器,1 3 001BH,串行口,4 0023H,中断处理过程,中断响应时间,中断响应时间是指从中断请求标志位置位到,CPU,开始执行中断服务程序的第一条语句所需要的时间。,1,)中断请求不被阻断的情况,外部中断响应时间至少需要,3,个机器周期,这是最短的中断响应时间。一般来说,若系统中只有一个中断源,则中断响应时间为,3,8,个机器周期。,2,)中断请求被阻断的情况,如果系统不满足所有中断响应条件、或者存在任何一种中断阻断情况,那么中断请求将被阻断,中断响应时间将会延长。,中断的设定,1,、开启中断开关(设定,IE,寄存器),例:,EA=1;EX0=1;,2,、中断优先级的设定(设定,IP,寄存器),例:,PT1=1;,3,、中断信号的设定(设定,TCON,寄存器),例:,IT0=1;,练习:,1,、利用外部中断,INT1,来控制,P1.1,的,LED,灯,当有外部中断时,LED,的状态取反。,2,、控制,P1.1,的,LED,灯每隔,0.5s,状态取反一次,要求用定时器,T0,的工作方式,1,进行计时。分别以查询方式和中断方式进行控制。,3,、要求主程序正常执行时,,4,个,LED,灯间隔,0.8s,闪烁,若按下按键,K1,,,4,个,LED,灯将正向流水循环,3,次(间隔,0.4s,)。用,T1,的工作方式,1,编写延时程序,按键动作采用外部中断,INT0(p3.2),实现。,4,、续第,3,题,要求外部中断,INT1,(,P3.3,)发生时,使,8,个,LED,灯反向流水循环,3,次,(,间隔,0.4s),。且,INT1,的优先级别高于,INT0,。(两个中断的练习),
展开阅读全文