老古开发网首页
导航:老古开发网首页文章索引索引第2895页文章分类单片机第48页→[为什么51系列单片机常用11.0592MHz的晶振设计]
| -文章搜索 - 最新文章 - |

第3057篇:为什么51系列单片机常用11.0592MHz的晶振设计

发布时间:2006年10月15日 点击次数:3165
来源:   作者:
 
因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
当定时器1被用作波特率发生器时,波特率工作于方式1和方式3是由定时器1的溢出率和SMOD的值(PCON.7------双倍速波特率)决定:

  方式1、3波特率= (定时器1的溢出率)

  特殊时,定时器被设在自动重袋模式(模式2,TMOD的高四位为0100B),其为:

  方式1、 3波特率=

  11.0592MHZ晶振的一些典型波特率如下:
波特率
SMOD
TH1

19200
1
0FDH

9600
0
0FDH

4800
0
0FAH

2400
0
0F4H

1200
0
0E8H

300
0
0A0H



  更换一种计算方式,它将以修改公式达到我们需求的波特率来计算出晶振。

  最小晶振频率=波特率x 384 x 2 SMOD

  这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率。

  例如:波特率为19.2KH2的最小晶振频率:
      3.6864=19200x384x2(波特率为19.2K的SMOD为1 )
      11.0592=3.6864x3
      其中TH1是由倍乘数(3)确定
      TH1=256-3=253=0FDH

  用来确定定时器的重装值,公式也可改为倍乘数的因子:

  晶振频率=波特率x(256-TH1)x384x2 SMOD

  这是波特率为19.24K的晶振频率。

  以上的例子可知,被乘数(3)是用来确定TH1:

  TH1=256-3=253=0FDH
  19.2K波特率的晶振为 11.0592=19200x(256-0FDH)x384x2(19.2 k的SMOD为1)

  其它值也会得出好的结果,但是11.0592MHZ是较高的晶振频率,也允许高波特率

欢迎进入老古论坛进行讨论
[单片机] 相关文章:
编写适合自己需要的printf()函数
简介:
对于嵌入式软件的开发人员而言,“printf调试(printf-debugging)”这个术语描述了将调试字符串从嵌入式目标空闲的串口压出,并在运行于宿主工作站的终端模拟器上显示结果的常见方法。 出于这个目的,许多程序员更喜欢使用有名的printf() C语言库函数,因为它在将文本输出和数据组合成单个函数调用上具有灵活性。但是,不在嵌入式系统中使用printf()无外乎两个常见的原因:不是因为printf()太慢了,就是因为它太大了。 事实上,很容易就会碰到这些局限性。如果你......

C程序优化
在C51中变量的空间分配几个方法
MCU的供电和去藕
自己制做显卡温控报警器装置
 
下一个:[单片机]C++声明
简介:
曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。需要强调一下的是,复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。注意:为了保证能够在同一行上显示代码和相关注释,本文最好在至少1024x7......

上一个:[嵌入式系统]uCOS-Ⅱ C51移植笔记

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:47毫秒