打印
[AVR单片机]

atmega64 uart1 串口通信问题

[复制链接]
6565|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaoweige|  楼主 | 2009-8-25 20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下边是uart1串口发送程序:
void uart1_tx(unsigned char tx_data )
{
UDR1 = tx_data;//这句要放在while前边才可以,不知道为什么
while( !(UCSR1A & 0x40) );
UCSR1A |= 0x40;
delay(0xff);
}

如果我把UDR1 = tx_data;放到while( !(UCSR1A & 0x40) );后边,通信就不正常
不知道为什么.........................
不管放在while这句前边后边,都应该可以的,我这么认为。。。。。

还有就是通信速率问题,baud = 115200 时,就乱码了,不知道为什么
是不是mega64的uart通信速率根本就达不到115200,或者更高????

相关帖子

沙发
大师.com| | 2009-8-26 14:18 | 只看该作者
UDR 是接受/发送数据寄存器,即缓冲区,你把UDR1 = tx_data;放到while( !(UCSR1A & 0x40) );后边,没往缓冲区里放东西呢?怎么判断while( !(UCSR1A & 0x40) );是否发送??

使用特权

评论回复
板凳
zhaoweige|  楼主 | 2009-8-28 23:26 | 只看该作者
l楼上,我mega8的简单通信程序中都是放在while这句后边,也可以的、、、、
mega64初始化时,UDR是空的吧、、、、、
或许记错了。。:D我再仔细看看手册,谢谢

通信波特率高了,出乱码是为什么???难道115200这个波特率校验才可以??????

使用特权

评论回复
地板
大师.com| | 2009-8-31 16:56 | 只看该作者
是和什么通讯???

使用特权

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

本版积分规则

37

主题

147

帖子

1

粉丝