打印
[AVR单片机]

串口的迷惑

[复制链接]
1378|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
李鑫旺|  楼主 | 2008-6-16 19:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调试一段代码,感觉很困惑
if(UCSR0A&(1<<RXC0))LEDF9_flash (30);//判断RXC0是否置位,置位则LEDF9灯亮                
En_uart();//使能单片机串口发送
delay(100); //收发转换需要的延迟        
sendstr(uart_cmd);    //单片机发送字符串    (uart_cmd 为数组)
delay(10);
Stop_uart();  
if(UCSR0A&(1<<RXC0))LEDF8_flash (30);

此代码疑惑之处在于当发送完字符串时LEDF8灯亮了,
而之前LEDF9灯是不会亮的
很奇怪,感觉单片机发送数据之后把RXC0置位了,很疑惑
请个位前辈,同行指点下,谢谢!

相关帖子

沙发
李鑫旺|  楼主 | 2008-6-17 10:06 | 只看该作者

串口的迷惑

不知有人遇见这样的问题没,谢谢指点啊 ...

使用特权

评论回复
板凳
popipa| | 2008-6-18 19:35 | 只看该作者

接收也是需要等待的

while( 1 )
{
    if( UCSR0A&(1<<RXC0) )
    {
       LEDF9_flash (30);
       break;
    }
}

En_uart();//使能单片机串口发送
delay(100); //收发转换需要的延迟        
sendstr(uart_cmd);    //单片机发送字符串    (uart_cmd 为数组)
delay(10);
Stop_uart();  
if(UCSR0A&(1<<RXC0))LEDF8_flash (30);

使用特权

评论回复
地板
李鑫旺|  楼主 | 2008-6-23 14:02 | 只看该作者

半双工惹的祸

问题已解决,因为我用的是MAX3070,是半双工通信,而且MAX3070的re引脚一直接地,是接受使能状态,所以单片机每次发送完后,单片机会接到自己发送的数据,导致RXC0置位...

使用特权

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

本版积分规则

5

主题

14

帖子

0

粉丝