打印

79F166串口会自动多发一个数据

[复制链接]
1628|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ipook168|  楼主 | 2012-6-18 15:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ipook168 于 2012-6-18 15:23 编辑

最近用79F166做RS485控制,发送一组串口数据后面会多出一个0x00的数据。
程序如下:
void UartSendByte(unsigned char dat)
{
   
   EA    =    0;
   SBUF=dat;
   while(TI==0) ;
   TI=0;
   EA    =    1;

主程序中发送:
        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
请问版主这是怎么回事,哪里不对?
沙发
yangvu| | 2012-6-19 08:36 | 只看该作者
你看你的tx引脚有没有上拉,还有就是tx对应的pin初始化的时候是不是初始化成了输出且输出0,如果是这样,每次发送多会多出一个0,改成初始化输出1 就好了

使用特权

评论回复
板凳
neyo.zhong| | 2012-6-19 09:06 | 只看该作者
发送时,必须先将输出口置高电平

使用特权

评论回复
地板
ipook168|  楼主 | 2012-6-20 08:04 | 只看该作者
谢谢,确实是这样,已经改好了。

使用特权

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

本版积分规则

3

主题

9

帖子

1

粉丝