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