51单片机12MHz晶振输出方波

2024-11-18 14:55:38
推荐回答(2个)
回答1:

1K T=500us+500us
10K T=50us+50us
20K T=25us+25us

1K以上时,最好不要用定时器0工作方式1,里面涉及到软件延时。

给你提供一个简单的20KHz的方波程序。51单片机接12MHz晶振,定时器0工作方式2。
将程序下载到单片机里,测试一下,试试看。根据实测结果要作调整。
未加按键,略作参考吧。(太晚了,不想写了。)

#include
sbit P10=P1^0;
void Delay25us();

void main()
{
TMOD=0x02;
TH0=(256-25)/256;
TL0=(256-25)%256;
while(1)
{
P10=~P10;
Delay25us();
}
}

void Delay25us()
{
TR0=1;
while(!TF0);
TR0=0;
TF0=0;
}

回答2:

可先算出周期,20Hz的周期为50ms,20KHz的周期是50μs。51单片机在12MHz晶振下,定时最大时间为65.536ms。所以要得到20KHz频率是可以实现的。如要得到20KHz频率,占空比为1:1的方波,只需让定时器定时25μs,12MHz晶振下定时时标为Tcy=12/fosc=1μs;计数个数为X=25μs/1μs=25.定时初值为C=2^16-25=65511.换成十六进制为FFE7H。
即TH0=0FF,TL0=0E7。