电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

通过51单片机定时器/计数器实现精确延时

来源:-- 作者:-- 浏览:1037

标签:

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

 

  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-直打开,从⑤赋值后开始计算。程序修改为:

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67