首页 理论教育 单片机应用技术:T0和T1的工作方式及定时范围

单片机应用技术:T0和T1的工作方式及定时范围

时间:2023-10-17 理论教育 版权反馈
【摘要】:T0和T1在方式0、方式1及方式2时,除了所使用的寄存器、有关控制位及标志位不同外,其它操作完全相同。因此除了方式3以外,均以T0为例进行介绍。图6.2工作方式1的逻辑结构由图6.2可以看出,当时,逻辑开关向下接通,此时以振荡器的12分频信号作为T0的计数信号,T0对机器周期加1计数,T0工作于计时方式。若计数初值为a,则定时时间为:t=×12/fosc当时钟频率为12MHz,方式1的定时范围为1~65536μs。

单片机应用技术:T0和T1的工作方式及定时范围

当M1M0被设置为01时,定时/计数器工作于方式1。方式1由高8位THx和TLx组成一个16位的加1计数器,计满值为216。T0和T1在方式0、方式1及方式2时,除了所使用的寄存器、有关控制位及标志位不同外,其它操作完全相同。因此除了方式3以外,均以T0为例进行介绍。

工作方式1的逻辑结构图如图6.2所示。

图6.2 工作方式1的逻辑结构

由图6.2可以看出,当时,逻辑开关向下接通,此时以振荡器的12分频信号作为T0的计数信号,T0对机器周期加1计数,T0工作于计时方式。若GATE=0时,定时器T0的启动和停止完全由TR0的状态决定,而与引脚的状态无关。

若计数初值为a,则定时时间为:

t=(216-a)×12/fosc 当时钟频率为12MHz,方式1的定时范围为1~65536μs。

时,逻辑开关向上接通,T1工作于计数器模式,此时以T0端(P3.4引脚)的外部脉冲(负跳变)作为T0的计数信号。由于检测一个负跳变需要2个机器周期,即24个振荡周期,因此其最高计数频率为fosc/24。若GATE=0,计数器T0的启动和停止完全由TR0的状态决定,而与引脚状态无关。

计数初值a与计数值N的关系为:

N=(216-a) 由此可知,方式1的计数范围为1~65536。

【例6.1】单片机的fosc=12MHz,采用T1定时方式1使P1.0引脚上输出周期为2ms的方波,并采用Proteus中的虚拟示波器观察输出波形,电路原理图如图6.3所示。

图6.3 周期2ms的方波输出电路图

解:原理分析:要产生周期为2ms的方波,可以利用定时器在1ms时产生溢出,再通过软件方法使P1.0引脚的输出状态取反,不断重复这一过程,即可产生周期为2ms的方波。

根据定时方式1的定时时间表达式,计数初值a为

a=216—t×fosc/12=216—1000×12/12=64536=0xfc18

十六进制的计数初值分解成高8位和低8位,即可进行TH1和TL1的初始化。需要注意的是,定时器在每次计数溢出后,TH1和TL1都将变为0。为了保证下一轮定时的准确性,必须及时重装计数初值。采用中断方式,参考程序如下:仿真波形如图6.4所示:(www.xing528.com)

图6.4 实例1仿真波形图

综上所述,单片机定时/计数器的编程步骤如下:

(1)设定TMOD,即明确定时/计数器的工作状态:是使用T0还是T1?采用定时器还是计数器?具体工作方式是方式0、方式1、方式2还是方式3?

(2)计算计数初值,并初始化寄存器TH0、TL0或TH1、TL1。

定时计数初值a=2n—t×fosc/12,其中t以μs为单位,fosc以MHz为单位。

TH0=(2n—t×fosc/12)/256;

TL0=(2n—t×fosc/12)%256;

(3)确定编程方式。若使用中断方式,则需要进行中断初始化和编写中断函数;

(4)启动定时器:TR0=1或TR1=1。

(5)执行一次定时或计数结束后的任务。

(6)为下一次定时/计数做准备(TFx复位+重装载计数初值);若是中断方式,TFx会自动复位;若是查询方式,需要软件复位TFx。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈