单片机学习——定时器/计数器

单片机必学系列

单片机学习——中断系统

单片机学习——存储器详解(程序存储器、片内RAM、拓展RAM、EEPROM)

单片机学习——定时器/计数器

单片机学习——A/D转换

更新ing



前言

一般51单片机是两个定时器(定时器0和定时器1),本文以STC8H8K64U为例(只是多了三个定时器,定时器0-4),讲解定时器,原理与其他单片机并无区别。注意哈:定时器和计数器是一体的,定时器的本质就是个加1计数器,不可能单独再设置一个计数器,那样也太麻烦了。

一、我们怎样定时

1.软件定时

初学单片机的朋友对软件定时非常熟悉,这就是Delay延时函数,让CPU循环执行一段程序,通过选择指令和安排循环次数实现软件定时,软件定时会完全占用CPU,让CPU执行无意义指令,此方法增加了CPU开销,降低了CPU的工作效率。(仅适用于CPU空闲的程序)

2.硬件定时

硬件定时则不占用CPU时间,定时功能全部由硬件电路(如555时基电路)完成,但是需要改变参数调节定时时间,使用不方便,还增加了硬件成本。

3.可编程定时器定时

该定时器的定时值及定时范围可以通过软件进行确定和修改。通过系统时钟/输入信号进行计数与控制,可以用于定时控制、记录事件、输出可编程时钟信号或用作分频器。

二、定时器/计数器结构和工作原理

先给一个STC8H8K64U框架图,再详细讲解。
在这里插入图片描述
我们可以清楚看到TH0、TL0、TH1、TL1,里面H就是高、L就是低的意思,TH0就是定时器0高8位的意思(定时器是16位的),TL0就是定时器0低8位。
TMOD是T0、T1工作方式寄存器,由它确定T0、T1工作方式以及功能。
TCON是T0、T1的控制寄存器,用于控制T0、T1的启动与停止,并且记录T0、T1计满溢出标志位(TF0和TF1稍后详细讲解)。
AUXR是辅助寄存器,它内部的T0x12和T1x12分别用于设定T0、T1内部计数脉冲的分频系数,上图中的P3.4、P3.5分别是T0、T1的外部输入端。

T0、T1的核心电路是一个加1计数器,加1计数器的脉冲来源有两个:一是外部脉冲,P3.4和P3.5,另一个就是系统时钟信号,加1计数器会对脉冲源计数,一个脉冲加1,计数器加满(全1)的时候再加1就会归0,同时使得溢出标志位TF0或者TF1为1(这取决于你在使用哪个定时器/计数器),框架图如下:
在这里插入图片描述

1.定时功能

根据上图,当脉冲源为系统时钟(等间隔脉冲,就是那种固定多久有一个高电平的脉冲)时,由于计数脉冲为同一个时间基准(因为晶振用的是同一个),脉冲数乘以计数脉冲周期(系统周期或12倍系统周期,具体看是否选择12分频)就是定时时间。即当系统时钟确定时,计数器的计数值就确定了时间。意思就是,只是计算加1加了多少次,每次加1的时间间隔(1秒除以晶振频率=振动一次的时间,也就是脉冲的间隔时间)一样,加的次数 x 间隔时间 = 总计时

2.计数功能

根据上图,当脉冲源为单片机外部引脚的输入脉冲时,就是外部事件的计数器。如定时/计数器T0,在其对应的计数输入端T0(P3.4)有一个负跳变时,T0计数器的状态值加一。

负跳变:由高电平变成低电平的过程,又被称为下降沿
正跳变:由低电平变成高电平的过程,也被称为上升沿

三、定时/计数器(T0/T1)的控制

1.TMOD

在这里插入图片描述
B6和B2位都是(C非/T) 特殊符号打不出来

(C非/T) :功能选择位。(C非/T)=0时,设置为定时工作模式;(C非/T)=1时,设置为计数工作模式。
M1和M0:T0、T1工作方式选择位.

GATE:门控位。
当(GATE)=0时,软件控制位TR0或TR1置1即可启动定时/计数器;
当(GATE)=1时,软件控制位TR0或TR1须置1,同时还须INT0(P3.2)或INT1(P3.3)引脚输入为高电平方可启动定时/计数器,即允许外部中断INT0(P3.2)、INT1(P3.3)输入引脚信号参与控制定时/计数器的启动与停止。
在这里插入图片描述

2.TCON

在这里插入图片描述
TF1:定时/计数器1溢出标志位。
当定时/计数器1计满产生溢出时,由硬件自动置位TF1,在中断允许时,向CPU发出中断请求,中断响应后,由硬件自动清除TF1标志。也可通过查询TF1标志,来判断计满溢出时刻,查询结束后,用软件清除TF1标志。

TR1:定时/计数器1运行控制位。
由软件置1或清0来启动或关闭定时/计数器1。当(GATE)=0时,TR1置1即可启动定时/计数器1;当(GATE)=1时,TR1置1且INT1(P3.3)输入引脚信号为高电平时,方可启动定时/计数器1。

3.AUXR

在这里插入图片描述
T0x12:
当(T0x12)=0,定时计数脉冲完全与传统8051单片机的计数脉冲一样,计数脉冲周期为系统时钟周期的12倍,即12分频;当(T0x12)=1,计数脉冲为系统时钟脉冲,计数脉冲周期等于系统时钟周期,即无分频。

T1x12:
当(T1x12)=0,定时计数脉冲完全与传统8051单片机的计数脉冲一样,计数脉冲周期为系统时钟周期的12倍,即12分频;当(T1x12)=1,计数脉冲为系统时钟脉冲,计数脉冲周期等于系统时钟周期,即无分频。

四、定时/计数器的工作方式

工作方式部分过多,本人建议找视频讲解便于理解,文字部分阐述不容易理解,故在此仅放不同工作方式原理图。

方式0

在这里插入图片描述
GATE、INT0和TR0之间的关系
GATE、INT0和TR0之间的关系,决定定时器/计数器是否能正常工作。这三个信号通过逻辑或门和逻辑与门产生control信号,用于控制内部SYSclk信号或者外部脉冲通过T0引脚是否能接入该定时器/计数器。

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知何人

万分感谢诸位观看

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值