单片机必学系列
单片机学习——中断系统
单片机学习——存储器详解(程序存储器、片内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引脚是否能接入该定时器/计数器。
如果觉得《单片机学习——定时器/计数器》对你有帮助,请点赞、收藏,并留下你的观点哦!