[其它应用] 多出一个0x00的数据

[复制链接]
 楼主| chenho 发表于 2020-7-5 17:51 | 显示全部楼层 |阅读模式
用79F166做RS485控制,发送一组串口数据后面会多出一个0x00的数据。
gongche 发表于 2020-7-5 17:55 | 显示全部楼层
看看你得程序吧
 楼主| chenho 发表于 2020-7-5 17:58 | 显示全部楼层

void UartSendByte(unsigned char dat)
{
     
    EA    =    0;
     SBUF=dat;
     while(TI==0) ;
     TI=0;
     EA    =    1;
huwr 发表于 2020-7-5 18:02 | 显示全部楼层
发送和接受都是咋样的
 楼主| chenho 发表于 2020-7-5 18:07 | 显示全部楼层

主程序中发送:
          UartSendByte(0xff);
          UartSendByte(0x01);
          UartSendByte(0x00);
          UartSendByte(0x04);
          UartSendByte(0xff);
          UartSendByte(0x00);
          UartSendByte(0x04);
串口工具收到:
FF 01 00 04 FF 00 04 00
FF 01 00 04 FF 00 04 00
FF 01 00 04 FF 00 04 00
FF 01 00 04 FF 00 04 00
bqyj 发表于 2020-7-5 18:13 | 显示全部楼层
你看你的tx引脚有没有上拉,还有就是tx对应的pin初始化的时候是不是初始化成了输出且输出0,如果是这样,每次发送多会多出一个0,改成初始化输出1 就好了
wenfen 发表于 2020-7-5 18:16 | 显示全部楼层
发送时,必须先将输出口置高电平
wenfen 发表于 2020-7-5 18:20 | 显示全部楼层
谢谢,确实是这样,已经改好了。
tian111 发表于 2020-7-5 18:23 | 显示全部楼层
大神 对于单片机串口也是这样吗 我把单片机P3^0 P3^1置低后 便不能正常收发数据了  但是实际中这两个IO口是复用的  我确实需要将其置低 有和解决办法吗

评论

串口复用时通讯的对方不会接收到乱七八糟的数据吗?同样在你用串口的时候复用的外围电路不会混乱吗?如果你有其它硬件去控制或有高可靠的软件协议来避免这些那也没问题,发送数据前将端口写1即可。不过我还是怀疑你没有搞清楚概念,这种复用太麻烦了,随便什么显示、键盘、简单IO的复用都要简单方便地多,为何非要复用串口?  发表于 2020-8-11 01:11
 楼主| chenho 发表于 2020-7-24 18:23 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部