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

我用的是keli2,编译没问题,主要是最后那个在串口调试窗口显示不出来!... 我用的是keli2,编译没问题,主要是最后那个在串口调试窗口显示不出来! 展开
 我来答
米水胡余
2011-04-25 · TA获得超过302个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:192万
展开全部
现在我来回答一下吧:
参照下面本人的例子来说明一下:
#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;
然后直接运行就可以看到效果了!
抚琴舒山河
2011-04-25
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
#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");
}

}
后面的就不知道你要表达什么意思了,单片机串口程序和其他混到一起了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
愿雨8899
2011-04-25 · 超过10用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:36.8万
展开全部
这段代码有问题:
while(1)
{
printf ("Hello/n");
}

循环语句没有终止条件,循环会一直进行下去,得不到结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
riwenxiao
2011-04-25 · TA获得超过456个赞
知道小有建树答主
回答量:921
采纳率:0%
帮助的人:599万
展开全部

有错误的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜猫叫枫子
2011-04-25 · TA获得超过1159个赞
知道小有建树答主
回答量:704
采纳率:0%
帮助的人:482万
展开全部
没说明白,要说详细点吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式