【摘要】:在8051串行口的4种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。当时钟频率选用11.0592MHz时,极易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。
如前所述,在串行通信中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的4种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。各种方式的波特率如下:
方式0:波特率=fosc/12
方式2:波特率=2SMODfosc/64
方式1和方式3(定时器T1作为波特率发生器):波特率=2SMOD(定时器1溢出率)/32
T1溢出率=T1计数率/产生溢出所需的周期数
式中,T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。
定时器T1工作于方式0:溢出所需周期数=8192-X,X为初值。
定时器T1工作于方式1:溢出所需周期数=65536-X,X为初值。
定时器T1工作于方式2:溢出所需周期数=256-X,X为初值。(www.xing528.com)
因为方式2为自动重装入初值的8位定时/计数器模式,所以用它来做波特率发生器最恰当。
当时钟频率选用11.0592MHz时,极易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。方式1和方式3的常用波特率的设置见表2-13。
有了上述表格,在C语言中可以很方便地对串口进行初始化。如在11.0592MHz晶振下,设置串行口用9.6K的传输率进行传输,工作于工作方式3,用C语言可进行如下设定:
表2-13 数据传输率与晶振频率的关系
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。