单片机的定时器

单片机的定时器/计数器

6.1定时/计数器的结构与基本原理

定时计数器的基本原理

在这里插入图片描述
计数器:当脉冲信号是来自单片机外部信号,通过脉冲计数统计,可做计数器使用。

定时器:当脉冲信号是来自单片机内部的时钟信号,则由于单片机的振荡周期非常精准,故溢出时统计的脉冲数便可换算成定时时间因此可做定时器使用。

注意:定时器/计数器本质都是计数器,只是脉冲信号来源不同。两种功能的切换通过逻辑开关C/T的切换实现。

定时时间的计算: t = (计数器满计数值 - 计数初值) X 机器周期(机器周期 内部振荡器经过12分频后的脉冲)
在这里插入图片描述
fosc 时钟频率(MHZ)。

同理,计数器方式下的计数值 N 可表示为

​ N = 计数器满级数值 - 计数初值 = 2^n - a

定时/计数器的结构

在这里插入图片描述
​ 定时/计数器结构图

T0 和 T1 分别由高八位和低八位两个特殊功能寄存器组成,高八位 TH1、 低八位 TL1

定时/计数器的控制是通过两个特殊功能寄存器实现的,

TMOD 定时/计数器的 工作方式 寄存器,由它确定 定时/计数器的工作方式和功能;

TCON 定时/计数器的 控制 寄存器,用于管理 T0 和 T1 的启停、溢出和中断。

对应的外部引脚 T0 (P3.4) 、 T1(P3.5)

定时计数器工作起来后,按硬件方式独立运行,无需CPU干预,降低CPU操作时间。

6.2 定时计数器的控制

TMOD寄存器(89H)

定义格式如下图
在这里插入图片描述
1.低4位为T0方式字,高四位为T1的方式字。(两部分定义完全对称)

2.不能位寻址,只能整体赋值。

3.M1和M0 :工作方式选择位,两位可组成四种编码对应4中工作方式。

​ C/T:定时和外部事件计数选择位,

​ 0: 定时器方式

​ 1: 外部事件计数器方式,

​ GATE: 门控位

​ 0:定时器不受外部引脚输入电平的控制,只受定时器运行控制位(TR0、TR1)控制

​ 1:定时器的计数受定时器运行控制位和外部引脚输入电平(INT0、INT1)控制,其中TR0和INT0控制T0的运行。

注意 GATE位 位 0 时 (一般状态),只要TR0 = 1就能使T0启动,TR1 = 0 就能使T0停止,而与INT0无关。GATE为1时只有TR0 = 1和 INT0 引脚为高电平时 才会启动定时器 T0.在这种方式常用来测量在 INT0 引脚出现的正脉冲宽度。
在这里插入图片描述
M0、M1;工作方式定义位
在这里插入图片描述
由表可知 T0 共有4种工作方式。T1 没有工作方式3. 除 工作方式3 外,每种工作方式都有定时和计数两种方式。单片机复位时TMOD为0,单片机默认设置为:T0 和 T1 均为定时器方式 0 允许TR0 和 TR1 启动定时器。

TCON寄存器(88H)

定义格式如图:
在这里插入图片描述
位7: TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。

位6: TR0(TR1)——定时器运行控制位

​ 当TR0(TR1)=0 停止定时器/计数器工作

​ 当TR0(TR1)=1 启动定时器/计数器工作

位3: IE0(IE1)——外中断请求标志位(当CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。)

位2: IT0(IT1)——外中断请求信号方式控制位

​ 当IT0(IT1)=1 脉冲方式(后沿负跳有效)

​ 当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。

TF0(TF1) ——计数溢出标志位

当计数器产生计数溢出时,此位由硬件置1。当转向中断服务时,再有硬件自动清0。计数溢出的标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。

注意:系统复位时,TCON 初值位0 ,即默认设置为:TR0、TR1均为关闭状态,电平中断触发方式、没有外部中断触发请求,也没有定时/计数器中断请求。

6.3定时计数器的工作方式

51单片机的定时/计数器具有4种工作方式(方式0,1,2,3)

方式一:

M1M0 = 01 时 定时器工作在方式 1,高八位TH1 与 低八位 TH0 组成一个16位的加一计数器,计满值为 2^16
在这里插入图片描述
C/T = 0 工作在定时器方式。C/T = 1 工作在计数器方式。

若初值为 a 则其定时时间为 t = (2^16-6)* 12 / focs。最高计数值 N = 2^16-a

注:检测外部脉冲(负跳变)作为T1的计数信号, 检测一个负跳变需要 2 个机器周期,故最高计数频率为focs/24 。

方式二:

当 M1M0 = 10 时 定时/计数器工作于方式2,方式 2 采用 TLx(低八位)作为加一计数器计满值为 2^8 另一个8位寄存器THx(高八位)用于存放8位初值。
在这里插入图片描述
由图:若TH1计数溢出,TH1会自动将其初值装入TL1中,(初始化时 TH1 和 TL1 有软件赋予相同的初值)

定时器2的定时和计数次数计算公式分别为

​ T = (2^8 - a)*12/focs ; a 为初值;

​ 计数值 N = 2^8 -a ;

注:定时器方式2可产生非常精确的定时时间,尤其适合作为串行口波特率发生器。

方式0:

当 M1M0 = 00 时 ,定时/计数器工作于方式0,方式0 采用低五位 TLx和高八位 THx组成一个13位的加 1 计数器,计满值位 2^13,初值不能自动重装载。方式0 除位数与方式1不同外,其他并无差异。方式0采用13位计数器主要是为了与早期MCS-48兼容。定时时间计数方法计算公式如下:

​ 定时时间:t = (2^13-a)*12/fosc

​ 计 数 值:N = 2^13 - a

注意:方式0 的TLx高三位是无效的,可以为任意值,计算初值时要注意。

方式三:

当M1M0 =11 时,定时/计数器工作于方式3,

对于定时器1,在模式3时,定时器 1 停止计数,效果与将 TR1设置为0相同。

对于定时器2,在此模式下定时器 0 的 TL0 与 TH0 作为两个独立的八位计数器,写图为定时器0的逻辑图:
在这里插入图片描述
模式3的目的是为了增加一个附加的八位定时/计数器而提供的。使单片机具有三个定时/计数器。模式3只是用于定时/计数器0。T0可作为2个定时器使用。T1变为一个无中断功能的定时器。(T1仍可用于工作方式 0~2 )。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值