打印
[其他ST产品]

51单片机232串口通信,一个发送,一个接收,一直循环下去

[复制链接]
2334|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
功能就是上电,单片机发30,计算机回80,单片机会发02,然后又发0c。到这里都没问题,然后计算机给回3e,单片机就开始无限发oc,怎么回事
我只是想让0c-3e,0c-3e,这样一直可以循环下去

1.png (27.08 KB )

1.png

2.png (10.87 KB )

2.png
沙发
shisizai| | 2016-8-21 21:40 | 只看该作者
你的receiveData没有复位,它的值一旦变成0x3e就一直是0x3e,所以就一直发0x0c了
最后的if里面加一个receiveData=0就可以了

使用特权

评论回复
板凳
小叶三千|  楼主 | 2016-8-22 08:36 | 只看该作者
shisizai 发表于 2016-8-21 21:40
你的receiveData没有复位,它的值一旦变成0x3e就一直是0x3e,所以就一直发0x0c了
最后的if里面加一个receiv ...

那为什么es=2的时候,发80可以正常呢

使用特权

评论回复
地板
shisizai| | 2016-8-22 08:53 | 只看该作者
小叶三千 发表于 2016-8-22 08:36
那为什么es=2的时候,发80可以正常呢

在es=2之前 receiveData没有初值,应该是一个未定数,所以能判断if;从es=2之后receiveData的值就一直是0x80,但是你的ex变成了3,而且永远不会变成2,所以跟receiveData的值也没管关系了

使用特权

评论回复
5
suntechnology| | 2016-8-22 16:32 | 只看该作者
程序最后es没有复位,运行到最后es=4,程序就回到
else if(es==4)
{
      ...;
}
因此单片机会不断发送oc
可以将程序最后的es=4改为es=1

使用特权

评论回复
6
steven_fae| | 2016-8-22 18:23 | 只看该作者
小叶三千 发表于 2016-8-22 08:36
那为什么es=2的时候,发80可以正常呢

你可以把es==2改一下,看不会进入重发oc,很可能,要么计算机数据发错了,要么单片机接收错了。
else if(es==2)
{
      receiveData=ox80;
      if(receiveData==0x8)
     {
            RI=0;es++;
      }

}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:清智科技嵌入式工程师
简介:单片机嵌入式底层开发,汽车电子

49

主题

516

帖子

18

粉丝