串口调试助手没发数据51单片机为什么能接收到数据?

#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitP2_0=P2^0;voiddela... #include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit P2_0=P2^0;

void delay(uint z)
{
uint x,y;
for(x=0; x<z; x++)
for(y=0;y<110;y++);
}
void main()
{
TMOD=0x20;//定时器1,方式2,自动重装

TH1=0xfd;//波特率9600
TL1=0xfd;

TR1=1;//开启定时器1
REN=1;//允许串行接收

SM0=0;//工作方式1
SM1=1;

P0=0xfe;//选中第一个数码管
while(1)
{
while(!RI);//查询

RI=0;

P2_0=0;//数码管的小数点亮
delay(100);
P2_0=1;//数码管的小数点灭
delay(100);
}
}
展开
 我来答
edwardandjack
2011-10-21 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:103万
展开全部
程序的问题,你用的while(!RI)表示是否有信号。但是有信号时RI为1你用了!RI就表示0不会执行,没通信时RI为0结果!RI表示为1就执行了。你的程序就是有通信时不亮,没通信时会亮弄反了。建议看看书吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蚂蚁叼骨头
2011-10-11 · TA获得超过229个赞
知道小有建树答主
回答量:466
采纳率:75%
帮助的人:259万
展开全部
while(1)
{
while(!RI);//查询
{
RI=0;

P2_0=0;//数码管的小数点亮
delay(100);
}
P2_0=1;//数码管的小数点灭
delay(100);
}

你加个括号看一下,如上面程序。还有,你有没有考虑到你的P2(P2.0)口在你的整个程序中被修改过,也就是灯变灭过。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸福人生8421
2011-10-12
知道答主
回答量:38
采纳率:0%
帮助的人:5.8万
展开全部
不是串口调试助手发的,是单片机。程序你没有理解。你用的是查询法。收到数据后RI置1,执行后边的,建议你看看书》
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
取得如松柏心1
2011-10-10 · TA获得超过171个赞
知道答主
回答量:90
采纳率:0%
帮助的人:26.8万
展开全部
可能是别的应用程序发到串口的
追问
怎样才能让串口调试助手发数据时,在接受数据?
追答
你换一个串口试试看,或者换个波特率
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ppc68
2011-10-10 · TA获得超过581个赞
知道小有建树答主
回答量:1257
采纳率:100%
帮助的人:798万
展开全部
会不会跟中断有关系呢
更多追问追答
追问
我没有用中断,用的是查询方式呀
追答
硬件中断呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式