STC12C5A60S2即可以使用内部IRC振荡器做时钟源,也可以使用外接晶振的振荡器做时钟源。该单片机还有一个系统时钟分频器,当外接33M晶振时,如果不分频,单片机的时钟频率就是33MHz。
串口波特率是根据定时器的设置确定的。
void UartInit(void) //9600bps@33.000MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xA5; //设定定时初值
TH1 = 0xFC; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
这个可用烧录软件的波特率计算器计算,很方便。
追问12分频是多少?
亲,12分频的波特率又是多少?
追答没有12分频这个档位。
再强调一次,串口波特率是根据定时器的设置确定的。不是你使用了多少频率的系统时钟波特率是多少这个概念,虽然对具体设置好了的波特率存在这个计算关系,但可能波特率变为非标准的了,就不能正确通信了。应该是反过来,你期望多少波特率,然后怎么设置,这就用到了烧录软件的波特率计算器,都不用你自己算。
亲,能不能给个12T(不分频)下的波特率?没这个软件
追答void UartInit(void) //9600bps@33.000MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xB8; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
非常感谢!
亲,能不能帮忙解释下带???标记的几段程序
追答哈哈!你买单一次,还消费起来没完了?
追问我提问里面还有一单
麻烦了