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

来源:本站
导读:目前正在解读《如何在6M晶振下得到更高的波特率》的相关信息,《如何在6M晶振下得到更高的波特率》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《如何在6M晶振下得到更高的波特率》的详细说明。
简介:本文介绍了在某种场合只能使用6M晶振的情况下得到更高波特率的方法。

在一些对电磁干扰要求严格的电路中尽量降低晶体的振荡频率是必要的,而如果又需要获得更高的串口通信频率,这时可以考虑使用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高得多的波特率。

提醒:《如何在6M晶振下得到更高的波特率》最后刷新时间 2024-03-14 01:18:53,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《如何在6M晶振下得到更高的波特率》该内容的真实性请自行鉴别。