51单片机定时器使用
下面用到的图片都可以在数据手册中找到,我引用了一些,加入对自己的理解
各寄存器含义
1.定时/计数器控制寄存器TCON
- 从图可知它的低4位与外部中断有关,高4位才是定时/计数相关的功能
TF1、TF0:计数溢出标志位。当计数器计数溢出时,该为由硬件置1。有两种方式清0,软件清0和进入中断硬件自动清0。
TR1、TR0:计数运行控制位。TR1\TR0=1时,启动定时\计数器计数;TR1\TR0=0时,停止定时\计数器。该位由软件置1或清0。
2.定时/计数器方式控制寄存器TMOD
- 从图可知它8位可分为两组,高4位控制着T1,低4位控制着T0
GATE:门控位。当GATE=0时,定时/计数器是否计数,只由TRx(x=0,1)控制。TRx=1,启动;TRx=0,停止;如果GATE=1时,当外部中断引脚(/INTx)电平为高并且TRx被置1时,才启动定时器,/INTx前面的/表示非。
M1和M0:工作方式选择位。
C/T:控制选择为计数器模式还是定时器模式。C/T=0,设为定时器模式,对系统时钟12分频后的内部脉冲信号进行计数;C/T=1,设为计数器模式,对加在外部输入引脚T0(或T1)的外部脉冲信号进行计数。
对于STC89C51RC/RD+系列单片机来说,有两种计数速度,下面将说到。
SYSclk:System Clock系统时钟的简写。
MCU in 12T mode:传统8051中,1个机器周期=12个时钟周期,机器周期是单片机完成一次操作所需的最短时间,所以我们可以知道一个机器周期使计数加1,即12个时钟周期使计数加1。上面的图中➗12就代表对系统时钟12分频后的内部脉冲信号进行计数。内部脉冲信号=机器周期。
MCU in 6T mode:➗6代表的是1个机器周期=6个时钟周期,,即6个时钟周期使计数加1。它的速度是传统8051的两倍。
一个机器周期的时间是多少
机器周期:单片机完成一个操作的最短时间。
时钟周期:时序中的最小单位,其大小是晶振分之一。
例如某个开发板上面的晶振是11.0592MHz,那么对于这个单片机系统来说,时钟周期T等于
T = 1/11059200秒
1个机器周期=12个时钟周期
在定时器中,不论是在的定时模式还是计数模式下,实质都是对脉冲信号计数。单片机的系统时钟经内部12分频以后变成脉冲信号(脉冲信号周期=机器周期),也就是来一个脉冲信号就加1,所以我们也可以理解为来1个机器周期就加1,所以我们可以算出加一个1的时间为t
t = 12/11059200秒
``