首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
单片机与PC机串行通信中波特率的确定
来源:本站整理  作者:佚名  2011-08-12 21:32:35



  4 利用Turbo C编写的PC机通信程序中波特率的设定

  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 PC机中非标准波特率的设定

  PC机中的标准波特率有时候不能完全兼容单片机的波特率,例如,单片机使用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] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:166,578.10000 毫秒