您的位置 首页 嵌入式

如安在6M晶振下得到更高的波特率

在一些对电磁干扰要求严格的电路中尽量降低晶体的振荡频率是必要的,而如果又需要获得更高的串口通信频率,这时可以考虑使用8052中的T2作波…

在一些对电磁搅扰要求严厉的电路中尽量下降晶体的振动频率是必要的,而假如又需求取得更高的串口通讯频率,这时能够考虑运用8052中的T2作波特率发生器来解决问题,只是只要6M的晶振却能够得到38400b/s的波特率。

下面先来看看用T1做波特率发生器时的状况,晶振为6M:

若用T1作波特率发生器,它只能作为8位定时器运用,为得到更高的波特率,能够设置SMOD=1,则它的波特率公式为:BAUND=2*fOSC/(32*12*(256-X)),其间X为定时器T1的初值。若BAUND=4800,则X=249.5,取整为0xf9,或舍入为0xfa,发送10个s,在超级终端调查,得到一个字母k或空。在挑选BAUND=9600,则X=252.7,取整为0xfc或舍入为0xfd,在超级终端得到“]iM”或“^^”,并且呈现的成果也不是必定的,能够预期用T1作波特率发生器不能得到4800及以上安稳的波特率。

依然以6M晶振来评论,而改用T2作波特率,状况大有改观:

先写出T2一段初始化程序:

voidInitialSerialPort()

{

SCON=0x50;//方法1,答应接纳

C_T2=0;

RCLK=1;

TCLK=1;

RCAP2H=0xff;

RCAP2L=0xd8;//波特率=4800的设置值

TR2=1;

}

T2的波特率公式为:BAUND=fOSC/[32*65536-(RCAP2H,RCAP2L)],以下是各种波特率下RCAP2L的取值:

RCAP2H=0xff;

RCAP2L=0xd8;//波特率=4800

//RCAP2L=0xec;//波特率=9600

//RCAP2L=0xf6;//波特率=19200

//RCAP2L=0xfb;//波特率=38400

上述各种波特率状况下串口超级中止显现接纳数据正常:都为10个s。

选用8952中的T2作波特率发生器能够得到比T1高得多的波特率。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/277153.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部