标题: 求助这个单片机函数里T0重载值是如何计算的? [打印本页]

作者: q977165    时间: 2019-10-23 22:05
标题: 求助这个单片机函数里T0重载值是如何计算的?
我算完是baud*(11059200/12),不太明白这里的TL0是如何计算的,还有对baud这个值起到的作用不太了解
  1. void ConfigUART(unsigned int baud)

  2. {

  3.     TMOD &= 0xF0;   //清零T0的控制位

  4.     TMOD |= 0x02;   //配置T0为模式2

  5.     TH0 = 256 - (11059200/12)/baud;  //计算T0重载值

  6. }
复制代码

作者: csmyldl    时间: 2019-10-23 22:33
是根据定时计数器的溢出率来计算的
作者: csmyldl    时间: 2019-10-24 00:11
一般51单片机是用T1方式2作为波特率,其波特率计算是通过T1的溢出率来进行计算的,
溢出时间=(256-重装值)*机器周期=(256-重装值)*12/晶振频率
baud=1/溢出时间=晶振频率/(256-重装值)/12
从而得
256-重装值=晶振频率/12/baud
重装值=256-晶振频率/12/baud
作者: 噗噗噗p    时间: 2019-10-24 00:47
计时器为方式2时的 波特率=晶振的频率/(12*(256-初值))
作者: cphnkj188    时间: 2019-10-24 08:27
单片机芯片手册里有详细讲解,建议楼主读一下
作者: yzwzfyz    时间: 2019-10-24 21:05
关键点:
串行通讯的时钟来源于何处?一定要整明白!这个时钟的频率你关心一下。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1