微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机定时器应用(C程序)

51单片机定时器应用(C程序)

时间:11-21 来源:互联网 点击:
用Keil C51开发定时器/计数器

基本的51单片机内部有两个16位可编程的定时器/计数器T0和T1。它们各自具有4种工作状态,其控制字和状态均在相应的特殊功能寄存器中,可以通过软件对控制寄存器编程设置,使其工作在不同的定时状态或计数状态。

现在,许多厂家生产的8051兼容单片机上,还加入了定时器/计数器2,使单片机的应用更为灵活,适应性更强。

很多8051单片机的书籍都对定时器/计数器有详细的介绍,我们在此不再详细地讨论。但因为编写或或阅读程序时经常要查阅定时器/计数器的设置情况,因此我们仅对一些编程时经常要用到的较重要的寄存器和设置方式进行简要简介。

1 定时器/计数器简介

8051单片机的定时器/计数器基本结构如图1-1所示,定时器T0由两个8位计数器TH0和TL0构成,定时器T1也由两个8位计数器TH1和TL1构成,TMOD寄存器控制定时器的工作方式,TCON寄存器控制定时器的启动和停止以及定时器的状态。


图1-1 定时器/计数器结构

在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的。实际上,定时器就是单片机机器周期的计数器。因为每个机器周期包含晶体振荡器的12个振荡周期,而每一个机器周期定时器加1,故其频率为晶振频率的1/12。如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间为1μs。

选择计数器工作方式时,计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1。

2 控制和状态寄存器

(1)定时器控制寄存器(TCON)

TCON为定时器/计数器的控制寄存器,同时也锁存外部中断请求标志,各位定义如下。

? TF1:定时器/计数器1中断请求标志位。当定时器计数满溢出回零时,由硬件置位,并可申请中断。当CPU响应中断并进入中断服务程序后,TF1自动清零。

? TR1:定时器/计数器1运行控制位,靠软件置位或清除。置位时,定时器/计数器1接通工作,清除时停止工作。

? TF0:定时器/计数器0中断请求标志位,其功能和操作情况类同于TF1。

? TR0:定时器/计数器0运行控制位,其功能和操作情况类同于TR1。

? IEl:外部中断1的中断申请标志,检测到在INT引脚上出现的外部中断信号的下降沿时,由硬件置位,申请中断。进入中断服务程序后被硬件自动清除。

? IT1:外部中断1的类型控制位。IT1=1,由下跳沿触发;IT1=0,由低电平触发。可以由软件来设置或清除。

? IE0:外部中断0的中断申请标志。其功能和操作情况类同于IE1。

? IT0:外部中断0的类型控制位。其功能和操作情况类同于IT1。

(2)工作方式寄存器(TMOD)。TMOD确定定时器的工作方式及功能选择,不能位寻址。其中,高4位用于控制定时器1,低4位用于控制定时器0。TMOD各位的定义如下。

? GATE:门控位,当GATE=1时,只有?I?N?T?0或?I?N?T?1引脚为高电平,且TR0或TR1置1时,定时器/计数器才工作。当GATE=0时,定时器/计数器仅受TR0或TR1的控制,而不管?I?N?T?0或?I?N?T?1引脚的电平是高还是低。

? C/?T:定时器/计数器功能选择位,C/?T=0时,设置为定时功能;C/?T=1时,设置为计数功能。

? M1 M0 :工作方式选择位。由M1M0共2位形成4种编码,对应以下4种工作方式。

n M1M0=00:工作方式0(13位方式)。

n M1M0=01:工作方式1(16位方式)。

n M1M0=10:工作方式2(8位自动装入时间常数方式)。

n MlM0=11:工作方式3(2个8位方式——仅对T0)。

3 定时器/计数器设置实例

以定时器/计数器T0为例,在方式0下,TL0的低5位和TH0的8位构成13位计数器,因此计数工作方式时,计数值的范围是:1~8192(213)。

当设定为定时工作方式时,定时时间的计算公式为:

(213-计数初值)×晶振周期×12 或(213-计数初值)×机器周期

这样,我们可以算出,若单片机系统的外接晶振频率为6MHz,则该系统的最小定时时间为:

[213-(213-1)]×[1/(6×106)]×12=2×10-6=2(?s)

最大定时时间为:

(213-0)×[1/(6×106)]×12=16384×10-6=16384(?s)=16.384(ms)

或:最小定时单位×1013=16384(?s)=16.384(ms)

某单片机系统的外接晶振频率为6MHz,使用定时器1,以方式0定时,从P1.0输出2ms方波的计算和设置方法如下:

① 计算计数初值。欲产生2ms的等宽正方波脉冲,只需在P1.0端以1ms为周期交替输出高低电平即可实现,为此定时时间应为1ms。使用6MHz晶振,则机器周期为:

机器周期=12/晶振频率=12/(6×106)=2(?s)

方式0为13位计数结构。设待求

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top