1.引言:

     在串行通信中,收发双方发送或接收的数据速率要有一定的约定,我们通过软件对MCS-51串行口编程可以约定四种工作方式。其中,方式0和方式2的波特率时固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。串行口的四种工作方式对应这三种波特率,由于输入的移位时钟的来源不同,所以各种方式的波特率的计算公式也不同。

2.各种方式的波特率介绍

  • 工作方式0
    方式0时,移位时钟脉冲由S6(即第6个状态周期,第12个节拍)给出,即每个机器周期产生一个移位时钟,发送或接收一位数据。所以,波特率为振荡频率的十二分之一,并不受 PCON寄存器中SMOD的影响,即:
    方式0的波特率=fosc/12,fosc是系统晶振的震荡频率
  • 工作方式2
    工作方式2波特率的产生与工作方式0不同,控制接收与发送的移位时钟由振荡频率fosc的第二节拍P2(即fosc/2)给出,所以工作方式2的波特率取决于PCON中SMOD位的值。当SMOD=0时,波特率为fosc的六十四分之一,若SMOD=1,则波特率为fosc的三十二分之一,即:方式二的波特率=[(2^SMOD)/64]*fosc
  • 工作方式1和工作方式3
    方式1和方式3的移位时钟脉冲由定时器T1的溢出率决定,故波特宰由定时器T1的溢出率与SMOD值同时决定,即:方式1和方式3的波特率=[(2*SMOD)/32]*T1溢出率。其中,溢出率取决于计数速率和定时器的预置值。计数速率与TMOD寄存器中C/T的状态有关。当C/T=0时,计数速率=fosc/2;当C/T=1时,计数速率取决于外部输入时钟频率。
    当定时器T1作波特率发生器使用时,通常选用可自动装入初值模式(工作方式2),在工作方式2中,TL1作为计数用,而自动装入的初值放在TH1中,设计数初值为x,则每过“256~x”个机器周期,定时器T1就会产生一次溢出。为了避免因溢出而引起中断,此时应禁止T1中断。这时,溢出周期为:溢出周期=(12/fosc)(256-x)*,溢出率是溢出周期的倒数,所以
    工作方式1和工作方式3的波特率=[(2*SMOD)/32][fosc/(12*(256-x))]。此时定时器1的初值*x=256-[fosc(SMOD+1)/(384*波特率)]*
    系统晶振频率选为11.0592MHZ就是为了使初值为整数,从而产生精确的波特率。
    如果串行通信选用很低的波特率,可将定时器Tl置于工作方式0或工作方式1,但在这种情况下,T1溢出时,需用中断服务程序重装初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的办法加以调整。
    常用波特率表:

51单片机定时器和波特率相关推荐

  1. 51单片机之串口波特率配置

    51单片机之串口波特率计算 方式0的波特率配置 方式2的波特率配置 方式1和3的波特率配置 232串口模式,共有4钟方式,其中方式0.方式2的波特率是固定的.方式1.方式3的是可变波特率,这两个是用T ...

  2. 51单片机定时器及其应用(1)(时钟功能)

    51单片机定时器及其应用(1)(时钟功能)   STC89C51单片机有2个定时器,叫做定时器0和定时器1,可以用作普通定时器,计数器.普通定时器可以用来进行中断定时,波特率发生等,计数器可以用来对脉 ...

  3. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  4. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

  5. 51单片机定时器(T0/T1)的使用与配置流程

    第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...

  6. 51单片机定时器的查询和进入中断处理

    51单片机定时器可用两种方式处理:查询和进入中断处理. 1.查询方式 void Init_T0 (void) 定时器初始化 { TMOD = 0x01;//计时器模式 TH0 = (65535-650 ...

  7. 51单片机定时器秒计数时钟+Proteus仿真

    51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...

  8. 51单片机定时器初值计算以及初值计算软件

    51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...

  9. 51单片机定时器/计数器(定时器中断)

    51单片机定时器/计数器(中断系统:定时器中断) 实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1.51单片机定时器原理 定时器实质上就是一个加1 ...

最新文章

  1. 关于Facebook iOS UI 工具ComponentKit简介
  2. JAVA RPC:从上手到爱不释手
  3. Linux安装程序Anaconda分析
  4. Django-Migration admin.0001_initial is applied before its dependency accounts.0001_initial on....
  5. c语言编译器内部错误,C++致命错误C1001:编译器中发生内部错误
  6. 数据结构与算法笔记(十六)—— 二叉搜索树
  7. 蓝桥杯2015初赛-方程整数解-枚举
  8. (1)定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move() 这两个方法分别表示武器的攻击方式和移动方式。 (2)定义3个类:Tank,Fl
  9. MySQL数据库应用形考_2020国开中优教育《MySQL数据库应用》形考任务题库
  10. 点阵字体显示系列之三:使用ncurses显示汉字
  11. const 修饰的对象属性可以修改,但是修饰的常量就不可以修改
  12. [另类应用]让SQL Profiler拦不到你的SQL
  13. C语言视频教程-谭浩强版-小甲鱼主讲—P2
  14. trnsys and matlab 联合仿真常见错误解决方案
  15. excel表格怎么关闭函数计算机,excel表格的数据如何去掉公式-如何取消Excel表格里面的函数公式...
  16. 中山大学计算机学院转专业,广东大一新生想转专业原来有窍门,满足这些成绩和技能很重要!...
  17. 【Unity项目优化宝典】Unity3D手游开发客户端开发经验总结
  18. win7网上邻居无计算机一栏,Win7在网上邻居上看不到别的电脑怎么办?-电脑自学网...
  19. 【rmzt:进击的巨人三笠帅气主题】
  20. Yolov5的配置+训练(超级详细!!!)

热门文章

  1. 锁相环的组成和原理及应用
  2. 使用vue2实现打印在线word文件,文件流形式打印在线word,预览打印
  3. 《离散数学导学》精炼:第4,5章(集合论,布尔代数)
  4. 信息学奥赛一本通 1278:【例9.22】复制书稿(book) | 洛谷 P1281 书的复制
  5. Kettle 3.2 连接 SQL Server 2008
  6. 用ffmpeg将视频转成gif动图
  7. esp8266获取网络时间
  8. Redis分布式锁/Redis的setnx命令如何设置key的失效时间(同时操作setnx和expire)
  9. Ristretto—SqueezeNet示例详解
  10. android 布局 字体大小,移动端页面布局及字体大小该如何设置