我用的是128A 然后8M晶振 9600 的波特率 用的是uart0那个
void uart0_init()
{
DDRE = 0xfe;
PORTE = 0xff;
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x07;
UBRR0L = 0x33; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x18;
UCSR0A = 0x20;
}
这个是我的初始化函数
void uart0_tx(uint8 tp)
{
while(!( UCSR0A & BIT5));
UDR0 = tp ;
}
这个是发送函数
有时候会停在这个while的上 于是我初始化的时候就加了个UCSR0A = BIT5 来认为写入空标志位,但是接收到的时候还是跟我发送的不一样诶,纠结了一个早上了T T
求解答! |