版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第第5 5章章 中断系统及定时中断系统及定时/ /计数器计数器 5.1 80C51的中断系统的中断系统 5.2 80C51的中断处理过程的中断处理过程 5.3 80C51的定时的定时/计数器计数器 2 5.1 80C51的中断系统的中断系统 5.1.1 80C515.1.1 80C51的中断系统结构的中断系统结构 一、中断的概念一、中断的概念 计算机具有实时处理能力,能对外界发生的事件进计算机具有实时处理能力,能对外界发生的事件进行及时处理行及时处理, ,这是依靠它们的中断系统来实现的。这是依靠它们的中断系统来实现的。 CPUCPU在处理某一事件在处理某一事件A A时,发生了另一事件时,发
2、生了另一事件B B请求请求CPUCPU迅速去处理(迅速去处理(中断发生中断发生););CPUCPU暂时中断当前的工作,暂时中断当前的工作,转去处理事件转去处理事件B B(中断响应和中断服务中断响应和中断服务);待);待CPUCPU将事将事件件B B处理完毕后,再回到原来事件处理完毕后,再回到原来事件A A被中断的地方继续被中断的地方继续处理事件处理事件A A(中断返回中断返回),这一过程称为),这一过程称为中断中断 。3 引起引起CPU中断的根源,称为中断源。中断源向中断的根源,称为中断源。中断源向CPU提提出的中断请求。出的中断请求。CPU暂时中断原来的事务暂时中断原来的事务A,转去处理事,
3、转去处理事件件B。对事件。对事件B处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。断系统(中断机构)。4 随着计算机技术的应用,人们发现中断技随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速术不仅解决了快速主机与慢速I/O设备的数据设备的数据传送问题,而且还具有如下优点:传送问题,而且还具有如下优点: n分时操作分时操作。CPU可以分时为多个可以分时为多个I/O设备服设备服务,提高了计算机的利用率;务,提高了计算机的利用率; n实时响
4、应实时响应。CPU能够及时处理应用系统的能够及时处理应用系统的随机事件,系统的实时性大大增强;随机事件,系统的实时性大大增强; n可靠性高可靠性高。CPU具有处理设备故障及掉电具有处理设备故障及掉电等突发性事件的能力,从而使系统可靠性提等突发性事件的能力,从而使系统可靠性提高。高。5 二、二、80C51中断系统的结构中断系统的结构 80C51的中断系统有的中断系统有5个中断源,个中断源,2个优先个优先级,可实现二级中断嵌套级,可实现二级中断嵌套 。6 5.1.2 80C515.1.2 80C51的中断源的中断源 一、中断源一、中断源 1、 (P3.2)。可由)。可由IT0(TCON.0)选择其
5、为低电平有效选择其为低电平有效还是下降沿有效。当还是下降沿有效。当CPU检测到检测到P3.2引脚上出现有效的中引脚上出现有效的中断信号时,中断标志断信号时,中断标志IE0(TCON.1)置置1,向,向CPU申请中断。申请中断。 2、 (P3.3)。可由)。可由IT1(TCON.2)选择其为低电平有效选择其为低电平有效还是下降沿有效。当还是下降沿有效。当CPU检测到检测到P3.3引脚上出现有效的中引脚上出现有效的中断信号时,中断标志断信号时,中断标志IE1(TCON.3)置置1,向向CPU申请中断。申请中断。 3、TF0(TCON.5),片内定时),片内定时/计数器计数器T0溢出中断请求标溢出中
6、断请求标志。当定时志。当定时/计数器计数器T0发生溢出时,置位发生溢出时,置位TF0,并向,并向CPU申申请中断。请中断。 4、TF1(TCON.7),片内定时),片内定时/计数器计数器T1溢出中断请求标溢出中断请求标志。当定时志。当定时/计数器计数器T1发生溢出时,置位发生溢出时,置位TF1,并向,并向CPU申申请中断。请中断。 5、RI(SCON.0)或)或TI(SCON.1),串行口中断请求标志。),串行口中断请求标志。当串行口接收完一帧串行数据时置位当串行口接收完一帧串行数据时置位RI或当串行口发送完或当串行口发送完一帧串行数据时置位一帧串行数据时置位TI,向,向CPU申请中断。申请中
7、断。 INT0INT17 二、中断请求标志二、中断请求标志 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),定时),定时/计数器计
8、数器T0溢出中断请求标志位。溢出中断请求标志位。 TF1(TCON.7),定时),定时/计数器计数器T1溢出中断请求标志位。溢出中断请求标志位。 8 2、SCON的中断标志的中断标志 nRI(SCON.0),串行口接收中断标志位。当允),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由许串行口接收数据时,每接收完一个串行帧,由硬件置位硬件置位RI。同样,。同样,RI必须由软件清除。必须由软件清除。 nTI(SCON.1),串行口发送中断标志位。当),串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每
9、发送完一个串行帧,由硬就启动了发送过程。每发送完一个串行帧,由硬件置位件置位TI。CPU响应中断时,不能自动清除响应中断时,不能自动清除TI,TI必须由软件清除。必须由软件清除。 9 一、中断允许控制一、中断允许控制 CPU对中断系统所有中断以及某个中断源的开放和屏蔽是对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器由中断允许寄存器IE控制的。控制的。 5.1.3 80C515.1.3 80C51中断的控制中断的控制 nEX0(IE.0),外部中断,外部中断0允许位;允许位; nET0(IE.1),定时,定时/计数器计数器T0中断允许位;中断允许位; nEX1(IE.2),外部中
10、断,外部中断0允许位;允许位; nET1(IE.3),定时,定时/计数器计数器T1中断允许位;中断允许位; nES(IE.4),串行口中断允许位;,串行口中断允许位; nEA (IE.7), CPU中断允许(总允许)位。中断允许(总允许)位。10 二、中断优先级控制二、中断优先级控制 80C51单片机有两个中断优先级,即可实现二级中断服务单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中中的相应位的状态来规定的的相应位的状态来规定的 。nPX0(IP.0),外部中断),外部中断0优先级设定位;优
11、先级设定位; nPT0(IP.1),定时),定时/计数器计数器T0优先级设定位;优先级设定位; nPX1(IP.2),外部中断),外部中断0优先级设定位;优先级设定位; nPT1(IP.3),定时),定时/计数器计数器T1优先级设定位;优先级设定位; nPS (IP.4),串行口优先级设定位。),串行口优先级设定位。11 同一优先级中的中断申请不止一个时,则有中同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如由中断系统硬件确定的自然优先级形成,其排列如所示:所示:12
12、 80C51单片机的中断优先级有三条原则:单片机的中断优先级有三条原则: nCPU同时接收到几个中断时,首先响应优先级别最高同时接收到几个中断时,首先响应优先级别最高的中断请求。的中断请求。 n正在进行的中断过程不能被新的同级或低优先级的中正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。断请求所中断。 n正在进行的低优先级中断服务,能被高优先级中断请正在进行的低优先级中断服务,能被高优先级中断请求所中断。求所中断。 为了实现上述后两条原则,为了实现上述后两条原则,中断系统内部设有两个中断系统内部设有两个用户不能寻址的优先级状态触发器用户不能寻址的优先级状态触发器。其中一个置。其中一
13、个置1,表,表示正在响应高优先级的中断,它将阻断后来所有的中示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置断请求;另一个置1,表示正在响应低优先级中断,它,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。将阻断后来所有的低优先级中断请求。13 5.2 80C51单片机中断处理过程单片机中断处理过程 一、中断响应条件一、中断响应条件 CPU响应中断的条件是:响应中断的条件是: n 中断源有中断请求;中断源有中断请求; n 此中断源的中断允许位为此中断源的中断允许位为1; n CPU开中断(即开中断(即EA=1)。)。 同时满足时,同时满足时,CPU才有可能响应中断才
14、有可能响应中断。5.2.1 5.2.1 中断响应条件和时间中断响应条件和时间 14 CPU执行程序过程中,在每个机器周期执行程序过程中,在每个机器周期的的S5P2期间,中断系统对各个中断源进行期间,中断系统对各个中断源进行采样采样。这些采样值在下一个机器周期内按。这些采样值在下一个机器周期内按优先级和内部顺序被依次查询。优先级和内部顺序被依次查询。 如果某个中断标志在上一个机器周期的如果某个中断标志在上一个机器周期的S5P2时被置成了时被置成了1,那么它将于现在的查,那么它将于现在的查询周期中及时被发现。接着询周期中及时被发现。接着CPU便执行一便执行一条由中断系统提供的硬件条由中断系统提供的
15、硬件LCALL指令,转指令,转向被称作中断向量的特定地址单元,进入向被称作中断向量的特定地址单元,进入相应的中断服务程序。相应的中断服务程序。 15 遇以下任一条件,硬件将受阻,不产生遇以下任一条件,硬件将受阻,不产生LCALL指令:指令: nCPU正在处理同级或高正在处理同级或高优先级中断;优先级中断; n当前查询当前查询的机器周期的机器周期不是所执行指令的最后一个机器不是所执行指令的最后一个机器周期周期。即在完成所执行指令前,不会响应中断,从而保。即在完成所执行指令前,不会响应中断,从而保证指令在执行过程中不被打断;证指令在执行过程中不被打断; n正在执行正在执行的指令为的指令为RET、R
16、ETI或任何访问或任何访问IE或或IP寄存寄存器的指令。即只有在这些指令后面至少再执行一条指令器的指令。即只有在这些指令后面至少再执行一条指令时才能接受中断请求。时才能接受中断请求。 若由于上述条件的阻碍中断未能得到响应,当条件若由于上述条件的阻碍中断未能得到响应,当条件消失时该中断标志却已不再有效,那么该中断将不被响消失时该中断标志却已不再有效,那么该中断将不被响应。就是说,中断标志曾经有效,但未获响应,查询过应。就是说,中断标志曾经有效,但未获响应,查询过程在下个机器周期将重新进行程在下个机器周期将重新进行。16 二、中断响应时间二、中断响应时间 某中断的响应时序如图:某中断的响应时序如图
17、:n若若M1周期的周期的S5P2前某中断生效,在前某中断生效,在S5P2期间其中期间其中断请求被锁存到相应的标志位中去;断请求被锁存到相应的标志位中去;M2恰逢指令的恰逢指令的最后一个机器周期,且该指令不是最后一个机器周期,且该指令不是RETI或访问或访问IE、IP的指令。于是,的指令。于是,M3和和M4便可以执行硬件便可以执行硬件LCALL指令,指令,M5周期将进入了中断服务程序。周期将进入了中断服务程序。 n80C51的中断响应时间(从标志置的中断响应时间(从标志置1到进入相应的中到进入相应的中断服务),至少要断服务),至少要3个完整的机器周期。个完整的机器周期。 17 n将相应的优先级状
18、态触发器置将相应的优先级状态触发器置1(以阻断(以阻断后来的同级或低级的中断请求)。后来的同级或低级的中断请求)。 n执行一条硬件执行一条硬件LCALL指令,即把程序计指令,即把程序计数器数器PC的内容压入堆栈保存,再将相应的的内容压入堆栈保存,再将相应的中断服务程序的入口地址送入中断服务程序的入口地址送入PC。 n执行中断服务程序。执行中断服务程序。 中断响应过程的前两步是由中断系统内部中断响应过程的前两步是由中断系统内部自动完成的,而中断服务程序则要由用户自动完成的,而中断服务程序则要由用户编写程序来完成。编写程序来完成。 5.2.2 5.2.2 中断响应过程中断响应过程 18 5.2.3
19、 5.2.3 中断返回中断返回 RETI指令的具体功能是:指令的具体功能是: n将中断响应时压入堆栈保存的断点地址从栈将中断响应时压入堆栈保存的断点地址从栈顶弹出送回顶弹出送回PC,CPU从原来中断的地方继续从原来中断的地方继续执行程序;执行程序; n 将相应中断优先级状态触发器清将相应中断优先级状态触发器清0,通知中,通知中断系统,中断服务程序已执行完毕。断系统,中断服务程序已执行完毕。 注意,不能用注意,不能用RET指令代替指令代替RETI指令。在中指令。在中断服务程序中断服务程序中PUSH指令与指令与POP指令必须成对指令必须成对使用,否则不能正确返回断点使用,否则不能正确返回断点 。1
20、9 若外部中断定义为电平触发方式若外部中断定义为电平触发方式,中断标志位,中断标志位的状态随的状态随CPU在每个机器周期采样到的外部中断在每个机器周期采样到的外部中断输入引脚的电平变化而变化,这样能提高输入引脚的电平变化而变化,这样能提高CPU对对外部中断请求的响应速度。但外部中断源若有请求,外部中断请求的响应速度。但外部中断源若有请求,必须把有效的必须把有效的低电平保持到请求获得响应时为止低电平保持到请求获得响应时为止,不然就会漏掉;不然就会漏掉;而在中断服务程序结束之前,中断而在中断服务程序结束之前,中断源又必须撤消其有效的低电平源又必须撤消其有效的低电平,否则中断返回之后,否则中断返回之
21、后将再次产生中断。将再次产生中断。 电平触发方式适合于外部中断输入以低电平输入且电平触发方式适合于外部中断输入以低电平输入且中断服务程序能清除外部中断请求源的情况。例如,中断服务程序能清除外部中断请求源的情况。例如,并行接口芯片并行接口芯片8255的中断请求线在接受读或写操的中断请求线在接受读或写操作后即被复位,因此,以其去请求电平触发方式的作后即被复位,因此,以其去请求电平触发方式的中断比较方便。中断比较方便。20 若外部中断定义为边沿触发方式若外部中断定义为边沿触发方式,在相继连续的两,在相继连续的两次采样中,一个周期采样到外部中断输入为高电平,次采样中,一个周期采样到外部中断输入为高电平
22、,下一个周期采样到为低电平,则在下一个周期采样到为低电平,则在IE0或或IE1中将锁存中将锁存一个逻辑一个逻辑1。即便是。即便是CPU暂时不能响应,中断申请标暂时不能响应,中断申请标志也不会丢失,直到志也不会丢失,直到CPU响应此中断时才清零。这响应此中断时才清零。这样,为保证下降沿能被可靠地采样到,样,为保证下降沿能被可靠地采样到,外中断引脚上外中断引脚上的高低电平(负脉冲的宽度)均至少要保持一个机器的高低电平(负脉冲的宽度)均至少要保持一个机器周期周期(若晶振为(若晶振为12MHz时,为时,为1微秒)。微秒)。 边沿触发方式适合于以负脉冲形式输入的外部中断边沿触发方式适合于以负脉冲形式输入
23、的外部中断请求,如请求,如ADC0809的转换结束标志信号的转换结束标志信号EOC为正脉为正脉冲,经反相后就可以作为冲,经反相后就可以作为80C51的中断输入。的中断输入。21 5.2.4 5.2.4 中断程序举例中断程序举例 22 ORG 0000H START:LJMP MAIN ;跳转到主程序;跳转到主程序 ORG 0003H LJMP INTO ;转向中断服务程序;转向中断服务程序 ORG 0030H ;主程序;主程序 MAIN:CLR IT0 ;设为电平触发方式;设为电平触发方式 SETB EA ;CPU开放中断开放中断 SETB EX0 ;允许中断;允许中断 MOV DPTR,#1
24、000H ;设置数据区地址指针;设置数据区地址指针 ORG 0200H ;中断服务程序;中断服务程序 INT0:PUSH PSW ;保护现场;保护现场 PUSH ACC CLR P3.0 ;由;由P3.0输出输出0 NOP NOP SETB P3.0 ;由;由P3.0输出输出1,撤除,撤除 MOV A,P1 ;输入数据;输入数据 MOVX DPTR,A ;存入数据存储器;存入数据存储器 INC DPTR ;修改数据指针,指向下一个单元;修改数据指针,指向下一个单元 POP ACC ;恢复现场;恢复现场 POP PSW RETI ;中断返回;中断返回23 例例 多外部中断源的系统示例。多外部中断
25、源的系统示例。 设有设有5个外部中断源,中断优先级排队顺序为:个外部中断源,中断优先级排队顺序为:XI0、XI1、XI2、XI3、XI4。试设计它们与。试设计它们与80C51单单片机的接口。片机的接口。24 ORG 0003H LJMP INSE0 ;转外部中断;转外部中断0服务程序入口服务程序入口 ORG 0013H LJMP INSE1 ;转外部中断;转外部中断1服务程序入口服务程序入口 INSE0: PUSH PSW ;XI0中断服务程序中断服务程序 PUSH ACC POP ACC POP PSW RETI 25 INSE1:PUSH PSW ;中断服务程序;中断服务程序 PUSH A
26、CC JB P1.0,DV1 ;P1.0为为1,转,转XI1中断服务程序中断服务程序 JB P1.1,DV2 ;P1.1为为1,转,转XI2中断服务程序中断服务程序 JB P1.2,DV3 ;P1.2为为1,转,转XI3中断服务程序中断服务程序 JB P1.3,DV4 ;P1.3为为1,转,转XI4中断服务程序中断服务程序 INRET:POP ACC POP PSW RETI DV1: ;XI1中断服务程序中断服务程序 AJMP INRET DV2: ;XI2中断服务程序中断服务程序 AJMP INRET DV3: ;XI3中断服务程序中断服务程序 AJMP INRET DV4: ;XI4中断
27、服务程序中断服务程序 AJMP INRET26 5.3 80C51的定时的定时/计数器计数器 实现定时功能,实现定时功能,比较方便的办法是利用单片比较方便的办法是利用单片机内部的定时机内部的定时/计数器计数器。也可以采用下面三种。也可以采用下面三种方法:方法: n软件定时软件定时:软件定时不占用硬件资源,但占用了:软件定时不占用硬件资源,但占用了CPU时间,降低了时间,降低了CPU的利用率。的利用率。 n采用时基电路定时采用时基电路定时:例如采用:例如采用555电路,外接必要电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好
28、以后,定时值与定时范围不能由软但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。件进行控制和修改,即不可编程。 n采用可编程芯片定时采用可编程芯片定时:这种定时芯片的定时值及:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时时功能强,使用灵活。在单片机的定时/计数器不够计数器不够用时,可以考虑进行扩展。用时,可以考虑进行扩展。27 2 2个个1616位位定时器定时器/ /计数器计数器 (52 (52系列有系列有3 3个个1616位位Timer)Timer)定时器定时器: :对
29、片内机器时钟对片内机器时钟( (周期方波周期方波) )进行计数进行计数计数器计数器: :对对TxTx引脚引脚输入的负脉冲进行计数输入的负脉冲进行计数与与TimerTimer工作有关的特殊功能寄存器:工作有关的特殊功能寄存器: TCON TCON 和和 TMODTMOD可通过软件设置有关参数可通过软件设置有关参数概述:概述:28 5.3.1 5.3.1 定时定时/ /计数器的结构和工作原理计数器的结构和工作原理 一、定时一、定时/计数器的结构计数器的结构 定时定时/计数器的实质是加计数器的实质是加1计数器(计数器(16位),由高位),由高8位和低位和低8位两个寄存器组成。位两个寄存器组成。TMO
30、D是定时是定时/计数器的工作方式寄存计数器的工作方式寄存器,确定工作方式和功能;器,确定工作方式和功能;TCON是控制寄存器,控制是控制寄存器,控制T0、T1的启动和停止及设置溢出标志的启动和停止及设置溢出标志。 29 二、定时二、定时/计数器的工作原理计数器的工作原理 加加1计数器输入的计数脉冲有两个来源计数器输入的计数脉冲有两个来源,一个是由一个是由系统的时钟振荡器输出脉冲经系统的时钟振荡器输出脉冲经12分频后送来;一个分频后送来;一个是是T0或或T1引脚输入的外部脉冲源。每来一个脉冲引脚输入的外部脉冲源。每来一个脉冲计数器加计数器加1,当加到计数器为全,当加到计数器为全1时,再输入一个脉
31、时,再输入一个脉冲就使计数器回零,且计数器的溢出使冲就使计数器回零,且计数器的溢出使TCON中中TF0或或TF1置置1,向,向CPU发出中断请求(定时发出中断请求(定时/计数计数器中断允许时)。如果定时器中断允许时)。如果定时/计数器工作于定时模计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。则表示计数值已满。 可见,由溢出时计数器的值减去计数初值才是加可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值计数器的计数值。 30 n设置为定时器模式时设置为定时器模式时,加,加1计数器是对内部机器周期计数器是对内部机
32、器周期计数(计数(1个机器周期等于个机器周期等于12个振荡周期,即计数频率个振荡周期,即计数频率为晶振频率的为晶振频率的1/12)。)。计数值计数值N乘以机器周期乘以机器周期Tcy就就是定时时间是定时时间t 。 n设置为设置为计数器模式时计数器模式时,外部事件计数脉冲由,外部事件计数脉冲由T0或或T1引脚输入到计数器。在每个机器周期的引脚输入到计数器。在每个机器周期的S5P2期间采期间采样样T0、T1引脚电平。当某周期采样到一高电平输入,引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加而下一周期又采样到一低电平时,则计数器加1,更,更新的计数值在下一个机器周期的新
33、的计数值在下一个机器周期的S3P1期间装入计数期间装入计数器。由于检测一个从器。由于检测一个从1到到0的下降沿需要的下降沿需要2个机器周期,个机器周期,因此要求被采样的电平至少要维持一个机器周期。当因此要求被采样的电平至少要维持一个机器周期。当晶振频率为晶振频率为12MHz时时,最高计数频率不超过,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于即计数脉冲的周期要大于2 微秒微秒。 31 5.3.2 定时定时/计数器的控制计数器的控制 80C51单片机定时单片机定时/计数器的工作由两个特殊功计数器的工作由两个特殊功能寄存器控制。能寄存器控制。TMOD用于设置其工作方式;用于设置其工作方式
34、;TCON用于控制其启动和中断申请。用于控制其启动和中断申请。 一、工作方式寄存器一、工作方式寄存器TMOD 工作方式寄存器工作方式寄存器TMOD用于设置定时用于设置定时/计数器的计数器的工作方式,低四位用于工作方式,低四位用于T0,高四位用于,高四位用于T1。其格式。其格式如下:如下:32 GATE:门控位。:门控位。GATE0时,只要用软件使时,只要用软件使TCON中的中的TR0或或TR1为为1,就可以启动定时,就可以启动定时/计数器工作;计数器工作;GATA1时,时,要用软件使要用软件使TR0或或TR1为为1,同时外部中断引脚或也为高电,同时外部中断引脚或也为高电平时,才能启动定时平时,
35、才能启动定时/计数器工作。即此时定时器的启动条计数器工作。即此时定时器的启动条件,加上了或引脚为高电平这一条件。件,加上了或引脚为高电平这一条件。 :定时定时/计数模式选择位。计数模式选择位。 0为定时模式;为定时模式; =1为计数模式。为计数模式。 M1M0:工作方式设置位。定时:工作方式设置位。定时/计数器有四种工作方式,计数器有四种工作方式,由由M1M0进行设置。进行设置。C /TC /TC/T33 二、控制寄存器二、控制寄存器TCON TCON的低的低4位用于控制外部中断位用于控制外部中断,已在前面介绍。已在前面介绍。TCON的高的高4位用于位用于控制定时控制定时/计数器的启动和中断申
36、请。其格式如下:计数器的启动和中断申请。其格式如下:nTF1(TCON.7):):T1溢出中断请求标志位。溢出中断请求标志位。T1计数溢出时由硬件自计数溢出时由硬件自动置动置TF1为为1。CPU响应中断后响应中断后TF1由硬件自动清由硬件自动清0。T1工作时,工作时,CPU可随时查询可随时查询TF1的状态。所以,的状态。所以,TF1可用作查询测试的标志。可用作查询测试的标志。TF1也可也可以用软件置以用软件置1或清或清0,同硬件置,同硬件置1或清或清0的效果一样。的效果一样。 nTR1(TCON.6):):T1运行控制位。运行控制位。TR1置置1时,时,T1开始工作;开始工作;TR1置置0时,
37、时,T1停止工作。停止工作。TR1由软件置由软件置1或清或清0。所以,用软件可控制定时。所以,用软件可控制定时/计数器的启动与停止。计数器的启动与停止。 nTF0(TCON.5):):T0溢出中断请求标志位,其功能与溢出中断请求标志位,其功能与TF1类同。类同。 nTR0(TCON.4):):T0运行控制位,其功能与运行控制位,其功能与TR1类同。类同。34 定时器定时器/计数器的初始化计数器的初始化 在使用定时器在使用定时器/计数器之前由软件设置其功能,即初始化。计数器之前由软件设置其功能,即初始化。1、初始化的步骤、初始化的步骤(1)确定工作模式(计数)确定工作模式(计数/定时)、工作方式
38、和启动控制方式,并定时)、工作方式和启动控制方式,并写入写入TMOD寄存器寄存器(2)设置定时或计数初值:可直接写入)设置定时或计数初值:可直接写入TH0、TL0或或TH1、TL1中。中。16位计数初值必须分两次写入对应计数器位计数初值必须分两次写入对应计数器(3)根据要求确定是否采用中断方式:直接对)根据要求确定是否采用中断方式:直接对IE位赋值。开中断时,位赋值。开中断时,对应位置对应位置“1”;采用程序查询方式时;采用程序查询方式时,IE位应清位应清0以进行中断屏蔽以进行中断屏蔽(4)启动定时)启动定时/计数器:使用计数器:使用SETB TRi指令启动指令启动若第一步设置为软启动,即若第
39、一步设置为软启动,即GATE设置为设置为0时,执行指令后,定时时,执行指令后,定时/计计数器开始工作。数器开始工作。若若GATE设置为设置为1时,还必须由外部中断引脚时,还必须由外部中断引脚 和和 共同控制,共同控制,只有外部引脚电平为高时,执行指令后,定时只有外部引脚电平为高时,执行指令后,定时/计数器开始工作。计数器开始工作。0INT1INT35 2、计数初值的计算、计数初值的计算最大计数值最大计数值M与定时与定时/计数器工作方式有关:计数器工作方式有关:方式方式0:M=213=8192方式方式1:M=216=65536方式方式2: M=28=256方式方式3: M=256,定时,定时/计
40、数器分成两个独立的计数器分成两个独立的8位计数器,所位计数器,所以以TH0、TL0的的M均为均为256T0和和T1均为加均为加1计数器,当加到最大值(计数器,当加到最大值(00H或或0000H)时,)时,产生溢出,将产生溢出,将TCON寄存器的寄存器的TF位置位置1,产生溢出中断。,产生溢出中断。计数器初值计数器初值X的计算公式:的计算公式:(1)计数工作模式时)计数工作模式时 XM计数值计数值(2)定时工作模式时)定时工作模式时 X M计数值计数值 Mt/T=M (fosc x t)/12 fosc为晶振频率,为晶振频率,t为要求定时的时间。为要求定时的时间。36 例:例:MCS51主频为主
41、频为6MHz,要求产生,要求产生1ms的定时,试计算计的定时,试计算计数初值数初值X。设定时器工作于方式。设定时器工作于方式1。X= 216-(6106110-3)/12=65536-500=65036=FE0CH3、初始化举例、初始化举例T0为计数方式,对外部脉冲计数为计数方式,对外部脉冲计数100次,硬启动,禁止中断,次,硬启动,禁止中断,选工作方式选工作方式2。T1为定时工作方式,定时为定时工作方式,定时25ms,选择工作方式,选择工作方式1,允许中断,软启动;,允许中断,软启动; fosc12MHz,编写初始化程序。编写初始化程序。 初值初值H 初值初值X1
42、65536(12251000)/12405369E58H方式控制字:方式控制字:00011110B 即即1EH37 初始化程序:初始化程序:MOV TMOD, #1EH ;写工作模式字;写工作模式字MOV TH0, #9CH ;T0计数初值,计数初值,TH0值自动重新装入值自动重新装入TL0MOV TL0, #9CH MOV TH1, #9EH ;T1计数初值计数初值MOV TL1, #58HMOV IE, #10001000B ;T1开中断开中断SETB TR0 ;启动;启动T0,但要等到,但要等到 为为1时真正启动时真正启动SETB TR1 ;启动;启动T10INT38 5.3.3 定时定
43、时/计数器的工作方式计数器的工作方式 一、方式一、方式0 方式方式0为为13位计数位计数,由,由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位组成。位组成。TL0的低的低5位溢出时向位溢出时向TH0进位,进位,TH0溢出时,溢出时,置位置位TCON中的中的TF0标志,向标志,向CPU发出中断请求。发出中断请求。39 定时器模式时定时器模式时有有:Nt/ Tcy 计数初值计算的公式为:计数初值计算的公式为: 定时器的初值还可以采用计数个数直接取补法获得定时器的初值还可以采用计数个数直接取补法获得。 计数模式时,计数脉冲是计数模式时,计数脉冲是T0引脚上的外部脉冲。引脚上的外部脉
44、冲。 门控位门控位GATE具有特殊的作用。当具有特殊的作用。当GATE=0时,经反相后使时,经反相后使 或门输出为或门输出为1,此时仅由,此时仅由TR0控制与门的开启,与门输出控制与门的开启,与门输出1 时,控制开关接通,计数开始;时,控制开关接通,计数开始;当当GATE=1时时,由外中断引,由外中断引脚信号控制或门的输出,此时控制脚信号控制或门的输出,此时控制与门的开启由外中断引与门的开启由外中断引脚信号和脚信号和TR0共同控制共同控制。当。当TR0=1时,外中断引脚信号引脚时,外中断引脚信号引脚的的高电平启动计数高电平启动计数,外中断引脚信号引脚的,外中断引脚信号引脚的低电平停止计低电平停
45、止计数数。这种方式常用来测量外中断引脚上正脉冲的宽度。这种方式常用来测量外中断引脚上正脉冲的宽度。 13X=2 -N40 例:在例:在P1.0P1.0引脚输出周期为引脚输出周期为4ms4ms宽的方波。宽的方波。分析:只要每间隔分析:只要每间隔2ms2ms将将P1.0P1.0取反一次即可,设选用取反一次即可,设选用T0T0定时定时器完成定时器完成定时2ms2ms功能。功能。初值计算:初值计算:X0= 2X0= 21313- -(121210106 62 21010-3 -3)/12=6192=1830H/12=6192=1830H由于采用工作方式由于采用工作方式0 0,计数器,计数器1313位。
46、位。0000001 1,10001000,00110011,0000B0000B (1830H1830H)TH0TH0占高占高8 8位(取位(取D5D5D12D12)11001100,0001B0001BTL0TL0高高3 3位补位补0 0:0000001 1,0000B0000B所以所以X0X0的实际值应为:的实际值应为: 11001100,00010001, 0000001 1,0000B0000B即即C110HC110H根据题意设置方式控制字根据题意设置方式控制字TMODTMOD00H00H上电复位后,上电复位后,TMODTMOD各位均为各位均为0 0,所以此字可以不用写入。,所以此字可
47、以不用写入。源程序如下:源程序如下:41 ORG 0010H MOV TH0,#C1H ;T0计数初值计数初值X0 MOV TL0,#10H SETB TR0 ;启动;启动T0LOOP1:JBC TF0,LOOP2;查询查询T0计数是否溢出,同时清除计数是否溢出,同时清除TF0 AJMP LOOP1 ;若溢出重新设置计数初值;若溢出重新设置计数初值LOOP2:MOV TH0,#C1H MOV TL0,#10H CPL P1.0 ;输出取反;输出取反 SJMP LOOP1 ;重复循环;重复循环42 16X=2 -N二、方式二、方式1 方式方式1的计数位数是的计数位数是16位,由位,由TL0作为低
48、作为低8位、位、TH0作为高作为高8位,组成了位,组成了16位加位加1计数器计数器 。计数个数与计数初值的关系为:计数个数与计数初值的关系为: 43 例:用定时器例:用定时器0 0产生一个产生一个50Hz50Hz的方波,由的方波,由P1.1P1.1输出,仍用程序查输出,仍用程序查询方式,振荡频率为询方式,振荡频率为12MHz12MHz。解:方波周期解:方波周期T=1/50T=1/500.02s=20ms0.02s=20ms,定时值为,定时值为10ms10ms。计数初值计数初值X0= 2X0= 21616- -(121210106 610101010-3 -3)/12/12 =65536-100
49、00=55536=D8F0H =65536-10000=55536=D8F0H源程序如下:源程序如下: ORG 0010HORG 0010H MOV TMOD, #11H MOV TMOD, #11H ;T0T0工作于方式工作于方式1 1,定时模式,定时模式 SETB TR0 SETB TR0 ;启动;启动T0T0 LOOP: MOV TH0,#D8H LOOP: MOV TH0,#D8H ;T0T0计数初值计数初值 MOV TL0,#F0HMOV TL0,#F0H JNB TF0, $ JNB TF0, $ ;若;若T0T0无溢出则原地等待,无溢出则原地等待,$ $为地址计数器为地址计数器
50、CLR TF0 CLR TF0 ;若产生溢出,清除中断请求标志位;若产生溢出,清除中断请求标志位 CPL P1.1 CPL P1.1 ;P1.1P1.1取反输出,输出方波取反输出,输出方波 SJMP LOOP SJMP LOOP ;重复循环;重复循环44 8X=2 -N三、方式三、方式2 方式方式2为自动重装初值的为自动重装初值的8位计数方式。位计数方式。 初始化编程时,THi和TLi都装入该计数初值。方式2特别适合于用作较精确的脉冲信号发生器。尤其适用于串口波特率发生器。计数个数与计数初值的关系为计数个数与计数初值的关系为: 45 例:用例:用T0工作于方式工作于方式2,要求每计数满,要求每
51、计数满200次,将次,将P1.1端取反。端取反。 分析:分析:T0工作于计数方式下,外部计数脉冲由工作于计数方式下,外部计数脉冲由T0(P3.5)引脚)引脚引入,每来一个由引入,每来一个由1至至0的跳变计数器加的跳变计数器加1,由程序查询,由程序查询TF0的状的状态。态。初值初值X= 2 28 8-200=56=38H -200=56=38H , TH0=TL0=38HTH0=TL0=38H,TMOD=06HTMOD=06H源程序:源程序: ORG 0010HORG 0010H MOV TMOD, 06H MOV TMOD, 06H MOV TH0,#38H MOV TH0,#38H ;T0T
52、0计数初值计数初值 MOV TL0,#38HMOV TL0,#38H SETB TR0 SETB TR0 ;启动;启动T0T0 LOOP1:JBC TF0,LOOP2 LOOP1:JBC TF0,LOOP2 ;若;若TF0TF01 1,则转,则转LOOP2LOOP2,同时,同时TF0TF00 0 SJMP LOOP1 ; SJMP LOOP1 ;否则一直等待否则一直等待 LOOP2: CPL P1.1 LOOP2: CPL P1.1 ;P1.1 P1.1 取反输出取反输出 SJMP LOOP1SJMP LOOP146 四、方式四、方式3 方式方式3只适用于定时只适用于定时/计数器计数器T0,定
53、时器定时器T1处于方式处于方式3时相当时相当于于TR1=0,停止计数。,停止计数。 工作方式工作方式3将将T0分成为两个独立的分成为两个独立的8位计数器位计数器TL0和和TH0 。 47 其中其中TL0使用原有使用原有T0的控制位和引脚,如:的控制位和引脚,如:C/ 、GATE、TR0、TF0、T0(P3.4)以及以及 (P3.2)引脚。此方式下的引脚。此方式下的TL0除作为除作为8位计数器外,其功能和操作与方式位计数器外,其功能和操作与方式0、1完全相同,可完全相同,可作定时也可作计数用。作定时也可作计数用。 该方式下的该方式下的TH0,只可用作简单的内部定时器功能,它借用定,只可用作简单的
54、内部定时器功能,它借用定时器时器T1的控制位和溢出标志位的控制位和溢出标志位TR1和和TF1,同时占用,同时占用T1的中断的中断源。源。TH0的启动和关闭仅受的启动和关闭仅受TR1的控制,的控制,TR11,TH0启动定启动定时;时;TR10,TH0停止定时工作。停止定时工作。当当T0工作于方式工作于方式3时,时, TH0占用了占用了T1的控制位和溢出标志位的控制位和溢出标志位TR1和和TF1,但定时器,但定时器T1仍可工作于方式仍可工作于方式0、方式、方式1和方式和方式2,作为串行口波特率发生器,或用于任何不需要中断的场合。作为串行口波特率发生器,或用于任何不需要中断的场合。T0INT48 设
55、某用户系统中已使用了两个外部中断源,并设置设某用户系统中已使用了两个外部中断源,并设置T1工作于方工作于方式式2,作串行口波特率发生器。现要求增加一个外部中断源并,作串行口波特率发生器。现要求增加一个外部中断源并由由P1.0输出一个输出一个10KHz的方波,单片机的方波,单片机fosc为为12MHz。分析:为了不增加其他硬件开销,可设置分析:为了不增加其他硬件开销,可设置T0工作于方式工作于方式3计数计数方式。把方式。把T0的引脚作附加的外部中断输入端,的引脚作附加的外部中断输入端,TL0的计数初值的计数初值为为FFH;当检测到;当检测到T0引脚由引脚由1至至0的负跳变时,的负跳变时,TL0立
56、即产生溢立即产生溢出,申请中断,相当于边沿触发的外部中断源。出,申请中断,相当于边沿触发的外部中断源。T0的模式的模式3下,下,TL0作计数用,而作计数用,而TH0可用作可用作8位的定时器,定位的定时器,定时器控制时器控制P1.0输出输出10KHz的方波信号。的方波信号。P1.0输出方波的信号为输出方波的信号为10KHz,周期为,周期为1/10KHz0.1ms。TH0定时为定时为0.05ms,TL0的计数初值为的计数初值为FFH;TH0的计数初值的计数初值X2 28 8- -(0.050.051010-3 -3121210106 6)/12=216=D8H/12=216=D8H49 程序:程序
57、: ORG 0010H MOV TMOD, #27H ;T0工作于方式工作于方式3,计数;,计数;T1工作于方式工作于方式2,定时,定时 MOV TL0,#FFH ;TL0的计数初值的计数初值 MOV TH0, #D8H ; TH0的计数初值的计数初值 MOV TH1, #dataH ;data为根据波特率要求设置的常数为根据波特率要求设置的常数 MOV TL1, #dataL MOV TCON, #55H ;外中断;外中断0、1边沿触发,启动边沿触发,启动T0、T1 MOV IE,#9FH ;开放全部中断开放全部中断TL0溢出中断服务程序(由溢出中断服务程序(由000BH)转来)转来 TL0
58、OF: MOV TL0, #FFH ;TL0重装计数初值重装计数初值 RETITH0溢出中断服务程序(由溢出中断服务程序(由001BH)转来)转来 TH0OF: MOV TH0, #D8H ;TH0重装计数初值重装计数初值 CPL P1.0 ;取反输出取反输出50 运行中读定时运行中读定时/ /计数器计数器80C5180C51可以随时读写计数寄存器可以随时读写计数寄存器TLxTLx和和THxTHx,例实时显示计数值。,例实时显示计数值。在读取操作时应注意分时读取在读取操作时应注意分时读取TLxTLx和和THxTHx。例如:先读。例如:先读TLxTLx,再读,再读THxTHx,如果此时定时如果此
59、时定时/ /计数器还在运行,在读计数器还在运行,在读THxTHx之前刚好之前刚好TLxTLx溢出,向溢出,向THxTHx产生进位,则读得的产生进位,则读得的TLxTLx值就是不正确的;同样,先读值就是不正确的;同样,先读THx THx ,再读,再读TLxTLx时也可能产生这种错误。时也可能产生这种错误。解决方法:先读解决方法:先读THxTHx,再读,再读TLxTLx,再重读,再重读THxTHx,若两次读得的,若两次读得的THxTHx值相值相同,则可以确定读入的数据是正确的,若两次读得的同,则可以确定读入的数据是正确的,若两次读得的THxTHx值不一致,值不一致,则必须重读。则必须重读。程序:程序: RDTIME: MOV A,TH0 ;RDTIME: MOV A,TH0 ;先读先读TH0TH0 MOV R0,TL0 MOV R0,TL0 ;读入;读入TL0TL0并存入并存入R0R0 CJNE A,TH0,RDTIME CJNE A,TH0,RDTIME ;再读;再读TH0TH0,与上次读入值比较,若不等重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 韩语初学者基础知识课件
- 3企业财务风险管理与预警手册(标准版)
- 餐饮业厨房管理操作流程手册
- 消防基础题库及答案
- 图书馆服务流程手册
- 企业社会责任评估与管理手册
- 金融风控与合规管理指南
- 非人员财务知识培训课件
- 2025陕西省建筑安全员考试模拟题及答案
- 小货上岗证考试试题及答案
- 绿电直连政策及新能源就近消纳项目电价机制分析
- 2026届江苏省常州市生物高一第一学期期末检测试题含解析
- 教培机构排课制度规范
- 认识时间(课件)二年级下册数学人教版
- 2026届陕晋青宁四省高三语文二次联考(天一大联考)作文题目解析及范文:“避”的抉择价值判断与人生担当
- 【四年级】【数学】【秋季上】期末家长会:数海引航爱伴成长【课件】
- 律师挂靠协议书
- (2025)意大利多学科工作组共识声明:努南综合征的多学科治疗
- 车位使用权抵债协议书
- 数控加工中的刀具寿命优化与加工成本降低研究毕业答辩
- 储能电站电力销售协议2025
评论
0/150
提交评论