版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章定时器/计数器及应用内容
定时/计数技术概述7.180C51单片机的定时器/计数器7.2定时器/计数器的应用7.37.1定时/计数技术概述定时和计数都是利用计数器对脉冲进行计数。定时是对周期固定的内部机器周期脉冲进行计数,定时时间为脉冲周期与脉冲个数的乘积。计数是对外界产生的脉冲进行计数。计数器的计数方式可以是加1计数,也可以是减1计数。在单片机控制系统中定时/计数的实现方法有3种:软件定时/计数器、数字电路定时/计数器和可编程定时/计数器。7.1.1软件定时/计数器软件定时是靠执行一段循环程序以实现时间延迟。如本书前面常用的voidDelayMS(uintxms)延时子函数:voidDelayMS(uintxms){ uinti,j; for(i=0;i<xms;i++)for(j=0;j<110;j++);}7.1.2数字电路定时/计数需要计数较多或定时时间较长,常使用硬件电路完成。硬件定时/计数的特点是定时/计数功能全部由硬件电路完成,不占用CPU的时间,但需要通过改变电路中的元件参数来调节定时时间和计数长度,使用上不够灵活。7.1.3可编程定时/计数为了使用方便并增加单片机的功能,很多单片机内部都集成了可编程的定时/计数器。80C51单片机内部就有可编程的定时/计数器,其中51子系列内部有2个,52子系列内部有3个。本章只介绍51子系列内部的定时器/计数器。7.280C51单片机的定时器/计数器51子系列单片机内部有两个独立的16位可编程定时/计数器,分别称为定时器0(简称T0)和定时器1(简称T1),它们可以编程选择工作于定时模式或外部事件计数模式,此外它们的工作方式、定时时间、计数值、启动、是否允许中断等都可以由程序设定。7.2.1定时器/计数器的结构定时器/计数器的内部结构框图如图7-1所示。图7-1定时器/计数器0、1的内部结构框图7.2.2定时器/计数器的工作原理定时器/计数器T0、T1的工作原理图如图7-2所示。图7-2定时器/计数器的工作原理图(a)定时器/计数器0(T0)工作原理图7.2.2定时器/计数器的工作原理定时器/计数器T0、T1的工作原理图如图7-2所示。图7-2定时器/计数器的工作原理图(b)定时器/计数器1(T1)工作原理图1.工作方式寄存器TMOD
TMOD用来选择定时器/计数器的工作模式和工作方式,字节地址为89H,不能进行位寻址,低4位用于定时器/计数器T0,高4位用于定时器/计数器T1,其格式如下所示:
8位分为2组,高4位控制T1,低4位控制T0。各位的含义说明如下:(1)M1、M0:工作方式选择位定时器/计数器有四种工作方式,由M1、M0进行设置,如表7-1所示。表7-1定时器/计数器0、1的工作方式选择M1M0工作方式00方式0,为13位定时器/计数器01方式1,为16位定时器/计数器10方式2,具有自动重装初值的8位定时器/计数器11方式3,仅适用于T0,T0分成两个独立的8位计数器,T1停止计数(2):定时器/计数器工作模式选择位。=0,为定时器工作模式;=1,为计数器工作模式。(3)GATE:门控位。GATE=0,定时器/计数器0、1的启动计数由TCON中的TR0、TR1控制,当TR0或TR1为1时,就可以启动定时器/计数器0或1工作。GATE=1,定时器/计数器0、1的启动计数由TCON中的TR0、TR1和外部中断引脚、一起控制。当TR0或TR1为1,同时或也为高电平时,才能启动定时器/计数器0或1工作。例7-1若定时器T1工作于方式2计数模式,定时器T0工作于方式1定时模式,GATE=0,要求设置TMOD。解:根据TMOD各位的定义,得TMOD=01100001B=61H。2.控制寄存器TCONTCON的字节地址为88H,可位寻址,位地址为88H~8FH,TCON的格式如下:
低4位与外部中断有关,已在第6章中介绍,高4位的功能如下:(1)TF1:定时器/计数器T1溢出中断请求标志位。定时器/计数器T1计数溢出后,硬件自动将TF1置1。使用查询方式时,查询到TF1=1后,应该及时用软件方法将TF1清0。使用中断方式时,CPU响应中断后,进入中断服务程序后由硬件自动将TF1清0。(2)TR1:定时器/计数器T1的运行控制位。TR1=1,启动定时器/计数器工作;TR1=0,停止定时器/计数器工作。(3)TF0:定时器/计数器T0的溢出中断请求标志位,其功能与TF1类似。(4)TR0:定时器/计数器T0的运行控制位,其功能与TR1类似。3.定时器/计数器的工作模式选择定时器/计数器的工作模式选择由决定,如图7-3所示
位控制的电子开关S1决定了定时器/计数器的工作模式,电子开关打在上面=0,电子开关打在下面=1。=0时为定时器工作模式,以系统晶振频率12分频后的信号,即Tcy信号作为计数器基准信号。=1时为计数器工作模式,计数脉冲为P3.4引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。4.定时器/计数器的运行控制定时器/计数器的运行控制如图7-4所示,电子开关S2闭合时定时器/计数器启动计数,S2断开时定时器/计数器停止计数。电子开关S2由门控位GATE、运行控制位及外部中断输入引脚共同控制。
当门控位GATE=0时,或门A输出为1,定时器/计数器T0启动运行受TR0一个条件控制。当门控位GATE=1时,定时器/计数器T0启动运行受TR0和外部中断0引脚的状态两个条件控制。此时,定时器T0的运行情况如表7-2所示。表7-2GATE=1时,与门B输出与定时器T0的运行情况TR0与门B输出定时器工作情况111启动运行010停止运行100停止运行000停止运行7.2.3定时器/计数器的工作方式定时器/计数器的工作方式有4种,由TMOD中的M1M0控制。1.方式0当TMOD的M1M0=00时,定时器/计数器工作于方式0,为13位的定时器/计数器方式。由TL0的低5位和TH0的高8位构成13位的计数器,如图7-5所示。TL0低5位计数溢出则向TH0进位,TH0计数溢出则置位TCON中的溢出标志位TF0。单片机内部的定时器/计数器为加法计数器,假设N是计数值,x为计数初值,n为定时器/计数器的位数,它们之间的关系如下:N=2n-x如果定时器/计数器工作于定时器工作模式,晶振频率为fosc,要求的定时时间为T,则机器周期Tcy为12/fosc,定时时间、计数初值和机器周期的关系如下:T=(2n-x)×Tcy方式0中初值x的设置范围:0~8191(0~213-1),TH0、TL0从初值开始加法计数,直至溢出,所以设置的初值不同,定时时间或计数值也不同。因此方式0工作时计数值和定时值分别为:N=213-x=8192-xT=(2n-x)Tcy=(8192-x)Tcy由于为加1计数器,当x取为8191时,计数值最小,为1;当x取为0时,计数值最大,为8192。因此方式0的计数范围为:1~8192,定时范围:(1~8192)Tcy。注意:方式0加法计数器TH0溢出后,必须用程序重新对TH0、TL0设置初值,否则下一次TH0、TL0将从0开始加法计数。例7-2已知晶振频率fosc=12MHz,要求定时器0产生1ms的定时时间,问送入TH0和TL0的计数初值各为多少?试对定时器进行初始化编程。解:由于晶振频率为12MHz,所以机器周期Tcy=1μs,定时器0选用方式0时最大定时时间为8192μs,即8.192ms,而题目要求的定时时间为1ms,小于8.192ms,所以可以选用方式0。(1)计算TH0、TL0的计数初值T=(2n-x)×Tcy=(213-x)×1μs=1ms=1000μs,所以x=8192-1000=7192=1C18H=0001110000011000B,取其低13位,放入TH0和TL0,则TH0=E0H,TL0=18H。(2)TMOD寄存器初始化根据题目要求,GATE(TMOD.3)=0,(TMOD.2)=0,M1(TMOD.1)=0,M0(TMOD.0)=0,定时器/计数器1没有使用,相应的各个位随意状态,均取为0,则(TMOD)=00H。(3)初始化程序voidinit_time0(void){ TMOD=0x00;//设置T0为定时器模式,工作在方式0 TH0=0xE0; TL0=0x18; TR0=1;// 启动T0}方式0是13位定时器/计数器,目的是为了兼容早期的MCS-48单片机,计数初值有高8位和低5位构成,确定初值比较麻烦,所以在实际应用中已应用不多。2.方式1当TMOD的M1M0=01时,定时器/计数器工作于方式1,工作于16位的定时器/计数器方式。由8位TL0和8位TH0构成16位计数器,如图7-6所示。TL0计数溢出则向TH0进位,TH0计数溢出则置位TCON中的溢出标志位TF0。方式1和方式0的差别仅在于计数器的位数不同,方式1是16位定时器/计数器,由TH0高8位和TL0低8位构成,方式0是13位定时器/计数器。方式1中初值x的设置范围:0~65535(0~216-1),TH0、TL0从初值开始加法计数,直至溢出。选择方式1工作时计数值和定时值分别为:N=216-x=65536-xT=(216-x)Tcy=(65536-x)Tcy当x取为65535时,计数值最小,为1;当x取为0时,计数值最大,为65536。因此方式1的计数范围为:1~65536,定时范围:(1~65536)Tcy。注意:方式1加法计数器TH0溢出后,必须用程序重新对TH0、TL0设置初值,否则下一次TH0、TL0将从0开始加法计数。例7-3已知晶振频率fosc=12MHz,要求定时器0产生10ms的定时时间,试对定时器进行初始化编程。解:由于晶振频率为12MHz,机器周期Tcy=1μs,选用方式0时最大定时时间8.192ms,选择方式1时,最大定时时间为65.536ms,要求的定时时间为10ms,所以不能选择方式0,只能选用方式1。(1)计算TH0、TL0的计数初值由于晶振频率为12MHz,所以机器周期Tcy=1μs,则定时时间为:T=(2n-x)×Tcy=(216-x)×1μs=10ms,所以x=65536-10000=55536=D8F0H即TH0=D8H,TL0=F0H,或者TH0=55536/256,TL0=55536%256(2)TMOD寄存器初始化根据题目要求,GATE(TMOD.3)=0,(TMOD.2)=0,M1(TMOD.1)=0,M0(TMOD.0)=1,定时器/计数器1没有使用,相应的各个位状态随意,均取为0,则(TMOD)=01H。(3)初始化程序voidinit_time0(void){ TMOD=0x01;//设置T0为定时器模式,工作在方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1;// 启动T0}3.方式2当TMOD的M1M0=10时,定时器/计数器工作于方式2,工作于8位自动重装初值的8位定时器/计数器方式。方式2计数器构成如图7-7所示,TL0作为8位计数器使用,TH0作为初值寄存器用,TL0计数溢出后,将TF0置1,同时发出自动重装初值的信号,使三态门打开,将TH0中初值自动送入TL0,使TL0从初值开始重新计数。方式2中初值x的设置范围:0~255(0~28-1),TL0从初值开始加法计数,溢出后TH0中初值重新置入TL0。方式2工作时计数值和定时值分别为:
N=28-x=256-xT=(28-x)Tcy=(256-x)Tcy当x取为255时,计数值为1;当x取为0时,计数值为256。因此方式2的计数范围为:1~256,定时范围:(1~256)Tcy由于工作方式2有自动重新装载初值的功能,因此特别适用于定时控制。例7-4已知晶振频率fosc=12MHz,要求每隔200μs产生一定时信号,试对定时器进行初始化。解:选择定时器0,工作在方式2。(1)计算TH0、TL0的计数初值由于晶振频率为12MHz,所以机器周期Tcy=1μs,则(2n-x)×Tcy=(28-x)×1μs=200μs,所以x=256-200=56=38H即TH0=38H,TL0=38H或者TH0=(256-200)/256,TL0=(256-200)%256。(2)TMOD寄存器初始化GATE(TMOD.3)=0,(TMOD.2)=0,M1(TMOD.1)=1,M0(TMOD.0)=0,定时器/计数器1没有使用,相应的各个位状态随意,均取为0,则(TMOD)=02H。(3)初始化程序voidinit_time0(void){ TMOD=0x02;//设置T0为定时器模式,工作在方式1 TH0=0x38; TL0=0x38; TR0=1;// 启动T0}4.方式3方式3只适用于定时器/计数器T0,当TMOD的M1M0=11时,定时器/计数器T0工作于方式3,定时器/计数器T1不能工作在方式3。定时器/计数器T0工作于方式3的工作原理如图7-8所示。(a)TL0作8位定时器/计数器(b)TH0作8位定时器图7-8定时器/计数器T0方式3原理图方式3时,T0分成两个独立的8位计数器:TL0和TH0,TL0是8位定时器/计数器,TH0是8位定时器,TL0使用T0的状态控制位、GATE、TR0、,当TL0计数溢出时,由硬件将TF0置1,向CPU发出中断请求。TH0固定为定时器方式,是8位定时器模式,只能对机器周期Tcy进行计数,不能作为计数器模式,对外部脉冲进行计数。由于TL0已占用了TR0和TF0,因此TH0借用了定时器/计数器T1的TR1和TF1,TH0的启动和停止受TR1控制,TH0定时时间到,将TF1置1。定时器/计数器T0工作在方式3时,定时器/计数器T1虽然还可以选择为方式0、方式1或方式2,但是由于TH0借用了定时器/计数器T1的TR1和TF1,不能产生溢出中断请求信号,这时T1就不能用于需要中断方式的场合,而通常用作串行口的波特率发生器。定时器/计数器T0工作在方式3时的计数范围为:1~256,定时范围:(1~256)Tcy。7.2.4定时器/计数器对输入信号的要求定时器/计数器的作用是用来精确地确定某一段时间间隔(作为定时器用),或累计外部输入的脉冲个数(作为计数器用)。当用做定时器时,在其输入端输入周期固定的脉冲,根据定时器/计数器中累计(或事先设定)的周期固定的脉冲个数,即可计算出所定时间的长度。当80C51内部的定时器/计数器被选定为定时器工作模式时,计数输入信号是内部机器周期脉冲,每个机器周期产生一个脉冲,计数器增1,定时器/计数器的输入脉冲频率为时钟振荡频率的1/12。当采用12MHz频率的晶体时,计数速率为1MHz,输入脉冲的周期间隔为1μs。由于定时的精度决定于输入脉冲的周期,因此当需要高分辨率的定时,应尽量选用频率较高的晶振(80C51最高为40MHz)。对输入信号的基本要求如图7-9所示,图中Tcy为机器周期。图7-9对输入信号的基本要求7.3定时器/计数器的应用定时器/计数器是单片机应用系统中重要的功能部件,通过灵活应用其不同的工作方式可以减轻CPU的负担,简化外围电路,本节通过几个典型的例子,介绍定时器的使用方法。例7-5已知晶振频率fosc=12MHz,编程使P2.0引脚上产生100ms的方波程序。解:分析:方波的周期为100ms,要求高、低电平的持续时间各为50ms,采用定时器定时,中断工作方式。每50ms时间到时,在中断服务程序中将P2.0引脚电平状态取反,即可获得所需要的波形。晶振频率fosc=12MHz,Tcy=12/fosc=1μs,选择定时器T1的方式1。(1)确定计算初值(2n-x)×Tcy=(216-x)×1μs=50ms,x=65536-50000=15536=3CB0H即TH1=3CH,TL1=B0H或者TH1=(65536-50000)/256,TL1=(65536-50000)%256。(2)TMOD寄存器初始化GATE(TMOD.7)=0,(TMOD.6)=0,M1(TMOD.5)=0,M0(TMOD.4)=1,定时器/计数器0没有使用,相应的各个位状态随意,均取为0,则(TMOD)=10H。(3)程序如下:#include<reg51.h>#defineuintunsignedintsbitfangbo=P2^0;voidmain(){ TMOD=0x10;//设置T1为定时器模式,工作在方式1 TH1=0x3C; TL1=0xB0; EA=1;//开总中断
ET1=1;//允许T1中断
TR1=1;// 启动T1 while(1); }voidtimer1()interrupt3//定时器1中断服务程序{ TH1=(65536-50000)/256; TL1=(65536-50000)%256; fangbo=~fangbo; }P2.0引脚上输出的周期位100ms的方波仿真结果如图7-10所示。图7-10P2.0引脚上的100ms方波信号仿真图(每小格为10ms)例7-6利用单片机的定时器设计一个秒表,使它从0~59s计数,晶振频率fosc=12MHz,设计秒表的proteμs仿真电路,并编写程序。 解:(1)分析:已知晶振频率fosc=12MHz,Tcy=1μs,选定时器T0或定时器T1均可,但是应该选择方式0、1、2或3中的哪一种呢?
各种方式的定时时间计算公式为(2n-x)×Tcy,当计数初值x为0时,各种方式最长的定时时间如下:方式0:213×Tcy=8192μs=8.192ms;方式1:216×Tcy=65536μs=65.536ms,方式2:28×Tcy=256μs,方式3:28×Tcy=256μs。方式1是定时时间最长的一种方式,它的最长定时时间为65.536ms,也达不到1s。因此要达到1s的延时,只能采用多次中断的方式。选择定时器T0,方式1,设定T0的定时时间为50ms,每隔50ms中断1次,中断20次即为1s。(2)确定计算初值(2n-x)×Tcy=(216-x)×1μs=50ms,x=65536-50000=15536=3CB0H即TH0=3CH,TL0=B0H(3)TMOD寄存器初始化GATE(TMOD.3)=0,(TMOD.2)=0,M1(TMOD.1)=0,M0(TMOD.0)=1,定时器/计数器1没有使用,相应的各个位随意状态,均取为0,则(TMOD)=01H。(4)Proteus仿真电路设计秒表的Proteus电路如图7-11所示,采用两位共阴极数码管显示秒数,数码管段选由P1口控制,十位数码管的位选由P2.0控制,个位数码管的位选由P2.1控制。(5)程序设计如下:#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharuchartemp,aa,shi,ge;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管码表voiddisplay(ucharshi,ucharge);//显示子程序voiddelay(uintz);//延时子程序voidinit();//定时器初始化子程序voidmain(){ init();//初始化子程序 while(1) { if(aa==20) { aa=0; temp++; if(temp==59) { temp=0; } shi=temp/10; ge=temp%10;
display(shi,ge); }}voiddelay(uintz)//延时子程序{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddisplay(ucharshi,ucharge)//显示子程序{
P2=0xfe;//送入十位数码管位选信号,显示数字
P1=table[shi];//送入十位数码管的段选信号 delay(5); P2=0xfd;//送入个位数码管位选信号,显示数字 P1=table[ge];//送入个位数码管的段选信号 delay(5);}voidinit()//定时器初始化程序{ temp=0; TMOD=0x01;//设置T0为定时器模式,工作在方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;
EA=1;//开总中断 ET0=1;//允许T0中断 TR0=1;// 启动T0}voidtimer0()interrupt1//定时器T0中断服务子程序{ TH0=(65536-50000)/256;//重新设置定时器初值 TL0=(65536-50000)%256; aa++; //中断次数加1}例7-7利用单片机的定时器设计交通信号灯控制电路,用Proteus仿真软件验证。解:(1)分析:交通灯有四个方向,南北向是同样的工作模式,东西向是同样的工作模式,只要将交通灯的工作模式列出来,采用定时器实现定时控制,当定时时间到的时候,进行模式切换,就可以实现交通灯的控制。设交通灯有如下四种工作模式(为了便于演示,切换时间较短):①东西向绿灯与南北向红灯亮5s;②东西向绿灯灭,黄灯闪烁5次;③东西向红灯与南北向绿灯亮5s;④南北向绿灯灭,黄灯闪烁5次;定时器的四种定时方式中方式1是定时时间最长的一种方式,但它的最长定时时间也只为65.536ms,无法达到5s的延时,所以本题仍然采用定时器延时50ms的方法,在定时器的中断程序中采用软件计数的方法来加长延时时间。(2)Proteus仿真电路设计交通灯的Proteus仿真电路如图7-12所示,将交通灯通过反相器7405接在P0口上,P0口通过上拉电阻接+5V。#include<reg52.h>#defineuintunsignedint#defineucharunsignedcha
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 30269.801-2017信息技术 传感器网络 第801部分:测试:通 用要求》
- 深度解析(2026)《GBT 30071-2013细颗粒高密度特种石墨产品》
- 深度解析(2026)《GBT 29999-2013 铜矿山酸性废水综合处理规范》
- 深度解析(2026)《GBT 29876-2013非发酵豆制品生产管理规范》:构建从原料到成品的全链条品质与安全管控体系专家视角解读
- 深度解析(2026)《GBT 29771.1-2013工业机械数字控制器 第1部分:通 用技术条件》
- 深度解析(2026)《GBT 29839-2013额定电压1kV(Um=1.2kV)及以下光纤复合低压电缆》
- 深度解析(2026)《GBT 29677-2013化妆品中硝甲烷的测定 气相色谱-质谱法》
- 《GBT 731-2008黄麻布和麻袋》(2026年)合规红线与避坑实操手册
- 《DLT 615-2013高压交流断路器参数选用导则》(2026年)合规红线与避坑实操手册
- 2026年生物传感器开发合同
- 2025中国经皮冠状动脉介入治疗指南课件
- 江苏交通控股有限公司笔试内容
- (二模)温州市2026届高三第二次适应性考试地理试卷(含答案)
- 《公路水运工程施工安全标准化指南》
- 社区公共充电设施便民化改造建设方案
- 2026年中考《语文》作文10大主题抢分万能模板
- 社区信息化网络建设推广与应用项目可行性研究报告
- 阿里员工绩效考核制度
- 厨房设备施工安全措施
- 2025+NICE指南:跌倒风险评估与预防解读课件
- 2025年上海电机学院公开招聘11人备考题库附答案详解
评论
0/150
提交评论