几个概念

时钟周期:单片机时许中的最小单位,具体计算的方法就是时钟源分之一。时钟源可以理解为晶振,如晶振是12M,时钟周期(1/12M )S。

机器周期:单片机完成一个操作的最短时间。主要针对汇编,每条指令执行时间固定,C语言不固定,知道级别就行(是微妙还是毫秒)。51标准架构1机器周期=12个时钟周期。

定时器:打开定时器后,定时器”存储计时器“的值经过一个机器周期自动加1,也就是说机器周期是定时器的计数周期

标准51有两个定时器,定时0和定时器1(用法一样):

定时器存储寄存器
名称 描述 SFR地址 复位值
TH0 定时器 0x8C 0x00
TL0 定时器 0x8A 0x00
TH1 定时器 0x8D 0x00
TL1 定时器 0x8B 0x00

后边标0就是定时器0,带1就是定时器1.

比如TH0和TL0都是定时器0.

H高8位,L低8位。开始TL0为0,当TL0为255后,再加一,TL0变为0,TH0变为1。

TCON:定时器控制寄存器的位分配(地址0x88,可位寻址)

7 6 5 4 3 2 1 0
符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
复位值 0 0 0 0 0 0 0 0
TCON定时器控制寄存器的位描述
符号 描述
7 TF1 定时器1溢出标志。一旦定时器1发生溢出时硬件置1。两种清零方式:1、软件清零;2、进入定时器中断时硬件清零。
6 TR1 定时器1运行控制位。软件置零/清零来进行启动/停止定时器。
5 TF0 同定时器1
4 TR0
3 IE1   外部中断部分,与定时器无关
2 IT1  
1 IE0  
0 IT0  

 说明:硬件置1,自动;软件清0,即手动,用代码。

运行控制:为0,计时器不再计数,相当于我们的秒表暂停。

TMOD:打开关闭定时器

TMOD定时器模式寄存器的位分配(地址0x89,不可位寻址)
7 6 5 4 3 2 1 0
符号 GATE(T1) C/T(T1) M1(T1) M0(T1) GATE(T0) C/T(T0) M1(T0) M0(T0)
复位值 0 0 0 0 0 0 0 0

 

TMOD定时器模式寄存器的位描述
符号 描述
T1/T0 标T1的表示控制定时器1的位,标T0的表示控制器0的位
GAME 该位被置1时为门控位。仅当\’INT0\’脚为高并且TR0控制位被置1时能使定时器0定时器开始计时,当该位被清0时,只要TR0位被置1,定时器0就使能开始计时,不受到单片机引脚INT0外部信号干扰,常用来测量外部信号脉冲宽度。这是定时器一个额外功能。
C/T 定时器或计数器选择位。该位被清零时用作定时器功能(内部系统时钟),被置1时用作计数器功能。

 

TMOD定时器模式寄存器M1/M0工作模式
M1 M0 工作模式 描述
0 0 0 兼容8048单片机的13位定时器,THn的8位和TLn的5位组成一个13位定时器。
0 1 1 THn和TLn组成一个16位的定时器
1 0 2 8位自动重装模式,定时器溢出THn重装到TLn中
1 1 3 禁用定时器1,定时器0变成2个8位定时器

这两位重要,决定了定时器的工作模式。工作模式1,2比较重要,模式0基本不应用了。

工作模式2:

 

假如现在使用定时器0:
令
TH0=0x55;
TL0=0x00;
TR0=1;
当TL0计数到0xff,继续计数将溢出,此时首先不会产出溢出,正常情况TL0应该变成0x00;
但是在工作模式2,自动重装模式将使TH0自动将自己的值给TL0,即此时TL0的值不是0x00,而是0x55。

 

 模式1示意图

 注解:

  • 下边部分控制上边部分
  • osc时钟源,d分频值,一般位12
  • 接Tn脚为计数器
  • 详细说明如下图

 

 其他模式可以看手册自己分析

定时器使用方法:

  1. 设置工作模式(设置特殊功能寄存器TMOD)
  2. 设置计数寄存器处置
  3. 设置TCON,通过TR0置1使计时器开始计数
  4. 判断TCON寄存器TF0位,检测定时器溢出情况
版权声明:本文为hgyzm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hgyzm/p/14341408.html