|
本帖最后由 qq635274216 于 2013-1-9 15:08 编辑
首次使用avr单片机,需要用到串口通信,通信格式7位数据位,偶校验,1停止位,波特率9600.我是用的是atmega128的串口0,刚学会使用ICC,
用它做了如下配置:
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9600 (0.0%)
// char size: 7 bit
// parity: Even
void uart0_init(void)
{
//UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0B = 0xD8;
UCSR0C = 0x24;
UBRR0L = 0x2F; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
}
查看datasheet配置没有错误,但是奇怪的问题就发生了,我把串口调试助手设置成8N1,9600,然后我发送0X82(1000 0010)给单片机
按理说单片机收到UDR0的数据应该是0x02(0000 0010)但是实际上UDR0的数据却是0X82。同样我用单片机发送0X02给串口助手,串口助手应该收到0X82,而实际上收到的却是0x02,
也就是说我的单片机设置和8N1,9600一样,而不是7位数据位,偶校验,1停止位,波特率9600。
后来试过用5,6位数据格式结果也一样,首次使用请高手指点。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|