|
|
這個(gè)是回4樓的
51單片機(jī) 12T 11.0592MHz晶振 定時(shí)器1 8位自動(dòng)重裝 115200波特率 實(shí)測(cè)無(wú)問(wèn)題
void UartInit(void) //115200bps@11.0592MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR &= 0xBF; //定時(shí)器1時(shí)鐘為Fosc/12,即12T
AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0F; //清除定時(shí)器1模式位
TMOD |= 0x20; //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
TL1 = 0xFF; //設(shè)定定時(shí)初值
TH1 = 0xFF; //設(shè)定定時(shí)器重裝值
ET1 = 0; //禁止定時(shí)器1中斷
TR1 = 1; //啟動(dòng)定時(shí)器1
}
下面是回樓主的 用STC的ISP工具生成的 但11.0592MHz晶振下誤差居然有25% 倍速更高 誤差達(dá)50% 請(qǐng)問(wèn)樓主一定要用這么奇怪的波特率么
void UartInit(void) //38400bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR &= 0xBF; //定時(shí)器1時(shí)鐘為Fosc/12,即12T
AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0F; //清除定時(shí)器1模式位
TMOD |= 0x20; //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
TL1 = 0xFF; //設(shè)定定時(shí)初值
TH1 = 0xFF; //設(shè)定定時(shí)器重裝值
ET1 = 0; //禁止定時(shí)器1中斷
TR1 = 1; //啟動(dòng)定時(shí)器1
} |
|