一、结构

51单片机有2个16位的定时器/计数器,它们有四种工作方式。定时器系统的结构如下:

定时器中使用useState 定时器方式0_定时器中使用useState

 

 

 

定时器的工作方式由寄存器TMOD选择,TMOD如下:

 

定时器中使用useState 定时器方式0_寄存器_02

 

 

 

定时器的四种工作方式由M1,M0选择,对应如下:

M1                   M0

0                        0      方式0

0                         1     方式1

1                         0     方式2

1                         1     方式3

C/T(非)则选择定时器/计数器是工作在计数方式还是定时方式。1:counter 0:timer

GATE为1时选择定时/计数器工作在门控方式

定时器的的工作由寄存器TCON控制,TCON如下:

定时器中使用useState 定时器方式0_定时器中使用useState_03

 

 

 

TCON的高四位与定时/计数器有关,低四位与外部中断有关,TRX=1时开启定时/计数器,THX+TLX开始计数,当THX 和TLX溢出时,TFX被置1.

THX(X=0,1)和TLX(X=0,1)两个8位的寄存器共同组成16位的寄存器,一起记录定时/计数器的计数值。

二、四种工作方式:

1.工作方式0

当TMOD中的M0=0,M1=0时,定时/计数器工作在方式0.

 定时/计数器0(t0)在工作方式0时的结构图如下(t1与t0完全一样):

定时器中使用useState 定时器方式0_寄存器_04

 

 

暂时不管下半部分。从图中可以看出,计数寄存器TH0的8位和TL0的低5位位组成13位计数器,TR0=1时(打开计数器----也和GATE有关,此时GATE=0),当C/T(非)=0时,计数时钟源接通晶振的的12分频,晶振每12个周期产生一个计数脉冲,计数寄存器+1,这时t0作定时器用;当C/T(非)=1时,计数时钟源接通外部引脚P3.4,外部输入一个脉冲,计数寄存器+1,这时t0作计数器。

当13位的计数寄存器溢出时,会把TF0位置1,如果设置了中断,则会产生定时中断。

书接上回,下面是定时器的其他工作方式。

一、工作方式1:(还是拿t0做说明)

定时/ 计数器的工作方式1是用的比较多的,它的结构图如下:

 

 (图片遗失,转移的时候找不到链接了。。。。。)

 

 

TH0的八位和TL0的八位构成一个16位定时/计数器,可以定时时间最长

   在工作方式1下,计数器的计数值范围是:

          1—65536(216

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

         (216—计数初值)╳晶振周期╳12

    或   (216—计数初值)╳机器周期

    其时间单位与晶振周期或机器周期相同。

    如果单片机的晶振选为6.000MHz,则最小定时时间为:

        [213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)

        (216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。

 

下面说GATE:

“GATE”顾名思意既门,它通过一个反相器与INT0(非)引脚,又叫T0引脚相或(图是在网上截的,估计有错),如果GATE=1,或门由INT0引脚控制,INT0=1时,或门打开,与TR0相与,事先打开TR=1,那么在INT0=1的这段时间内,内部计数器就可以计数,等INT0=0时,此时计数器的计数值(TH0<<8|TL0)*(12/osc)就是外部输入的脉冲高电平的持续时间,这种门控方式可以用来计算外部引脚输入的脉冲频率等。

定时器0应用举例: