首页 理论教育 6.2.5MCS-51内部定时器/计数器的初始化

6.2.5MCS-51内部定时器/计数器的初始化

时间:2023-10-22 理论教育 版权反馈
【摘要】:因此MCS-51系列单片机在定时器/计数器工作前必须先根据用户使用要求对它进行初始化。2)根据实际需要给定时器/计数器选送定时初值或计数初值,以确实需要定时的时间和需要计数的初值。4)给定时器控制寄存器TCON送命令字,以启动或禁止定时器/计数器的运行。

6.2.5MCS-51内部定时器/计数器的初始化

1.初始化步骤

MCS-51系列单片机内部定时器/计数器是可编程的,其工作方式和工作过程均可由MCS-51系列单片机通过程序对它进行设定和控制。因此MCS-51系列单片机在定时器/计数器工作前必须先根据用户使用要求对它进行初始化。初始化步骤为:

1)根据用户使用要求先给定时器工作方式寄存器TMOD送一个方式控制字,以设定定时器/计数器的相应工作模式和工作方式。

2)根据实际需要给定时器/计数器选送定时初值或计数初值,以确实需要定时的时间和需要计数的初值。

3)根据用户使用要求给中断允许寄存器IE选送中断控制字,给中断优先级寄存器IP选送中断优选级字,以开放相应中断和设定中断优选级。

4)给定时器控制寄存器TCON送命令字,以启动或禁止定时器/计数器的运行。

978-7-111-46831-8-Chapter06-104.jpg

图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-TCT计数

也可写成:

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所示。

解:长定时方法:增加一个软件计数器或一个硬件计

978-7-111-46831-8-Chapter06-105.jpg(www.xing528.com)

例2:门控方式测量正脉冲宽度

978-7-111-46831-8-Chapter06-106.jpg

图6-30 接线图

解:978-7-111-46831-8-Chapter06-107.jpg引脚输入被检测信号,记录在正脉冲的时间内包含机器脉冲个数。图6-31所示是门控位示意图。设脉宽小于65.5ms,等待查询978-7-111-46831-8-Chapter06-108.jpg,正脉冲过后,读出TH1、TL1值。

978-7-111-46831-8-Chapter06-109.jpg

图6-31 门控位示意图

参考程序如下:

978-7-111-46831-8-Chapter06-110.jpg

978-7-111-46831-8-Chapter06-111.jpg

例3:定时器控制循环灯

P1口做输出口,接八只发光二极管,使用定时器作为发光二极管的延时,使发光二极管循环点亮。

解:内部计数器用作定时器时,对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是12MHz,本程序采用工作方式1,即16位方式定时器,定时器50ms中断一次,所以定时常数的计算方法为:机器周期=12÷12MHz=1μs。

定时常数(初值)=65536-50ms/1μs=15536=3CB0H。

接线图和运行结果如图6-32所示。

978-7-111-46831-8-Chapter06-112.jpg

图6-32 接线图与运行结果(见彩插)

参考程序:

978-7-111-46831-8-Chapter06-113.jpg

978-7-111-46831-8-Chapter06-114.jpg

例4:定时中断控制循环灯

用AT89C51的定时器/计数器T0产生2s的定时,每当2s定时到来时,更换指示灯闪烁,每个指示灯闪烁的频率为0.2s,也就是说,开始VL1指示灯以0.2s的速率闪烁,当2s定时到来之后,VL2开始以0.2s的速率闪烁,如此循环下去。0.2s的闪烁速率也由定时器/计数器T0来完成。

接线图如图6-33所示。

978-7-111-46831-8-Chapter06-115.jpg

图6-33 接线图

参考程序:

978-7-111-46831-8-Chapter06-116.jpg

978-7-111-46831-8-Chapter06-117.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈