1.初始化步骤
MCS-51系列单片机内部定时器/计数器是可编程的,其工作方式和工作过程均可由MCS-51系列单片机通过程序对它进行设定和控制。因此MCS-51系列单片机在定时器/计数器工作前必须先根据用户使用要求对它进行初始化。初始化步骤为:
1)根据用户使用要求先给定时器工作方式寄存器TMOD送一个方式控制字,以设定定时器/计数器的相应工作模式和工作方式。
2)根据实际需要给定时器/计数器选送定时初值或计数初值,以确实需要定时的时间和需要计数的初值。
3)根据用户使用要求给中断允许寄存器IE选送中断控制字,给中断优先级寄存器IP选送中断优选级字,以开放相应中断和设定中断优选级。
4)给定时器控制寄存器TCON送命令字,以启动或禁止定时器/计数器的运行。
图6-29 T0在工作方式3时2个8位计数器
2.计数器初值的计算
定时器/计数器在计数器模式下工作时必须给计数器选送计数初值,这个计数初值送到TH(TH0/TH1)和TL(TL0/TL1)中。
定时器/计数器在计数初值基础上以加法计数,并能在计数器从全“1”变为全“0”时自动产生定时溢出中断请求。因此可以把计数器计满为零所需要的计数值设定为C和计数初值设定为TC,由此可得到如下的计算式:
TC=M-C
式中 M——计数器模值,该值和计数器工作方式有关,方式0时M为213;方式1时M为216;
方式2和方式3时M为28。
3.定时器初值的计算
在定时器模式下,定时器/计数器由单片机主脉冲经12分频后进行计数,因此定时器定时时间T的计算公式为:
T=(M-TC)T计数
也可写成:
TC=M-T/T计数
式中 M——模值,和定时器的工作方式有关;
T计数——单片机时钟周期TCLK(ΦCLK的倒数)的12倍;
TC——定时器的定时初值。
上式中,若设TC=0,则定时器定时时间为最大。由于M的值和定时器工作方式有关,因此不同工作方式下定时器的最大定时时间也不一样。例如:设单片机主脉冲频率ΦCLK为12MHz,则最大定时时间为:
方式0时,Tmax=213×1μs=8.192ms;
方式1时,Tmax=216×1μs=65.536ms;
方式2和3时,Tmax=28×1μs=0.256ms。
例1:P1.7驱动LED亮1s灭1s地闪烁,设时钟频率为6MHz。接线如图6-30所示。
解:长定时方法:增加一个软件计数器或一个硬件计
(www.xing528.com)
例2:门控方式测量正脉冲宽度
图6-30 接线图
解:引脚输入被检测信号,记录在正脉冲的时间内包含机器脉冲个数。图6-31所示是门控位示意图。设脉宽小于65.5ms,等待查询,正脉冲过后,读出TH1、TL1值。
图6-31 门控位示意图
参考程序如下:
例3:定时器控制循环灯
P1口做输出口,接八只发光二极管,使用定时器作为发光二极管的延时,使发光二极管循环点亮。
解:内部计数器用作定时器时,对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是12MHz,本程序采用工作方式1,即16位方式定时器,定时器50ms中断一次,所以定时常数的计算方法为:机器周期=12÷12MHz=1μs。
定时常数(初值)=65536-50ms/1μs=15536=3CB0H。
接线图和运行结果如图6-32所示。
图6-32 接线图与运行结果(见彩插)
参考程序:
例4:定时中断控制循环灯
用AT89C51的定时器/计数器T0产生2s的定时,每当2s定时到来时,更换指示灯闪烁,每个指示灯闪烁的频率为0.2s,也就是说,开始VL1指示灯以0.2s的速率闪烁,当2s定时到来之后,VL2开始以0.2s的速率闪烁,如此循环下去。0.2s的闪烁速率也由定时器/计数器T0来完成。
接线图如图6-33所示。
图6-33 接线图
参考程序:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。