找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4004|回复: 6
收起左侧

关于51单片机定时器两种模式

[复制链接]
ID:897531 发表于 2021-7-9 22:43 | 显示全部楼层 |阅读模式
51单片机有两种模式,定时/计数模式。但我搞不懂这两者的原理区别,以及适用范围("什么时候用计数模式,什么时候用定时模式')
忘各位大佬不吝赐教
回复

使用道具 举报

ID:517951 发表于 2021-7-10 00:22 | 显示全部楼层
定时模式就是,晶振跳字,定时器就跟着跳字。 计数器模式,就是外界接入的脉冲有上升沿,或是下降沿的时候才跳一下,外接信号没有跳变,就不加1.

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:123289 发表于 2021-7-10 08:18 | 显示全部楼层
没有必要区分,它本身就是个计数器而矣!
是计数器就有以下通用功能:
1、计数,【它】是只加不减。
2、置数。
3、清0,【它】没有此功能,只能用置0代替。
4、进位处理。【它】有进位标记,而且功能强:可以用来重置数、也可以用来引发中断,这是它的特点,要记住!
5、时钟,这是它最重的特点,而且与楼主的问题有关,要记住!它的时钟特别灵活,有的单片机多达十来种时钟源,这是它的特长。
与楼主问题相关:
如果,时钟是由你给出的脉冲,则定义为计数器。很好记:这时它可以数你给出的脉冲是多少个,且与脉冲的时间间隔无关。(另一个记法:从引脚输入时钟)
如果,时钟是从系统中某个地方引入的固定脉冲(与晶振有关联),则用来定时,道理很简单,这时的时钟稳定,计时无差!
为什么没有必要区分呢?
例如:你从引却送入了一个非常稳定的秒脉冲,这时当然用计数模式。但你实际上是想用它做电子钟,即用它计时,作定时器。
所以,不必俗套,理解就好,应用自如。
建议仔细看看手册上的原理框图!!!

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:539024 发表于 2021-7-10 08:33 | 显示全部楼层
定时器说白了就是计数器,定时模式时是去数内部的方波个数(就是晶振),而内部的方波是固定的,以12M的晶振为例,一个方波就是1us的时间,这样就是定时,计数的话就是数外部的方波个数,定时器一般是你需要时间的时候用,比如秒表,倒计时等等。计数的话可以扩展为外部中断,或者需要读取外部方波个数的,比如频率计,测速度什么的,当然这些用外部中断也是一样的

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:451718 发表于 2021-7-10 10:32 | 显示全部楼层
定时模式就是好比你的钟表,计数模式就好比你的尺子。
回复

使用道具 举报

ID:954312 发表于 2021-7-19 19:00 | 显示全部楼层
单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,只要相邻两个计数脉冲之间的时间间隔相等,则计数值就代表了时间的流逝,因此,单片机中的和计数器其实是同一个物理的,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的部件;MCS-51单片机的晶振经过12分频之后提供给单片机稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的。加1计数器输入的计数脉冲有两个来源,一个是由系统的输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。

作为定时器使用时,定时器计数8051单片机片内振荡器输出经过12分频后的脉冲个数,即:每个机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,溢出后继续从0开始循环计数;所以,定时器的分辨率是时钟振荡频率的1/12;

作为计数器使用时,通过引脚T0(P3.4)或T1(P3.5)对外部脉冲信号进行计数,当输入的外部脉冲信号发生从1到0的负跳变时,计数器的值就自动加1由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2微秒。;计数器的最高频率一般是时钟振荡频率的1/24;

由此可知,不论是定时器还是计数器工作方式,定时器T0和T1均不占用CPU的时间,除非定时器/计数器T0和T1溢出,才可能引起CPU中断,转而去执行中断处理程序。所以说,定时器/计数器是单片机中效率高而工作灵活的部件。

51单片机定时器工作原理图:

pIYBAFrhhPeALF0-AABoqJ1XxIk691.jpg

由上图可见与定时器相关的寄存器主要有下面这几个:TMOD、 TCON、 TL0、TH0、TL1、TH1。下面介绍一下这几个寄存器

16位加法计数器:

o4YBAFrhhPaAbgdAAAAzvm03kbA846.jpg

是定时计数器的核心,其中 TL0、TH0、是定时计数器0的底八位和高八位;TL1、TH1是定时计数器1的底八位和高八位;并且高八位和底八位可单独使用。16位加法计数器主要是在设置定时计数器的初值时候使用

TMOD定时器工作模式及方式寄存器

o4YBAFrhhP6ADRKKAAAmzTFDrNk369.jpg

GATE :定时操作开关控制位,当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。

C/T :定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。

M1 M0:T0、T1工作模式选择位

pIYBAFrhhRCAT7zEAAAk8xfpwkA830.jpg

TCON定时器控制寄存器

pIYBAFrhhRmAFTZIAAAmnSoY_ZE458.jpg

TF1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。

TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。

TR1:T1充许计数控制位,为1时充许T1计数(定时)。

TR0:T0充许计数控制位,为1时充许T0计数(定时)。

IE1:外部中断1请示源(INT1,P3.3)标志。IE1=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。

IT1:外部中断源1触发方式控制位。此位为1设置为底电平触发,为0设置为下降沿触发。

IE0:外部中断0请示源(INT0,P3.2)标志。IE0=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。

IT0:外部中断源0触发方式控制位。此位为1设置为底电平触发,为0设置为下降沿触发。


回复

使用道具 举报

ID:934353 发表于 2021-7-21 10:07 | 显示全部楼层
定时用的是内部脉冲,计数用的是外部脉冲
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表