[AVR单片机] atmega64 uart1 串口通信问题

[复制链接]
 楼主| 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

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