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

        这篇文章,我们对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产生。有关波特率生成的工作原理,我们将在以后的串行口实验中进行介绍,这里不做过多介绍。

发布了97 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/bhniunan/article/details/104401138