查看完整內容
程序本身沒有什么問題,主要是因為晶振頻率不合適,導致波特率誤差太大,需要設置加倍。
void UartInit(void) //4800bps@12.000MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位數(shù)據(jù),可變波特率
TMOD = 0x20; //設定定時器1為8位自動重裝方式
TL1 = 0xF3; //設定定時初值
TH1 = 0xF3; //設定定時器重裝值
TR1 = 1; //啟動定時器1
ET1 = 0; //禁止定時器1中斷
EA ...