![]() |
發布時間: 2018-10-23 17:37
正文摘要:為什么調用printf在這個板子上輸出中文會出現亂碼,我拿不同的板子試了基本一樣的代碼就沒亂碼,板子應該沒有問題,請賜教 單片機源碼如下: #include<STC15F2K60S2.H> #include <stdio.h> #defin ... |
霍禮林 發表于 2018-10-23 20:57 12M晶振就要用12M晶振計算,否則誤差太大了,自然容易出錯: void UartInit(void) //9600bps@12.000MHz { SCON = 0x50; //8位數據,可變波特率 AUXR |= 0x01; //串口1選擇定時器2為波特率發生器 AUXR |= 0x04; //定時器2時鐘為Fosc,即1T T2L = 0xC7; //設定定時初值 T2H = 0xFE; //設定定時初值 AUXR |= 0x10; //啟動定時器2 } 這樣與PC機串口通訊會失步。11.0592M計算的9600波特率誤差為0,而12M計算的誤差為0.16,所以還是建議用11.0592的晶振。 如果只是兩個單片機之間串口通訊,那么晶振與波特率都無所謂,只要兩邊完全相同就可以了。 |
cjm82 發表于 2018-10-23 20:11 兩個板子都是焊接的都是12M的晶振 |