
串口调试助手没发数据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);
}
} 展开
#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);
}
} 展开
展开全部
程序的问题,你用的while(!RI)表示是否有信号。但是有信号时RI为1你用了!RI就表示0不会执行,没通信时RI为0结果!RI表示为1就执行了。你的程序就是有通信时不亮,没通信时会亮弄反了。建议看看书吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(1)
{
while(!RI);//查询
{
RI=0;
P2_0=0;//数码管的小数点亮
delay(100);
}
P2_0=1;//数码管的小数点灭
delay(100);
}
你加个括号看一下,如上面程序。还有,你有没有考虑到你的P2(P2.0)口在你的整个程序中被修改过,也就是灯变灭过。
{
while(!RI);//查询
{
RI=0;
P2_0=0;//数码管的小数点亮
delay(100);
}
P2_0=1;//数码管的小数点灭
delay(100);
}
你加个括号看一下,如上面程序。还有,你有没有考虑到你的P2(P2.0)口在你的整个程序中被修改过,也就是灯变灭过。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是串口调试助手发的,是单片机。程序你没有理解。你用的是查询法。收到数据后RI置1,执行后边的,建议你看看书》
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能是别的应用程序发到串口的
追问
怎样才能让串口调试助手发数据时,在接受数据?
追答
你换一个串口试试看,或者换个波特率
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
会不会跟中断有关系呢
更多追问追答
追问
我没有用中断,用的是查询方式呀
追答
硬件中断呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询