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计数。
 |