51单片机系列——定时/计数器

  • Post author:
  • Post category:其他


此推文为学习笔记,如果错误麻烦大佬指出更正。


51定时/计数器简介

51单片机有2个16位定时器/计数器:定时器0(T0为P3.4)和定时器1(T1为P3.5)

这里所说的16位是指定时/计数器内部分别有16位的计数寄存器。

分别为低8位寄存器和高8位寄存器。

定时器模式

当工作在定时模式时,每经过一个机器周期内部的16位计数寄存器的值就会加1,当这个寄存器装满时溢出。

我们可以算出工作在定时模式时最高单次定时时间为

65535*1.085us=时间(单位us)

定时器作用:可以用于精确事件定时,PWM脉宽调制,波形发生,信号时序测量的方面。

计数器模式

当工作在计数器模式时,T0(P3.4引脚),T1(P3.5引脚)。每来一个脉冲,计数寄存器加1。


使用51定时/计数器步骤

1.

启动

定时/计数器(通过

TCON控制器

2.设置定时/计数器

工作模式

(通过

TMOD控制器

3.查询定时/计数器是否

溢出

(读

TCON内TF位


51定时/计数器控制寄存器

每一位寄存器的详细功能请查阅芯片使用手册,这里是“stc8952”


TL是开始计时的最低位,TH是截止计时的最高位。通过调节这两个寄存器的值可以设置脉冲波大小和占空比等功能。一个方波完成后就清零。

Timer Control控制器(TCON)

“可位寻址”:        访问存储器、

寄存器

或输入/输出端口时,可指定其中一个位。

例如要指定P0输入/输出口中的bit 1,则指定为P0.1即可。

例子:可位寻址的IE中有八位EA – ET2 ES ET1 EX1 ET0 EX0可以直接用ET2=1来操作;

下面使用定时器1来讲解

Timer Flag

TF1(T1溢出标志位):当定时/计数器T1溢出时由硬件置“1”TF1,向CPU发出

中断请求,一直保持到CPU响应时,才由硬件清“0”(TF1也可以由程序查询清“0”)

Timer Run

TR1(定时器T1运行控制位):该位由软件置“1”或清零。TR1= 1就允许T1开始计

数,TR1=0时禁止T1计数。

TF0(T0溢出标志位)TR0(定时器T0运行控制位),配置方法与T1相同。


IE1、IT1、IE0、IT0与定时/计数器无关,是控制外部中断的。


Timer Mode

符号 功能
TMOD.7 GATE

控制T1,置“1”时只有在P3.3脚(INT1)为高及TR1置“1”时才可以启动T1,置“0”时TR1为“1”就允许T1启动。

TMOD.6 C/T 置“1”时T1做计数器,置“0”时T1做定时器。
TMOD.5 M1

M1 = 0,M0 = 0时 工作模式0。

M1 = 0,M0 = 1,工作模式1,此时由TH1、TL1寄存器组成16位计数器,TH1为16位的高8位,TL1为16位的低8位,当这个16位计数器加满时,T1溢出。TF1被硬件置“1”。

M1 = 1,M0 = 0 模式2,时8位自动重装定时器,当TL1溢

出时,将TH1的值自动装入到TL1中,TF1被硬件置“1”。

M1 = 1,M0 = 1 模式3,T1停止计数。

TMOD.4 M0

TMOD3~0位设置T0定时器的,和T1设置相同(除工作模式3)



版权声明:本文为weever7原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。