单片机接收不到串口调试助手发来的数据,我用的是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;
}
}
}
}
毕设要用,拜托各位大神。。。。 展开
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;
}
}
}
}
毕设要用,拜托各位大神。。。。 展开
4个回答
展开全部
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;
}
}
}
{
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个数据,你发送的数据个数是否如此。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
兄弟, 你也应该明白是什么问题吧, "单片机接收不到串口调试助手发来的数据,我用的是USB接口" C是过程语言, 转化到单片机内是机器语言(汇编) , USB 接口与串口是两个不同的硬件, 它们的通讯设置是不相同的
你编写的这段代码前面应该还有"通讯参数设置" 这个模块, 以你焊接的硬件来编写这个模块. 若软硬件不搭配, 肯定是通讯不了的
你编写的这段代码前面应该还有"通讯参数设置" 这个模块, 以你焊接的硬件来编写这个模块. 若软硬件不搭配, 肯定是通讯不了的
追问
相同的一段报文,相同的设置,有时候能接收到,有时候接收不到,。要说哪里设置错误了,可是有时候能接收到,并且显示和回送的报文都是正确的,真不知道怎么回事。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是超出了可识别的设备呀
更多追问追答
追问
不是,相同的一段报文,相同的设置,有时候能接收到,有时候接收不到,。要说哪里设置错误了,可是有时候能接收到,并且显示和回送的报文都是正确的,真不知道怎么回事。
追答
我也出现过,是不是主程序太长了?上次我的就是主程序太长
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |