52 单片机里面有一个T2定时器,它比普通的16为定时器功能要强大多了,今天研究了T2定时器的一个应用——可编程 时钟输出功能。配置成500KHZ的时钟信号输出后,用 示波器测量了时钟输出脚P1^0,发现还真准。
为了把定时器配置成时钟发生器,位 C/T2(T2CON.1)必须清0,也就是选择定时模式,位T2OE(T2MOD.1)必须置1,使能 定时器2输出。位TR2(T2CON.2)启动、停止定时器。时钟输出频率取决于 晶振频率和定时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值,如公式所示:
定时器2的可编程输出模式原理框图如下
图1 定时器2的可编程输出模式
上个测试用的程序
// 文件名: t2_clk.c
// 功能: T2定时器的可编程时钟输出
// 说明: 单片机AT89S52,晶振12MHZ,输出频率=晶振频率/(4*[63356-(RCAP2H,RCAP2L)])
// 日期: 2011年4月6日
#include
sbit clk_out=P1^0; //时钟输出端
void t2_clock(void)
{
C_T2=0; //定时器模式
T2MOD=0x02; //T2OE=1,定时器2允许输出
RCAP2L=0XFa; //赋T2的预置值0xfffa,输出频率500K
RCAP2H=0XFF;
TR2=1;
}
void main(void)
{
t2_clock();
while(1);
}
当频率为12MHZ时,通过改变(RCAP2H,RCAP2L)的值,时钟输出频率范围为45.7781HZ到3.00MHZ(实测)。信号波形无明显失真。