新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机与PC机串行通信中波特率的确定

单片机与PC机串行通信中波特率的确定

作者: 时间:2011-08-08 来源:网络 收藏

  4 利用Turbo C编写的程序中率的设定

  Turbo C函数库中提供了专门的调用BIOS软中断的函数Bioscom(int cmd,char byte, int pure),其中:参数cmd用来设置类型,cmd=0,初始化口pure;cmd=1,发送一个字符;cmd=2,接收一个字符;cmd=3返回串口当前状态。参数byte用来口的异步格式及率,其最高3位率的大小,3位

  编码与波特率关系如下:

  100对应波特率为1 200 b/s;101对应波特率为2 400 b/s;110对应波特率为4 800 b/s;111对应波特率为9 600 b/s。?

  假若要把串口设置为2 400 b/s,无奇偶校验位,使用1位停止位和8位数据位,这时对应的b yte值是10100011B=0xa3H。对串口初始化可写成bioscom(0,0xa3,0)。

  当调用函数bioscom(2,0,0)时,其低8位返回的值是串口接收的字符,当调用函数biosc om(1,0,0)时其低8位返回的是发送的字符,当调用函数bioscom(3,0,0)时返回串行口的状态。

5 机中非标准波特率的设定

  机中的标准波特率有时候不能完全兼容的波特率,例如,使用6 MHz的晶振 作为主频,用定时器1方式2产生波特率,则用式(1)产生的波特率基本上没有一个是标准的。当然可以用改变晶振的方法改变波特率,但这不是可行的方法。因此可以对8250的除数锁存器编程,才能取得与相近似非标准的波特率。根据分析两者异步通信的波特率误差最大不能超过5%,若超过则就不能实现正常通信。对于常用的8位、9位和11位一帧的串行传送,其最大的波特率允许误差值分别为6.25%,5.56%和4.5%。

  51系列单片机一般情况下都采用6 MHz晶振,当定时器1工作于方式2时,其波特率由其内部 定时器TH1决定,计算公式为:

  ?

  ? 其中:SMOD可取0或1。

  根据上式可计算出,当SMOD=0时,对应于波特率为1 953 b/s的TH1的值为248,而与之对应的PC机的除数锁存器的值为59(3BH);当SMOD=1时,对应于波特率为10 417 b/s的TH1为253,而与之对应的PC机除数锁存器的值是11(0BH)。?

  6结语

  在串行异步通信中波特率的是一个至关重要的问题,由于单片机的波特率的计算值不符合标准的波特率,因此可以通过改变PC机除数锁存器的除数来与之相适应。?


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭