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