51单片机通信问题

这是我的程序,默认协议为AABBaddressdata1data200FF,接收七个八位数据正常,一但接收六个八位数据,比如AABB013f00FF,程序就陷入死循环了,... 这是我的程序,默认协议为 AA BB address data1 data2 00 FF,接收七个八位数据正常,一但接收六个八位数据,比如 AA BB 01 3f 00 FF ,程序就陷入死循环了,大家帮帮忙帮我解决下怎么处理像六个八位数据的情况啊,谢谢!
http://www.51hei.com/bbs/dpj-33724-1.html
展开
 我来答
lazycat007
2015-04-22 · 超过13用户采纳过TA的回答
知道答主
回答量:46
采纳率:100%
帮助的人:13.6万
展开全部
好像是这里的问题吧,你在这里判断了,当接收的数据多于6个的时候,才显示数据,否则不做任何处理,但是后面没有写i=0。在if后面加上i=0试试看。

if(i>6)
{
disp_data();
i=0;
}
else
{

i=0;
}

这样试试看。
追问
那样就达不到我要的目的了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bjdqe1024
2015-04-22 · TA获得超过653个赞
知道小有建树答主
回答量:774
采纳率:50%
帮助的人:422万
展开全部
数组table在哪里定义的?不完整的吧?
追问
void disp_data();

sbit led0=P0^0;
sbit led1=P0^1;
sbit led2=P0^2;
sbit led3=P0^3;
sbit led4=P0^4;
sbit led5=P0^5;
sbit led6=P0^6;
sbit led7=P0^7;
uchar table[8];
uchar i=0;

这是前边的定义部分
追答
你程序里的i值,与你发送的数据长度不相等。
程序里,你认为接收到的数据长度一定是7,所以,大于7才 i=0,问题就出在这。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式