AT89S52之(定时器2)Timer2

摘要:
定时或计数功能可通过T2CON寄存器的C/T2位选择。捕获、自动重新加载(递增或递减计数)和波特率发生器。表1RCLK+TCLKCP/RL2TR2MODE000116位自过载01116位捕获1X1波特率发生器XX0在计数状态下关闭。需要两个机器周期(24个振荡周期)来识别1-0的跳跃。此外,T2EX引脚的跳转也会使T2CON寄存器中位1的EXF2值:

在博客园里已经发布了。。。这里在发一下。。哈哈!~

定时计数器2是一个16位定时/计数器,通过T2CON寄存器的C/T2位可以选择定时还是计数功能。定时器2 有3种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON 中的位进行选择,具体的选择方式见表1。定时器2有两个8为寄存器:TH2和TL2。在定时模式状态下,TL2寄存器每一个机器周期加1,。由于52单片机的每一个机器周期等于12的振荡周期,所以他的计数频率是振荡频率的1/12。

表1

RCLK+TCLK

CP/RL2

TR2

MODE

0

0

1

16位自重载

0

1

1

16位捕获

1

X

1

波特率发生器

X

X

0

在计数状态下,外部引脚由1-0的负跳变是,寄存器就加1。并且在这种情况下,每当一个机器周期的S5P2的时科,单片机就对外部引脚进行采样,如果在下一个周期里信号变为低电平,则计数器加1。在下一个周期的S3P1时刻,若检测到有跳变,则计数器计数加1。识别1-0的跳变需要两个机器周期(24个振荡周期),所以计数信号的最大的频率只能是振荡频率的1/24。为了确保采样频率能够被采样,被采用的电平必须保持一个机器周期不变。

1、      捕获模式

在捕获模式,寄存器T2CON的位EXEN2有两方式可供选择:

若EXEN2=0,定时器2为16位定时/计数器,当计数溢出是,T2CON中的TF2置1,并向CPU申请中断;

若EXEN2=1,定时器2出来拥有和上述一样的功能外,还有捕获功能:即在引脚T2EX有1-0跳变的时候,RCAP2H和RCAP2L分别捕获并保存TH2和TL2的当前值(即RCAP2H=TH2,RCAP2L=TL2),另外T2EX脚的跳变也会使T2CON寄存器里的位EXF2值1,和TF2一样向CPU申请中断。

2、      自重载模式(递增/递减计数器)

定时器2可以设置为递增/递减自动重载计数器,并通过DCEN(Down Counter Enable)位来控制其模式。见表2,一旦CPU复位,DCEN被清0,意味着定时器2默认是递增计数器,当DCEN置为1时,允许定时器2递增或递减计数,由T2EX的电平来控制器计数方向。

表1

T2MOD Address = 0C9H                                 Reset Value = XXXX XX00B

Not Bit Address

 

Bit

-

-

-

-

-

-

T2OE

DCEN

 

7

6

5

4

3

2

1

0

Symbol

Function

-

保留

T2OE

定时器2输出使能

DCEN

DCEN=1,允许定时器2递增或递减计数

AT89S52之(定时器2)Timer2第1张

图1   T2捕获原理图

 

       图2所示为定时器2自动递增模式(DCEN=0)原理图。在这种模式下由T2CON中的EXEN位选择。

       当EXEN=0;当计数器向上计数到0FFFFH是就会置位溢出标志位TF2,此时,寄存器RCAP2H和RCAP2L的值会自动装载到寄存器TH2和TL2中。寄存器RCAP2H和RCAP2L的值有软件预设。

       当EXEN=1;16位重载可由两个方式触发:计数溢出或T2EX引脚的负跳变。同时置位EXF2为1。在中断允许的条件下,TF2和EXTF2都可以触发中断。

AT89S52之(定时器2)Timer2第2张

图2   T2自重载模式(DCEN=0)原理图

       当DCEN为1时,允许定时器2递增计数或者递减计数,就如图2所示。在这种模式下,T2EX引脚控制计数的方向。

T2EX若为逻辑“1”,定时器2递增计数,直到0FFFFH是计数器溢出,置位TF2为1,同时溢出之后,寄存器RCAP2H和RCAP2L的值会自动装载到寄存器TH2和TL2中。

T2EX若为逻辑“0”,定时器2递减计数,当寄存器TH2和TL2的值分别和寄存器RCAP2H和RCAP2L的值相等时,计数器向下溢出,同时立即置位TF2,并把定时计数器赋值为0FFFFH。

//The EXF2 bit toggles wheneverTimer 2 overflows or underflows and can be used as a 17th bit of resolution. Inthis operating mode, EXF2 does not flag an interrupt.

// (这段话不好翻译)


AT89S52之(定时器2)Timer2第3张

图3

未完待续。。。

免责声明:文章转载自《AT89S52之(定时器2)Timer2》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Django登录与注销TensorFlow Python3.7环境下的源码编译(二)安装配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vscode-nvim

vsocde-nvim 使用vim会让人上瘾,同时它也将治好你的vim崇拜症。 ​ ——鲁迅 vscode-nvim是我现在使用vscode时必装的一个插件了,它比vscode-vim更加的强大,它不再仅仅是一个vim模拟器,而是真正的将nvim集成到了vscode中。 鉴于目前除开官方文档所提供的资料外,vsocde-nvim插件的使用在各大中文平台网站...

时间片轮询-应用程序架构

大致应用程序的架构有三种:1. 简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。 2. 时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。 3. 操作系统,此法应该是应用程序编写的最高境界。 下面就分别谈谈这三种方法的利弊和适应范围 1. 前后台顺序执行法 前后台程序一般是指没有...

Linux内核学习笔记八——定时器和时间管理

一 内核中的时间观念内核在硬件的帮助下计算和管理时间。硬件为内核提供一个系统定时器用以计算流逝的时间。系 统定时器以某种频率自行触发,产生时钟中断,进入内核时钟中断处理程序中进行处理。 墙上时间和系统运行时间根据时钟间隔来计算。 利用时间中断周期执行的工作: 更新系统运行时间; 更新实际时间; 在smp系统上,均衡调度程序中各处理器上运行队列; 检查当前进...

Linux高性能server编程——定时器

版权声明:本文为博主原创文章。未经博主允许不得转载。 https://blog.csdn.net/walkerkalr/article/details/36869913...

Tomcat系列(10)——Tomcat主要设计模式5种(外观,责任链,观察者,模板方法,命令模式)

核心部分 外观模式: RequestFacade应用门面模式(facade)来封装HttpServletRequest。 观察者模式: 事件监听机制,控制组件生命周期的 Lifecycle 、Servlet 实例的创建、Session 的管理、Container 管理等应用了观察者模式。相关的类有LifecycleListener, ContainerL...

Arduino 101/Genuino101使用-第2篇

1. Arduino 101编程只是在ARC的核心上进行,其具体架构为ARCv2EM。、 2. 而Quark核心,从目前可知的信息来看,其应该运行着名为Zephyr的RTOS 3.101并没有EEPROM存储单元,其提供的EEPROM库,实际上是在操纵其上的Flash空间。 4. 跑个定时器例程测试一下 1 #include "CurieTimerOne....