原文:http://blog.csdn.net/mcgrady_tracy/article/details/18665733

----------------------------------------------------------------------

在模式0和模式2下,串口波特率固定,模式0为Fosc/12。模式2为Fosc/32或Fosc/64,具体由PCON寄存器的SMOD位决定。

在模式1和模式3下,波特率是一个可变值,波特率可以由定时器1产生(8052可以由定时2产生),那么波特率到底为多少呢?波特率由定时器1的溢出率来决定:

Baud Rate = (2SMOD/32)*(Timer 1 Overflow Rate)

注意:2SMOD这里的SMOD是指数,SMOD为波特率双倍波特率位,该位在PCON寄存器中。

当使用timer 1作为波特率产生器时,通常需要将timer 1配置成8位自动重装的工作模式下,同时还要禁止timer

1中断,那么timer

1的溢出率是怎样计算的呢?溢出率即溢出的频率,假设晶振频率为12MHz,TH1值为0xFE,则只需要两个时钟脉冲就会溢出,溢出的周期为2us,那么溢出的频率就为500KHz。根据定时器一节,定时时间有如下计算公式:

定时时间=(最大计数值-计数器初值)*机器周期=(最大计数值-计数器初值)*(12/晶振频率(Hz))(s)=(256-TH1)*(12/OSC_FREQ(Hz))(s)。

那么溢出频率自然就为:

OSC_FREQ(Hz)/((256-TH1)*12)。

所以最后推到出波特率为:

(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))。

波特率的计算公式有了,那自然就可以根据波特率推导出TH1的初值了:

BAUD_RATE=(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))

32*12*(256-TH1)=(2SMOD*OSC_FREQ(Hz))/BAUD_RATE

256-TH1=(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)

TH1=256-(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)

假设晶振频率为11.0592MHz,波特率为9600,SMOD=0,TH1初值应该为多少呢?根据上面公式可以计算得TH1=256-11059200/(9600*32*12)=0xFD。

请描述定时器初值的计算方式_51波特率发生器定时器初值计算方法[转载]相关推荐

  1. 请描述定时器初值的计算方式_51单片机定时器初值计算器

    51单片机定时初值计算软件是一款比较实用的单片机定时器初值计算软件,可以精确的计算定时器的时间常数,给出数据即可快速计算出初值,还可以设置定时器方式晶振频率定时时长.有需要的朋友可以下载! 10MS定 ...

  2. 请描述定时器初值的计算方式_51单片机定时器初值计算方法详解

    在学习单片机的时候,我们发现很多功能都是通过中断来实现的.之前也举过烧水的例子来阐述中断,今天就讲解一下定时器赋初值的方法.8位的定时器最大可计数2的8次方为256,16位的定时器最大可计数2的16次 ...

  3. [css] 请描述css的权重计算规则

    [css] 请描述css的权重计算规则 权重值计算 选择器 案例 权重值 !important !important Infinity 内联样式 style="-" 1000 ID ...

  4. 请描述定时器初值的计算方式_单片机C语言编程中定时器初值计算的两种方法...

    单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法. 第1种方法: #define FOSC 11059200L //晶振的频率 #define TIMS (655 ...

  5. 定时器T0赋初值的计算方式

    定时中断初值计算方法是: 1.确定定时时间化为微妙t. 2.晶振频率以MHZ为单位f. 3.计算初值:s=65536-tf/12 比如16MHZ晶振,定时1毫秒. t=11000=1000us f=1 ...

  6. 51单片机之定时器/计数器应用实例(方式0、1、2、3)

    硬件:STC89C52RC 开发工具:Keil uVision4 对于刚接触单片机的同学来说可能会对定时器/计数器的应用很蒙圈,特别是初值的计算和各种定时方式的选择.下面希望能给你带来一个清晰的思路. ...

  7. 波特率与定时器初值关系

    首先,说一下啊波特率与定时器初值关系. 波特率:即单片机或者计算机在串口通信时的速率用波特率,它定义为每秒传输二进制代码的位数. 1波特率=1位/秒 串行口有4种工作方式,其中方式0和方式2的波特率是 ...

  8. stc15f2k60f2单片机定时器_STC15F2系列单片机UART1使用定时器1做波特率发生器

    #include #include "main.h" #include "intrins.h" //使用T2定时器2 ,控制串口1 波特率 #define  F ...

  9. 启动定时器t0的工作指令是_80c51单片机定时器t0工作于方式1定时时间1ms当晶振为6mhz时求计数初值为多少...

    下面一段文字是对8051单片机定时器初值的计算描述,希望对你有所帮助,对于你的提问,根据下面文字的说明,可以得到初值为:FE0CH(65536-500) 定时器/计数器可用软件随时随地起动和关闭,起动 ...

最新文章

  1. 第九代小冰惊喜登场,多端融合且琴棋书画样样精通
  2. 四川大学计算机学院录取,四川大学计算机学院2018年硕士研究生招生拟录取名单及成绩公示...
  3. Grove——.NET中的ORM实现
  4. Android调用相机拍摄照片并显示到 ImageView控件中
  5. Debian 8开启sftp服务
  6. Oracle入门(十四C)之转换函数
  7. nts包如何下周 php_windows下PHP7安装方法(ts版和nts版)
  8. Effective Java~9. try-with-resource 优先于 try-catch
  9. 莫桑比克wcdma频段_开放医疗记录社区支持莫桑比克的新系统
  10. 【学习随笔】iquery初涉
  11. 校园课程 ·学习笔记 ·导航目录
  12. C++ 文字常量与常变量
  13. 【Xamarin开发 Android 系列 2】VS2015跨平台开发的几种方式
  14. linux中源码安装node
  15. git命令超实用集齐
  16. [No0000FF]鸡蛋煮熟了蛋黄为什么发黑?
  17. 项目长期运维中产生的一些问题
  18. VS2015产品激活密钥
  19. html5总结2000字,建筑识图实训总结2000字6篇范文
  20. html 鼠标右击事件,鼠标右击事件(练习)

热门文章

  1. SATA3.0中FIS的八种类型
  2. leecode-C语言实现-7. 整数反转
  3. 1.1 n阶行列式子的定义
  4. 【Leetcode刷题Python】生词本单词整理
  5. “冰箱强行播广告关不了”上热搜,网友:买了块广告牌回家
  6. 1278:【例9.22】复制书稿(book)
  7. 学习Oracle的三种境界
  8. 【设计模式】之外观(Facade)模式
  9. redis-setnx-实现原理
  10. “蚁景杯”WUSTCTF2021新生赛writeup