失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 单片机学习——定时器/计数器

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

时间:2019-11-20 23:34:41

相关推荐

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

单片机必学系列

单片机学习——中断系统

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

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

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

更新ing

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

单片机必学系列前言一、我们怎样定时1.软件定时2.硬件定时3.可编程定时器定时二、定时器/计数器结构和工作原理1.定时功能2.计数功能三、定时/计数器(T0/T1)的控制1.TMOD2.TCON3.AUXR四、定时/计数器的工作方式方式0

前言

一般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引脚是否能接入该定时器/计数器。

如果觉得《单片机学习——定时器/计数器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。