stc8h的,研究了一下串口1初始化程序并做了簡單說明(手冊寫的很詳細,又感覺上躥下跳葫蘆糊涂的)供參考:
void Uart1Init() //OK
{
SCON = 0x50; //SCON:串口1:0101:010模式1、8位可變波特率、1允許串口接收數據; ok
TMOD = 0x20; //設置為:定時器1,8位自動重載模式,當定時器1計數寄存器TL1中的8位計數值溢出時,系統會自動將TH1中的重載值,裝入TL1中。
AUXR = 0x40; //AUXR B6(設置定時器1速度控制位1):定時器1為1T模式,即CPU時鐘不分頻( FOSC/1);
//AUXR B5(串口1模式0通訊速度控制位0):波特率不加倍,固定為 Fosc/12;
//AUXR B0(串口1波特率發生器BRT選擇位0): 選擇定時器1作為波特率發生器(BRT);
TL1 = BRT; //定時器1計數寄存器:高低各一個,范例=254?定時器1的8位自動重載模式周期計算公式:定時器周期=(256–TH1)/SYSclk (自動重載);
TH1 = BRT; //串口通信中AUXR輔助寄存器中可設置啟動BRT
TR1 = 1; //定時器T1的運行控制位。該位由軟件置位和清零。當GATE( TMOD.7)=0, TR1=1時就允許T1開始計數,TR1=0時禁止T1計數。當GATE(TMOD.7)=1, TR1=1且INT1輸入高電平時,才允許T1計數。
 |