热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

51单片机(十七)——定时器2寄存器介绍及功能描述

这篇文章,我们对51单片机的定时器2的寄存器和功能进行介绍。1定时器2控制寄存器T2CON定时器2是一个16位定时器计数器,通过设置特殊功能寄存器T2

        这篇文章,我们对51单片机的定时器2的寄存器和功能进行介绍。


1 定时器2控制寄存器T2CON

        定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计数器。定时器2有3中模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON进行设置。T2CON寄存器的字节地址为C8H,单片机复位时T2CON全部被清0,T2CON的定义如下表所示。

定时器2控制寄存器T2CON


位序号

D7

D6

D5

D4

D3

D2

D1

D0

位符号

TF2

EXF2

RCLK

TCLK

EXEN2

TR2

C/T2

CP/RL2

TF2—定时器2溢出标志位。

定时器2溢出时置位,必须由软件清0。当RCLK=1或TCLK=1时,TF2将不会置位。

EXF2—定时器2外部标志。

当EXEN2=1且T2EX(单片机的P1.1口)的负跳变产生捕捉或重装时,EXF2置位。定时器2中断使能时,EXF2=1将使CPU进入定时器2的中断服务程序。EXF2必须用软件清0。在递增/递减计数器模式(DCEN=1)中,EXF2不会引起中断。

RCLK—接收时钟标志。

RCLK=1时,定时器2的溢出脉冲作为串行口模式1或模式3的接收时钟;RCLK=0时,定时器1的溢出脉冲作为接收时钟。

TCLK—发送时钟标志。

TCLK=1时,定时器2的溢出脉冲作为串行口模式1或模式3的发送时钟;TCLK=0时,定时器1的溢出脉冲作为发送时钟。

EXEN2—定时器2外部使能标志。

当EXEN2=1且定时器2未用作串行口时钟时,允许T2EX引脚的负跳变产生捕获或重装;当EXEN2=0时,T2EX引脚的负跳变对定时器2无效。

        这里我们要对捕获进行一下解释,通俗地讲,捕获就是捕捉某一瞬间的值,通常它用来测量外部某个脉冲的宽度或周期,使用捕获功能可以准确地测量出脉冲的宽度或周期。捕获的工作原理是:单片机内部有两组寄存器,其中一组的内部数值是按固定机器周期递增或递减的,通常这组寄存器就是单片机内部定时器的计数器寄存器(TLn,THn),当与捕获功能相关的外部某引脚有一个负跳变时,捕获便会立即将此时第一组寄存器中的数值准确地捕获,并且存入另一组寄存器中,这组寄存器通常被称为“陷阱寄存器”(RCAPnL,RCAPnH),同时向CPU申请中断,软件记录两次捕获之间的数据后,便可以准确地计算出该脉冲的周期。

TR2—定时器2启动/停止控制位。

这一位置1时启动定时器2,清0则停止定时器2。

C/T2—T2的定时器/计数器选择位。

   C/T2 =1时,设置为外部事件计数器(下降沿触发);C/T2 =0时,设置为内部定时器。

CP/RL2—捕获/重装标志。

CP/RL2=1且EXEN2=1时,T2EX引脚的负跳变产生捕获。

CP/RL2=0且EXEN2=0时,定时器2的溢出或T2EX引脚的负跳变都可以使定时器自动重装。当RCLK=1或TCLK=1时,该位无效,且定时器强制为溢出时自动重装。

这个寄存器对定时器/计数器2的模式设置如下表所示。

定时器/计数器2的三种工作模式


RCLK+TCLK

CP/RL2

TR2

模式

0

0

1

16位自动重装

0

1

1

16位捕获

1

×

1

波特率发生器

×

×

0

关闭


2 定时器2模式控制寄存器T2MOD

        这个寄存器用来设定定时器2自动重装模式的递增或递减模式,字节地址为C9H,该寄存器不可位寻址。单片机复位时T2MOD全部被清0,这个寄存器的定义如下表所示。

定时器2模式控制寄存器T2MOD


位序号

D7

D6

D5

D4

D3

D2

D1

D0

位符号

--

--

--

--

--

--

T2OE

DCEN

T2OE—定时器2输出使能位。

DCEN—向下计数使能位。


3 定时器2的三种模式

1)捕获模式

        在捕获模式中,通过T2CON中的EXEN2设置2个选项。如果EXEN2=0时,定时器2作为一个16位定时器或计数器(由T2CON中的C/T2位选择),溢出时置位TF2(定时器2 溢出标志位)。该位可用于产生中断(通过使能IE寄存器中的定时器2中断使能位)。如果EXEN2=l,与以上描述相同,但增加了一个特性,即外部输入T2EX引脚由l变0时,将定时器2中TL2和TH2的当前值各自捕获到RCAP2L和RCAP2H中。另外,T2EX引脚的负跳变使得T2CON中的EXF2置位,EXF2也像TF2一样能够产生中断(其向量与定时器2溢出中断地址相同,定时器2中断服务程序通过TF2和EXF2来确定引起中断的事件)。捕获模式如下图所示。在该模式中,TL2和TH2无重新装载值,甚至当T2EX产生捕获事件时,计数器仍为以T2脚的负跳变或震荡频率的1/12(12时钟模式)或1/6(6时钟模式)计数。

2)自动重装模式(递增/递减计数器)

        16位自动重装模式中,定时器2可以通过C/T2位配置为定时器/计数器,编程控制递增/递减计数。计数方向有T2MOD寄存器中的DCEN位确定。当DCEN=0时,定时器2默认为向上计数。当DCEN=1时,定时器2可通过T2EX引脚确定递增或递减计数。下图为DCEN=0时,定时器2自动递增计数的原理图。在该模式下,通过设置EXEN2位进行选择。如果EXEN2=0,定时器2递增到0FFFFH,并在溢出后将TF2置位,然后将RCAP2L和RCAP2H中的16位值作为重新装载的值装入定时器2。RCAP2L和RCAP2H的值是通过软件预设的。如果EXEN2=1,16位重新装载可以通过溢出或T2EX引脚的负跳变实现。此负跳变同时将EXF2置位。如果定时器2的中断被使能,则当TF2或EXF2置1时产生中断。

        当DCEN=1时,定时器2可以递增或递减计数。这种模式的工作原理如下图所示。此模式下,允许T2EX引脚控制计数的方向。当T2EX引脚引脚置1时,定时器2递增计数,计数到0FFFFH后溢出并置位TF2,还将产生中断(如果中断被使能)。定时器2的溢出将使RCAP2L和RCAP2H中的16位值作为重新装载值放入TL2和TH2。当T2EX置0时,定时器2递减计数。当TL2和TH2计数到等于RCAP2L和RCAP2H时,定时器2将TF2置位并产生中断,同时将0FFFFH载入到TL2和TH2。

2)波特率发生器模式

          寄存器T2CON的TCLK和(或)RCLK位允许从定时器1或定时器2获得串行口发送和接收的波特率。当TCLK=0时,定时器1作为串行口发送波特率发生器;当TCLK=1时,定时器2作为串行口发送波特率发生器。RCLK对串行口接收波特率的设置有同样的作用。通过这两位,串行口能得到不同的接收和发送的波特率,一个通过定时器1产生,另一个通过定时器2产生。有关波特率生成的工作原理,我们将在以后的串行口实验中进行介绍,这里不做过多介绍。

 


推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文将详细介绍如何在Linux操作系统中执行PHP脚本,包括环境配置、命令使用及验证方法。对于需要在Linux环境下开发或部署PHP应用的用户来说,这是一篇非常实用的文章。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • PyCharm中配置Pylint静态代码分析工具
    本文详细介绍如何在PyCharm中配置和使用Pylint,帮助开发者进行静态代码检查,确保代码符合PEP8规范,提高代码质量。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
author-avatar
成都迅捷代驾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有