首页 理论教育 T2工作方式及设计与实训

T2工作方式及设计与实训

时间:2023-11-16 理论教育 版权反馈
【摘要】:此时,T2CON中的EXEN2位控制T2捕捉动作的发生。T2的16位捕捉方式主要用于测试外部事件的发生时间,如可用于测试输入脉冲的频率、周期等,此时T2的初值一般取0,使T2循环地从0开始计数。图5-15 定时器T2常数自动装入模式结构图1)当CP/RL2=0时,T2工作于16位常数自动装入方式结构原理如图5-15所示。T2的16位常数自动装入方式的初值只需设定一次。在这种模式下,T2EX引脚控制着计数的方向。

T2工作方式及设计与实训

1 捕捉模式

若EXEN2=1,T2除实现上述定时/计数器的功能外,还可实现捕捉功能,其结构原理如图5-14所示。此时,T2CON中的EXEN2位控制T2捕捉动作的发生。也就是当在T2EX引脚(P1.1)上发生负跳变时,就会把TH2和TL2的内容锁入捕捉寄存器(RCAP2H和RCAP2L)中,并将T2CON中的中断标志EXF2置1,向CPU发出中断请求。

T2的16位捕捉方式主要用于测试外部事件的发生时间,如可用于测试输入脉冲的频率、周期等,此时T2的初值一般取0,使T2循环地从0开始计数。

注意:EXF2像TF2一样会引起中断(EXF2中断向量定时器T2溢出中断地址相同,为002BH,在T2中断服务程序中可以通过查询TF2和EXF2来确定引起中断的事件)。

978-7-111-54295-7-Chapter05-55.jpg

图5-14 定时器T2捕捉模式结构图

2 16位常数自动装入模式

当定时器T2工作于自动装入方式时,可通过978-7-111-54295-7-Chapter05-56.jpg配置为定时器或计数器,并且可编程控制向上或向下计数,计数方向通过特殊功能寄存器T2MOD的DCEN位来选择,DCEN置为0,定时器2默认为向上计数,当DCEN置位1时,则定时器T2通过T2EX引脚来确定向上计数还是向下计数。

978-7-111-54295-7-Chapter05-57.jpg

图5-15 定时器T2常数自动装入模式结构图

1)当CP/RL2=0时,T2工作于16位常数自动装入方式结构原理如图5-15所示。此时,T2CON中的EXEN2位控制T2常数自动装入动作的发生,定时器T2自动设置为向上计数。当EXEN2=0时,T2作为定时/计数器使用,当TR2=1时,T2从初值开始加1计数,定时器T2为向上计数至0FFFFH溢出,置位TF2激活中断,溢出时将打开控制初值装入的三态门,同时把RCAP2H和RCAP2L中存放的计数初值重新装入TH2和TL2中,使T2从该值开始重新计数,同时将TF2标志置1,向CPU发出中断请求。RCAP2H和RCAP2L中的初值在初始化时由软件编程预置。若EXEN2=1,T2在T2EX引脚(P1.1)上发生的负跳变或计数器加法溢出时,都可以将RCAP2H和RCAP2L中存放的计数初值重新装入TH2和TL2中,使T2从该值开始重新计数。此时,当T2EX引脚(P1.1)上出现负跳变,将外中断标志EXF2置1或计数器加法溢出时,将TF2置1均向CPU发出中断请求。如果中断允许,同样产生中断。

T2的16位常数自动装入方式的初值只需设定一次。在定时方式(978-7-111-54295-7-Chapter05-58.jpg=0)时,若设定初值为N,则定时时间精确地等于(216-N)×12/fOSC

2)当DCEN=1时,如图5-15所示,定时器T2向上或向下计数。在这种模式下,T2EX引脚控制着计数的方向。

T2EX上的一个逻辑1使得T2递增计数,计到0FFFFH溢出,并置位TF2,若中断允许,还将产生中断。定时器的溢出也使得RCAP2H和RCAP2L中的16位值重新加载到TH2和TL2中。T2EX上的一个逻辑0使得T2递减计数,当TH2和TL2计数到等于RCAP2H和RCAP2L中的值时,计数器下溢,置位TF2,并将0FFFFH值加载到TH2和TL2中。T2上溢或下溢,外部中断标志位EXF2被锁死。在这种工作模式下,EXF2不能触发中断。

3 波特率发生器方式(www.xing528.com)

当T2CON中的控制位RCLK=1或TCLK=1时,T2作为串行接口方式1和方式3的波特率发生器,这时的逻辑结构如图5-16所示。

T2的波特率发生器方式和内部控制的16位常数自动装入方式相类似。不同的是当978-7-111-54295-7-Chapter05-59.jpg=0时,以振荡器的二分频信号作为T2的计数脉冲,当计数溢出时,将RCAP2H和RCAP2L中存放的计数初值重新装入TH2和TL2中,使T2从初值开始重新计数,但并不置TF2为1,也不向CPU发中断请求,因此可以不必禁止T2中断。

978-7-111-54295-7-Chapter05-60.jpg

RCAP2H和RCAP2L中的常数由软件设定为N后,T2的溢出率是严格不变的,其值为T2的溢出率=(216-N)×振荡器频率/2

因而使串行接口的方式1和方式3的波特率非常稳定,其值为方式1和方式3的波特率=(216-N)×振荡器频率/32

若EXEN2=1,当T2EX引脚(P1.1)上发生负跳变时,也不会将RCAP2H和RCAP2L中存放的计数初值重新装入TH2和TL2中,而仅仅置位EXF2,向CPU请求中断,因此T2EX可以作为一个外部中断源使用。由于在计数过程中(TR2=1),不能对TH2、TL2、RCAP2H和RCAP2L进行写操作,因此初始化时,应对它们均设置初值后,再将TR2置1,启动计数。如果EXEN2(T2外部使能标志)被置位,T2EX引脚上1到0的负跳变,则会置位EXF2(T2外部中断标志位),但不会使(RCAP2H,RCAP2L)重装载到(TH2,TL2)中。即使T2作为串行接口波特率发生器,不需要禁止中断,T2EX可以作为一个附加的外部中断源使用。

4 可编程时钟输出

可设定T2通过P1.0引脚输出时钟,P1.0引脚除作为通用I/O外,还有两个功能可供选用:用于T2的外部计数输入和T2时钟信号输出(占空比为50%)。当设置T2为时钟发生器时,即C/T2为0,T2OE(T2MOD.1)为1,必须由TR2启动或停止定时器。

时钟输出频率取决于晶振频率和定时器T2捕捉寄存器(RCAP2H,RCAP2L)的重新装载值,如下所示:

978-7-111-54295-7-Chapter05-61.jpg

图5-16 定时器T2的波特率发生器的结构

其中,n=2(6时钟/机器周期),n=4(12时钟/机器周期)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈