关于51单片机用定时器1秒延时,这有个程序不知对了?求解。

void delay1()
{
uchar t;
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
for(t=19;t>0;t--)
{
TF1=0;
TH1=65536-50000/256;
TL1=65536-50000%256;
}
}

你这个程序肯定不行,别说1秒,0.1秒都达不到,我帮你改一下:
void delay1()
{
uchar t = 19;
TMOD=0x10;
for(t=19;t>0;t--)
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
while(!TF1);//等待定时器1溢出标志置位
TF1 = 0;//清0标志位
}
}
你没有说明晶体振荡器频率,所以定时器初值和循环次数t按原程序追问

谢谢你,大侠,我写的错在哪了啊?晶体是12MHz的。

追答

你没有等待定时器溢出,怎能达到延时效果。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-04

51单片机用定时器1秒延时  供参考

相似回答