为什么我用C语言编译的时候,没有错误,但是就是运行不出来结果?

我用的是keli2,编译没问题,主要是最后那个在串口调试窗口显示不出来!

现在我来回答一下吧:
参照下面本人的例子来说明一下:
#include <AT89X51.h>
#include <stdio.h>
int main (void)
{
SCON = 0x50;
TMOD = 0x20;
TCON = 0x40;
TH1 = 0xE8;
TL1 = 0xE8;
T1 = 1;
TR1 = 1;
while (1)
{
printf ("Hello World!\n");
}
return 0;
}
代码的具体意思怎么样,我就不解释了,重点放在如何实现从串口调试窗口中输出printf的内容吧。
其实很简单,将代码编译链接后,开始调试,分别打开view -> serial window #1
然后,我们按run键,此刻,serial window #1并没有任何内容,症结在哪儿呢?
我们回想一下串口通信的知识吧,知道了吧,我们没有在代码中设置串口发送寄存器中的内容,也就是,我们根本就还没启动串口发送消息。
这下好办,我们继续打开peripherals -> serial channel这个就是串口寄存器控制中心,我们在给其中的TI前面打上个勾,也就是启动串口发送消息。
在此,我们就可以看到串口调试窗口中输出printf的内容了~

上面的代码是我参照那本书上的例子,我分析后,发现其实是它的代码出错了,只要把代码改正,也就不用那么麻烦了,经过上面这一步,估计大家猜到错误出在哪里了,就就是:
T1 = 1;
我们改回:
TI = 1;
然后直接运行就可以看到效果了!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-25
#include <regx51.h>
#include <stdio.h>
void main(void)
{
SCON = 0x50; //置串口工作方式1,允许接收
TMOD = 0x20; //置定时/计数器1工作方式2
TCON = 0x40; //TR1=1;启动定时计数器1工作 和下面的TR1 重复了
TH1 = 0xE8; //设置波特率
TL1 = 0xE8;
T1 = 1;
TR1 = 1;

while(1)
{
printf ("Hello/n");
}

}
后面的就不知道你要表达什么意思了,单片机串口程序和其他混到一起了吗?
第2个回答  2011-04-25
这段代码有问题:
while(1)
{
printf ("Hello/n");
}

循环语句没有终止条件,循环会一直进行下去,得不到结果
第3个回答  2011-04-25

有错误的

第4个回答  2011-04-25
没说明白,要说详细点吧!
相似回答