你是怎么解决的?我也遇到这个问题,串口设置成9600时,收发正常,改为1200时,收发就乱码了。附上初始化部分程序
#define Crystal 11059200 //晶振11.0592MHZ
#define Baud 1200 //波特率
/*********************串口初始化**********************/
void usart1_init(void)
{
unsigned char Temp;
DDRD |= 0x08; //设置RXD1和TXD1
UCSR1B = 0x00; //禁止发送和接收
UCSR1A = 0x00; //异步模式USX0=0
// UCSR1C = 0x06; //0000 0110,UCSZ01=1,UCSZ00=1;8位字符,1位停止位
UCSR1C|=BIT(7)|BIT(1)|BIT(2)|BIT(5); //选择USCRC,异步操作,偶检验危,1个停止位,八位数据
Temp=(Crystal/Baud/16)-1; //求出波特率的赋值
UBRR1H=Temp/256; //波特率寄存器高八位赋值
UBRR1L=Temp%256; //波特率寄存器低八位赋值
// UCSR1B=0xD8 ; //允许发送和接收,接收和发送结束中断使能
UCSR1B|=BIT(4)|BIT(3)|BIT(7);
SREG|=BIT(7); //全局中断使能
}
|