单片机从机的波特率自适应设置 一、硬件原理图 说明:DB9接到 PC机的串口上
晶体震荡器可以用诸如 11
0592MHz,14
7456MHz,对本文的介绍没有影响等等
这里,单片机为机为,PC机为主机
二、自动设置理论原理 AT89C52 的串行口有 4 种工作方式,方式 1、3 最常用
T2 的波特率发生方式类似于常数自动重装入方式
用 X16 代替(RCAP2H,RCAP2L),则串行口方式 1、3 的波特率公式为: 波特率=fosc/[32 x (65536-X16 )]
… … … … … … … …
… (A) 由(A)可得,单片机每接收 1bit 需要的时间为 接受 1bit 的时间=[32 x (65536- X16 )]/ fosc… … … … … … … … (B) 单片机AT89C52 为 12 分频指令系统,所以其机器周期为: 机器周期= 12/fosc… … … … … … … … … … … … … … …
… … (C ) 我们可以很容易得到单片机接收 1bit 所需要的机器周期,假定为 NUM,则由(B),(C)得 NUM x 12/ fosc=[32 x (65536- X16 )]/ fosc… … … … … … … … … …
(D) 由(D)可得,波特率定时时间常数为: X16=NUM x 3/8… … … … … … … … … … … …
… … … … … … … …
(E) 由此,关键需要得到单片机接受1 bit 的机器周期数 NUM
三、自动检测主机信息的方法 不失一般性,假定串行通讯的字符协议为 1起始位,8数据位,无奇偶校验位,1停止位,如下(图 2)所示, 由定时器2工作原理(图3)知道,C/T2=0,TR2=0,则其加1计数,其计数速率为fosc/12,每加1