51单片机求助
字符串的结束标志位'\0',我以'\0'判断字符串的结束,
无法正确判断,代码如下:
uchar code tempstr[]="You are welcome.";
void display()
{
for(i=0;;i++)
{
if(tempstr!='\0')
{
SBUF=tempstr;
write_com(0x80+i);
delay(2);
write_date(tempstr);
}
}
}
而如下代码测试没有问题,
void display()
{
for(i=0;i<16;i++)
{
SBUF=tempstr;
write_com(0x80+i);
delay(2);
write_date(tempstr);
}
}
请各位高手帮忙看看。 for(i=0;;i++)这里没有上限,程序会一直执行下去可能已经跑飞了。 你改成:
for(i=0;;i++)
{
if(tempstr!='\0')
{
SBUF=tempstr;
write_com(0x80+i);
delay(2);
write_date(tempstr);
}
else
break;
}
可以运行正确,不过这么做程序结构还是不太好
程序要是沒死的话,它一直在发送着非零的字符。 两位:
一语点醒梦中人啊,代码改动如下:
void display()
{
i=0;
while(tempstr!='\0')
{
SBUF=tempstr;
write_com(0x80+i);
delay(2);
write_date(tempstr);
i++;
}
}
调试成功!万分谢谢!
ksks,改成了就是爽是吧? 这几天忙,呵呵。
改完了很爽。
页:
[1]