问下如图外接33M晶振时单片机的时钟频率和波特率是多少(芯片为STC12C5A60S2)

如题所述

STC12C5A60S2即可以使用内部IRC振荡器做时钟源,也可以使用外接晶振的振荡器做时钟源。该单片机还有一个系统时钟分频器,当外接33M晶振时,如果不分频,单片机的时钟频率就是33MHz。

串口波特率是根据定时器的设置确定的。

void UartInit(void) //[email protected]

{

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) //[email protected]
{
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
}

追问

非常感谢!

亲,能不能帮忙解释下带???标记的几段程序

追答

哈哈!你买单一次,还消费起来没完了?

追问

我提问里面还有一单

麻烦了

温馨提示:答案为网友推荐,仅供参考