MCS-51单片机内部共有两个16位可编程定时器,计数器,即TO、Tl。既有定时功能,又有计数的功能。每个定时器都是由两个8位的特殊功能寄存器THi和TLi组成(i=0、1)。TMOD是TO和Tl的工作方式控制寄存器,TCON是TO和Tl的运行状态控制寄存器。在实际应用时,应首先根据需要对这些寄存器进行初始化,即设置TO和Tl的工作方式并对TO和Tl定时器装入初始值以得到精确的定时时间。TO和Tl的工作方式及运行状态是由TMOD和TCON两个特殊功能寄存器控制的,而TMOD和TCON是由用户所编的程序控制的。

定时器的核心是一个加l计数器,加l计数器的脉冲有两个来源:一个是系统时钟振荡器,另一个是外部脉冲,计数器对脉冲进行计数。当定时器/计数器用作定时器时是对机器周期进行计数,每经过一个机器周期计数器就加1,不断自加直到数满溢出,定时器的定时时间不仅与计数器初值有关,而且与系统的时钟频率有关。当定时器/计数器用作计数器时,计数器对来自输入引脚TO和Tl的外部脉冲计数。

MCS-51每个定时器有4种工作方式:方式0是13位计数结构,计数器由TLi的8位与THi的低5位构成,定时范围为(1—213)个机器周期;方式1是16位计数结构,定时范围为(1~216)个机器周期;方式2是8位计数结构,计数器由TLi的8位组成,当定时器溢时.THi的值能自动装入TLi中,并在此值基础上自动计数;在方式3下,也是8位的计数器,并且TO的各控制位和引脚归TLO使用,THO借用Tl的各控制位和引脚信号,Tl只能按不需要中断的方式0、1、2工作。通常用做串行通信的波特率发生器。

在实际应用中,定时器可以采用查询和中断方式,用查询的方式,程序执行的效率比较低,比较常用的是中断方式,使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。

下面我们看一个例子,需要延时为50ms,我们可以取定时器TO在工作方式1,计数初值为65536-50000=15536=3CBOH,用汇编编写中断服务程序如下:

从定时器溢出,发出中断要求,系统接受该中断要求,执行类似“LCALLXX”的动作,将正在执行的程序PC低位、高位压人堆栈,然后加载中断失量地址(0013H)到PC中,这一段过程要耗3个机器周期。在中断服务程序中把初值重新装入定时器并开启计数器①~⑥共占了10个机器周期,TLO初值应该赋值#OBDH。因为而此段位于0013H的程序超过8个字节会影响定时器1的中断入口(OOIBH),所以,要么0013H放一个中断跳转子程序,要么压缩语句。我们选用后者。因为在中断子程序中没有用累加器A,也没有运算操作,所以程序①、②、⑦、⑧可以省去。将程序③、⑥省去使计数器0-直打开,从⑤赋值后开始计算。程序修改为:

单片机定时器精准定时_通过51单片机定时器/计数器实现精确延时相关推荐

  1. 单片机定时器精准定时_单片机入门-C51语言采用定时器查询方法获取1秒精准定时...

    原标题:单片机入门-C51语言采用定时器查询方法获取1秒精准定时 视频如下: 51系列单片机含有专用的 定时器/计数器,定时器/计数器是一个二进制的加1寄存器,当启动后就开始从所设 定的计数初始值开始 ...

  2. 单片机定时器精准定时_单片机很好玩6,制作一个精确的“定时器”,为什么这么重要?...

    单片机常被称作 MCU,MCU 的全称是 Micro Control Unit,就是微型控制器的意思.顾名思义,单片机常被用于控制一些器件工作,因此物联网的终端,或者其他一些智能机器,都是离不开单片机 ...

  3. 单片机定时器精准定时_如何确保单片机精确定时控制有哪些编程方法详细说明...

    引言 MCS-51单片机的中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令.单中断系统中的中断响应时间为3-8个机器周期[1].无论是哪一种原因引起的误差,在精确定 ...

  4. 单片机定时器精准定时_用单片机C语言精确延时(定时)的方法

    最近在忙着单片机的项目,偶尔停下来小结了一下最近的收获,还是有不少可贵的收益的. 本人在闲暇的时候对单片机C语言下的各类延时程序做了下总结.由于单片机C语言下利用软件延时不容易做到精确的定时,所以很多 ...

  5. 单片机定时器精准定时_单片机定时器,如何追求极致的精度?

    1.晶振频率的误差 假设你用的是这种常用的无源晶振 它的误差±20PPM可以理解为百万分之20,12Mh晶振的标称的误差±240hz,频率范围在11.9976Mhz--12.00024Mhz范围.软件 ...

  6. 单片机多功能电子琴课设_基于51单片机的多功能电子琴设计.doc

    基于51单片机的多功能电子琴设计 基于51单片机的多功能电子琴的设计 摘要 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器.它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编 ...

  7. 推挽输出和开漏输出_关于51单片机IO口的输出模式结构

    单片机种类繁多今天主要谈谈51单片机,在stm32单片机中IO(GPIO)输出模式有很多种.如 模拟输入 .浮空输入.下拉输入.上拉输入.开漏输出.推挽输出等很多种,不同的输入输出有不同的功能,实现不 ...

  8. 单片机波特率不加倍c语言,51单片机硬件系统设计时,为什么用11.0592MHz的晶振而不用12MHz晶振的原因及串口波特率误...

    在设计51系列的单片机系统时,一般选用11.0592MHz的晶振而不选用12MHz的晶振,为什么?12M的晶振,振荡频率明显高于11.0592M的,按理说12MHz的晶振可以提高单片机的性能,那么我们 ...

  9. 单片机原理与实践学习记录之51单片机I/O口简单应用

    单片机原理与实践学习记录 第二课(更新时间:2021.9.3) 51单片机I/O口简单应用 C51中常用的头文件 ​ 通常有reg51.h,reg52.h,math.h, ctype.h, stdio ...

最新文章

  1. OpenCV矩阵运算
  2. 主成分分析、因子分析、聚类分析的比较与应用
  3. jstack可以定位到线程堆栈
  4. java从静态代理到动态代理的理解
  5. 安装windows时loading files结束就重启_Boot Camp安装windows 10
  6. Nginx HTTP之请求行解析函数ngx_http_parse_request_line
  7. python怎样显示表格数据匹配_Python根据表中每一行中的数据匹配txt文章中出现的次数,表格,每行,在,统计...
  8. Mesos + Marathon + Chronos + Docker环境安装
  9. 机器学习样本处理算法(二)详细特点描述
  10. 邮件中html格式转换,如何在宏中将邮件格式更改为html?
  11. 页面加载过程中触发的事件
  12. ATmega128单片机](熔丝修改后无法烧录程序情况)
  13. Java机器学习库(Java ML)(二、聚类)
  14. virtualBox报错 0x80004005
  15. 备战Java后端【Day6】
  16. 头歌MySQL数据库
  17. [C语言]PTA 念数字
  18. opengl 画椭圆_如何用彩铅画一朵牡丹?彩铅牡丹花的画法步骤,彩铅花卉画入门教程...
  19. 经济订货批量(EOQ)模型及有计划的延期交货_库存管理基础
  20. Obsidian安卓端app教程

热门文章

  1. 华为欧拉系统的网络问题
  2. 用ip地址连接服务器无响应,DNS服务器无响应如何解决
  3. android studio 的 Gradle build finished with 1 error(s) 问题
  4. 用nero将rmvb格式影片刻录成vcd光盘
  5. 九型人格之5号适合的职业(裴宇晶)
  6. 择校秘籍|保研去 北大软微 还是 上交计算机?
  7. stm32f302实现斩波控制步进电机_[转载]步进电机原理介绍与基于STM32的SPWM驱动步进电机,使用软件实现电机细分...
  8. dbSUPER:人和小鼠中的超级增强子数据库
  9. 行云管家V4.8版本正式发布:一键唤醒本地工具
  10. 校园跑腿系统前景怎么样?