目标:定时器和计数器的理解(一)
1.定时器/计数器简介
定时器/计数器(Timer/Counter,简称T/C)是单片机中最基本的接口之一。即可以定时又可以计数。常用于计数、延时、测量周期/脉宽/频率、提供定时脉冲信号等。
8051系列单片机至少含有2个16位的T/C,STC89C51/52含有3个T/C。其中2个为基本定时器/计数器T/C0和T/C1,另一个是T/C2。可通过软件配置为定时器功能或者计数器功能。
定时/计数器的工作原理
定时/计数器实质上是一个加1计数器。当工作在定时器模式时,对振荡源(晶振)12分频(12分频就是震荡周期,单位 是us)的脉冲计数,即每个机器周期(12个震荡周期就是1/12us12=1us)计数值加1(解释了前面延时函数),当加到计数器为全1(定时计数器是 16位,则2*16=65539,减1[因为0开始]后65535是定时计数最大值)时,再输入一个脉冲就使计数器回零。
当工作在计数器模式时,计数脉冲来至外部脉冲输入引脚P3.4(T0)和P3.5(T1),当T0或T1脚上负跳变(即下降沿,正跳变==上升沿)时计数值加1 ,识别管脚负跳变需要2个机器周期(2us),即24个振荡周期。所以T0或T1脚输入的可计数的外部脉冲的最高频率为1/24fosc(1/24*12=500KHz),当晶振12MHZ时,最高计数频率为500KHz,高于此频率将计数出错。
2.定时器/计数器寄存器
TH1和TL1是定时/计数器1的两个寄存器,都是8位,共16位。TH1是高8位,TL1是低八位
TH0和TL0是定时/计数器0的两个寄存器,都是8位,共16位。TH0是高8位,TL0是低八位
T0引脚是P3.4,T1引脚是P3.5,配置成计数器模式用于检测外部的脉冲信号
定时器控制寄存器TCON,
工作方式选择寄存器TMOD (用于确定定时/计数器的工作方式和功能)
TCOD见单片机小白学习之路(十二)---->https://www.jianshu.com/p/4de17b66a15b
工作方式选择寄存器TMOD
0~3是定时/计数器0 的4位,M1,M0用于选择工作方式,工作方式有0,1,2,3。C/T是计数器或定时器的选择位,C/T置0则是定时模式,置1是计数模式。
GATE是门控信号GATE=1时,T/C(定时/计数器)启动收到双重控制要求TR0/TR1和INT0/INT1同时为高,GATE=0时,T/C的启动仅收到TR0/TR1的控制,通常把GATE置0
- 方式0:最大计数值是2**13-1=8191
- 方式1:最大计数值是2**16-1=65535
- 方式2:TH存放初值,TL用于计数,由于是8位则最大值255,TL不断计数,计到255则溢出并清0,然后TH把初值给TL又开始计数,这就是可自动重新装载初值的含义
- 方式3:对T0和T1不大相同,仅T0可设置模式3,若设置其为模式3,TL0和TH0被分为两个相互独立的8位计数器,TL0为8位计数器,功能与模式0/1相同,可定时可计数
TH0仅做简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1 ,启动和关闭仅受TR1控制(此模式不常用)