当前位置:文档之家› 定时器T的用法

定时器T的用法

第九讲定时器T2的用法
定时器
声明,定时器T2只有52以上的芯片才有,51没有的。

捕捉模式
在捕捉模式时,两种操作模式由T2CON中的EXEN2位选择。

如果EXEN2=0,Timer2作为一个16位向上定时或计数器,当溢出时将T2CON中的TF2置1。

这个标志位可以产生一个中断。

如果EXEN2=1,Timer2起同样的作用,但是,外部输入端T2EX上的下降延也可以使TH2和TL2中的值捕捉到RCAP2H和RCAP2L中,另外,T2EX上的下降延可以将EXF2置1,像TF2一样,也可以产生一个中断。

捕捉模式详见图5。

自动重载模式
Timer2在指定为16为自动重载模式时可以编程为加计数或减计数,此功能由T2MOD
中的DCEN位决定。

DCEN=0,计数器向上计数,默认置为0,DCEN=1时,Timer2的加或减由T2EX的值决定。

图6显示Timer2在DCEN=0时自动向上计数。

在这个模式时,T2CON的EXEN2为可以选择两种操作。

EXEN2=0,Timer2向上计数到0FFFFH时将TF2为置1,溢出可以把RCAP2H和RCAP2L 中的16为值重新加载到定时寄存器中。

捕捉模式时RCAP2H和RCAP2L中的值由软件预先设定。

EXEN2=1,既可以由溢出重载也可以由T2EX引脚的下降延触发重载。

TF2和EXF2都可以产生中断。

设置DCEN为可以时Timer2向上或向下计数,如图6所示,此模式下,T2EX 脚控制计数方向。

T2EX如果为1,Timer2向上计数。

计数器到0FFFFH时溢出并将TF2置1。

溢出可以使RCAP2H和RCAP2L中的16为值重新加载到定时寄存器中。

T2EX如果为0,Timer2向下计数,当TH2和TL2中的值和RCAP2H和RCAP2L相等时向下溢出。

溢出使TF2置1并
将0FFFFH重新加载到计时寄存器中。

波特率发生器
通过设置T2CON中TCLK或RCLK位选择Timer2位波特窥测发生器Timer2作为发送和
接收时可以应用早不同的波特率,设置TCLK或RCLK位使Timer2工作在波特率发生器模式,如图8所示。

波特率发生器模式和重载模式相似,TH2中值的溢出将使软件预设的16位寄存器值重载到计数器中。

波特率1、3模式由Timer2的溢出速率决定,由下面的等式表示
模式1、3波特率=(Timer2计数值)/16
定时器可以指定为计数或定时模式,在许多应用中,被设置成定时模式,Timer2的定时操作和波特率发生器的操作不同,作为定时器,它每机器周期(1/12个晶振周期)增加1,作为波特率发生器它每个状态时间(1/2晶振周期)增加1。

波特率公式如下:
模式1、3
=
晶振频率
波特率
32×(65536-RCAP2H,RCAP2L)
这里(RCAP2H,RCAP2L)是RCAP2H和RCAP2L作为16为无符号整数。

Timer2作为波特率发生器如图8,这个只有在TCLK或者RCLK=1是才有效。

需要注意的是TH2的的溢出不会将TF2置1,也不会产生中断,如果这时EXEN2置1,T2EX引脚的下降延将会使TF2置1并不会引发(RCAP2H,RCAP2L)到(TH2,TL2)的重载,那样,当Timer2作为波特率发生器时,T2EX可以作为一个外部中断使用。

当Timer2在波特率发生器模式作为定时器运行时(TR1=1),TH2,TL2不能进行读写,在这种情况下,计时器每个状态时间增加1,对其读写的结果将会不正确RACAP2寄存器可以读不可以写,因为写可能引起交迭重载或者重载出错。

在处理Timer2的RACAP2寄
存器前必须停止计时(TR2=0)。

可编程时钟输出
P1.0可以输出50%占空比的可编程时钟,如图9所示。

这个引脚,除了作为普通的IO口,还有另外两个交替功能,它可以编程为Timer2的外部输入脚或者占空比50%的可变时钟输出,在晶振16M时频率范围从61Hz到4MHz。

Timer2指定为时钟发生器,必须将C/T2为清0并将T2OE位置1。

TR2启动或停止计时器。

输出频率取决于晶振频率和Timer2的捕捉寄存器的重载值,如下面公式所示。

时钟输出频率=晶振频率/4×(65536-(RCAP2H,RCAP2L))
在时钟输出模式,Timer2溢出不会产生中断,它可以同时作为波特率发生器和时钟输出使用,然而,当他们都使用(RCAP2H,RCAP2L)时,波特率和时钟输出频率不能取决于独自的设置参数。

相关主题