您的位置 首页 > 汽车百科

【51con】51单片机的定时器/计数器的原理与使用

CPU时序相关知识

振动周期:为单一芯片提供定时信号的振动源的周期(晶体珍珠机或附加珍珠机)

状态周期:两个振动周期是一个状态周期(用S表示)。振动周期也称为S周期或时钟周期。

机器周期:1机器周期有6个状态周期,12个振动周期。

命令周期:完成一个命令所需的全部时间(机器周期)。

例如:如果外部结晶为12MHz,则51单片机相关周期的发生情况如下:

振动周期=1/12us;

状态周期=1/6 us;

机器周期=1us

命令周期=1至4us

在学习计时器之前,需要知道的是

51单片机有两套计时器/计数器,这叫计时器/计数器,因为计时和计数都可以。

计时器/计数器和单片机CPU彼此独立。

计时器/计数器操作过程是自动执行的,不需要CPU的参与。

51单片机的计时器/计数器根据机器内部的时钟或外部脉冲信号将寄存器中的数据加1。

计时器/计数器可以提高单片机的效率,几个简单的迭代加1操作可以在计时器/计数器上处理。CPU却处理复杂的事情。同时可以达到正确的计时效果。

定时/计数器的工作方式

计时/计数器基本上是加1计数器。加上计数器的输入脉冲,加上1。也就是说,每一脉冲,计数器自动增加1,当计数器为全部1时,输入另一脉冲,计数器返回0,计数器溢出导致相应的中断标志位置1向CPU发出中断请求(在允许定时/计数器中断的情况下)。如果计时/计数器在计时模式下工作,则计时时间已到达。如果任务处于计数模式,则计数值已满。

溢出时计数器值减去计数初始值是加1计数器的计数值。

51单片机定时器结构

定时/计数器的本质是加1计数器(16位),由高8位和低8位寄存器THx和TLx组成。TMOD是定时/计数器的工作原理寄存器,用于确定工作原理和功能。TCON是控制T0、T1的启动和停止以及设置溢出标志的控制寄存器。

定时/计数器控制

51单片机定时/计数器的操作由两个特殊功能寄存器控制。TMOD用于设置工作方式。TCON用于控制启动和中断请求。

1、工作原理寄存器TMOD。

工作方式寄存器TMOD用于设置定时/计数器的工作方式。低4位是T0,高4位是T1。格式如下:

当GATE为栅极位且Gate=0时,用于控制计时器的启动是否受外部中断源信号的影响。使用软件,您可以在TCON中将TR0或TR1设置为1时开始计时/计数器操作。

如果GATA=1,则只有使用软件使TR0或TR1成为1,外部中断针脚INT0/1也是高电平时,才能启动定时/计数器操作。也就是说,此时计时器的启动条件和INT0/1针脚为高电平的条件将被添加。

C/T :定时/计数模式选择位。C/t=0是计时模式。C/T=1是计数模式。

M1M0:设置工作方法的位。计时/计数器有四种工作方法。

2、控制寄存器TCON

TCON的低4位用于控制外部中断,前面已经讨论过了。TCON的4位高用于控制

定时/计数器启动和停止请求的开发格式如下:

Tf1 (tcon.7): t1溢出中断请求标志位。T1计数超过时,硬件会自动将TF1设置为1。CPU响应中断后,TF1由硬件自动清除0。T1工作时,CPU可以随时查询TF1的状态。因此,TF1可以用作查询测试的标志。TF1也可以用软件设置1或0,就像硬件1或0一样。

Tr1 (tcon.6): t1执行控制位。TR1批次1、T1开始工作。如果TR1设置为0,T1将停止工作。软件将TR1设置为1或0。因此,可以使用软件控制计时/计数器的启动和停止。

Tf0 (tcon.5): t0溢出

断请求标志位,其功能与TF1类同。

TR0(TCON.4):T0运行控制位,其功能与TR1类同。

定时/计数器的工作方式

1、方式0

方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

定时器模式时有:N=t/ Tcy

计数初值计算的公式为:X=2^13-N。

定时器的初值还可以采用计数个数直接取补法获得。

计数模式时,计数脉冲是T0引脚上的外部脉冲。

门控位GATE具有特殊的作用。当GATE=0时,经反相后使或门输出为1,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始;当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。

2、方式1

方式1的计数位数是16位,由TL0作为低8位,TH0

作为高8位,组成了16位加1计数器 。

计数个数与计数初值的关系为:X=2^16-N

3、方式2

方式2为自动重装初值的8位计数方式。

计数个数与计数初值的关系为:X=2^8-N

工作方式2特别适合于用作较精确的脉冲信号发生器。

4、方式3

方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。

工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。

使用定时器,该做哪些工作

初始化程序应完成如下工作:

1.对TMOD赋值,以确定T0和T1的工作方式。 2.计算初值,并将其写入TH0、TL0或TH1、TL1。 3.中断方式时,则对EA赋值,开放定时器中断。 4.使TR0或TR1置位,启动定时/计数器定时或计数。

计数器初值的计算:

机器周期也就是CPU完成一个基本操作所需要的时间。

机器周期=1/单片机的时钟频率。

51单片机内部时钟频率是外部时钟的12分频。也就是说当外部晶振的频率输入到单片机里面的时候要进行12分频。比如说你用的是12MHZ的晶振,那么单片机内部的时钟频率就是12/12MHZ,当你使用12MHZ的外部晶振的时候。机器周期=1/1M=1us。

而我们定时1ms的初值是多少呢,1ms/1us=1000。也就是要计数1000个数,初值=65535-1000+1(因为实际上计数器计数到64536才溢出)=64536=FC18H

定时器中断

使用定时器,该做哪些工作

初始化程序应完成如下工作:

对TMOD赋值,以确定T0和T1的工作方式。

计算初值,并将其写入TH0、TL0或TH1、TL1。

中断方式时,则对EA赋值,开放定时器中断。

使TR0或TR1置位,启动定时/计数器定时或计数。

关于作者: luda

无忧经验小编鲁达,内容侵删请Email至wohenlihai#qq.com(#改为@)

热门推荐