一.定时器基本介绍
A.CPU时序
振荡周期:CPU外部晶振提供的周期(一般提供晶振频率为12Hz或11.059Hz)
状态周期:1个状态周期=2个振荡周期
机器周期:CPU内部的时钟周期。外部晶振经过12分频后,就是内部时钟震荡频率。因此,1个机器周期=12个振荡周期。它是CPU完成一个基本动作的时间。
指令周期:CPU完成一条指令所需时间,以机器周期为单位。
B.定时器的原理
结构:
定时/计数器是一个16位的加1寄存器,由高8位THx和低8位TLx(x=0/1)两个8位寄存器组成。
当输入脉冲时,定时器加1;直到寄存器所有位加满了以后,再加1就会使定时器溢出归零。
51单片机内部有两组定时/计数器T0、T1
其中,T1引脚和T0引脚分别对应于P3.4和P3.5管脚
工作原理:
定时/计数器有两种模式:
1.定时模式:脉冲来源为内部时钟,每过1个机器周期计数器加1,直至溢出。用来定时;
2.计数模式:脉冲来源为外部引脚,在每个机器周期的S5P2采样外部脉冲,用来计算外部事件。
定时/计数器的工作方式由两个特殊寄存器控制,如下所示:
二.定时/计数器的相关寄存器
A.定时器工作方式寄存器(TMOD)
用来控制定时器的工作状态。高4位用来控制T1,低4位用来控制T0。
在使用定时器之前,需要给TMOD赋值。
1.定时/计数模式选择(C/T)
用来选择工作于定时器还是计数器
C/T=0:定时器
C/T=1:计数器
2.门控位(GATE)
决定定时器工作是否需要附加条件
GATE=0:不需要附加条件,只需要TCON处TR0/1=1,定时器就可以启动
GATE=1:还需要当外部中断引脚INT0/1为高电平时,才能启动定时器
3.工作方式选择(M1M0)
定时器中通常使用定时器方式 1,串口通信中通常使用方式 2
B.控制寄存器(TCON)
用于控制:1.定时/计数器的开启、2.中断请求
高四位与定时器工作相关。
TR0/TR1:定时/计数器启动位。该位为1时,定时/计数器开始工作(要提前设置)
TF0/TF1:定时/计数器中断标志位。当计满以后,该位为1,向CPU申请中断。
三.定时器的四种工作方式图解
工作方式0:
高8位TH0都工作,而TL0只有低5位工作。从而定时器为13位。
在TMOD中,C/T决定是接入T0引脚还是接入机器周期;
中间的与门(&)决定了定时器是否工作。与门(&)的一端是TR0,另一端是一个或门(≥1)。只有当TR0还有或门都输出1,定时器才会工作。
另一端的或门(≥1)关系到GATE和INT0引脚,当GATE=1,则无论INT0是0还是1,或门都输出1,此时只要TR0=1,与门(&)就输出1,定时器工作;反之,若GATE=0,则只有当INT0=1时,或门才会输出1。
工作方式1:
定时/计数器有16位
工作方式2:
为自动重装初值的8为定时/计数器。8位计满后,TH0自动再向TL0装上初始值。特别适合于用作较精确的脉冲信号发生器。
工作方式3:
这种工作方式下,T1相当于没用。把T0分开为两个独立的8位计数器。
注意:由于单片机内部振荡频率有限,计数器的输入脉冲的频率不能太高。解释如下: