单片机接收不到串口调试助手发来的数据,我用的是USB接口,

下面是串行接收中断函数voidserial()interrupt4{if(RI){uchari,j;ucharch;RI=0;ch=SBUF;if(i<1){j=0;Re... 下面是串行接收中断函数

void serial() interrupt 4
{
if(RI)
{
uchar i,j;
uchar ch;
RI = 0;
ch = SBUF;
if(i < 1)
{
j =0;
Receive_Buf[j] = ch;
i = 1;
}
else
{
j++;
i++;
Receive_Buf[j] = ch;
if(i > 16)
{
i = 0;
j = 0;
R_flag = 1;
}
}

}
}
毕设要用,拜托各位大神。。。。
展开
 我来答
seuzhouww
2013-05-11 · TA获得超过1386个赞
知道小有建树答主
回答量:658
采纳率:0%
帮助的人:306万
展开全部
【1】你所做的收到与否判断。如果不是在线仿真,查看Receive_Buf[],而是根据回复情况,结论可能是错的。
【2】没有看到你的应答程序。
【3】如果串口设置了最高优先,PS=1;其余IP位为0情况。仿真仍然时有时无,还应检查电平接口标准。通常USB转串口(TTL电平),可能TTL侧是3V。因此上拉个电阻在单片机RXD管脚到5V电源,再试试看。TXD则不需要。
追问
谢谢大哥,我试一下。感觉你的第三条比较有道理。
zhxiufan
2013-05-11 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38385
国家科技进步奖

向TA提问 私信TA
展开全部
void serial() interrupt 4
{
static uchar i;
uchar ch;
if(RI)
{
RI = 0;
Receive_Buf[i] = SBUF;
i++;
if(i > 16)
{
i = 0;
R_flag = 1;
}
}
}
更多追问追答
追问
试过了,还是有时候能接收到,有时候接收不到。
追答
1、你可以将串口优先级设最最高试试

2、这个中断要是R_flag=1,需要接收17个数据,你发送的数据个数是否如此。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tomiyana2
2013-05-11 · 超过144用户采纳过TA的回答
知道小有建树答主
回答量:234
采纳率:0%
帮助的人:240万
展开全部
兄弟, 你也应该明白是什么问题吧, "单片机接收不到串口调试助手发来的数据,我用的是USB接口" C是过程语言, 转化到单片机内是机器语言(汇编) , USB 接口与串口是两个不同的硬件, 它们的通讯设置是不相同的
你编写的这段代码前面应该还有"通讯参数设置" 这个模块, 以你焊接的硬件来编写这个模块. 若软硬件不搭配, 肯定是通讯不了的
追问
相同的一段报文,相同的设置,有时候能接收到,有时候接收不到,。要说哪里设置错误了,可是有时候能接收到,并且显示和回送的报文都是正确的,真不知道怎么回事。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
古木枯荣
2013-05-11 · 超过16用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:50.1万
展开全部
是不是超出了可识别的设备呀
更多追问追答
追问
不是,相同的一段报文,相同的设置,有时候能接收到,有时候接收不到,。要说哪里设置错误了,可是有时候能接收到,并且显示和回送的报文都是正确的,真不知道怎么回事。
追答
我也出现过,是不是主程序太长了?上次我的就是主程序太长
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式