1.前言

这里将介绍另一款定时器TMR2模块,TMR2与前面介绍的TMR0和TMR1相比,最大的差别是只能工作于定时模式,因此称它为“定时器TMR2”。 

2.TMR2的特性

TMR2为8位宽,附带二个4位宽的分频器:一个“预分频器”和一个“后分频器”,一个可编程的8位周期寄存器PR2。其主要用途:
1. 可以用作时间定时器,但是不能作为计数器;
2. 可以为同步串行端口MSSP模块提供波特率时钟;
3. 可以与CCP模块配合使用,实现脉宽调制PWM功能。
TMR2的核心是一个可以由软件读/写的8位宽的计数器,它也是按递增计数,从某一初值(缺省为0)开始递增,直到与周期寄存器PR2中内容匹配之后,在下一次递增时则返回到00H,并且会产生匹配信号,该匹配信号将作为“后分频器”的计数脉冲。
只有在后分频器产生溢出时,才会将溢出中断标志位TMR2IF(PIR1的bit1)置1。如果此时相关的中断使能位都置位,则会引起CPU的中断响应。通过对中断使能位TMR2IE的置位或复位,即可允许或禁止CPU响应TMR2产生的中断请求。
需要注意的是:
1. TMR2和RAM空间统一编址,地址为11H; 
2. 可用软件方式直接读/写TMR2的内容;
3. 有一个4位的预分频器和一个4位的后分频器;
4. 有一个8位周期寄存器;
5. 累加计数的触发信号只能选择内部系统时钟

3. TMR2相关的寄存器

与TMR2有关的寄存器共有6个,如下表所示。这6个寄存器中的前3个寄存器的功能可以查看“中断系统”。在此介绍TMR2控制寄存器T2CON。 

TMR2控制寄存器T2CON是一个只用到低7位的可读/写寄存器,最高位未用,其余各位的含义如下:
1. TOUT-PS3~TOUT-PS0:TMR2后分频器分频比选择位,如下表所列:
2. TMR2-ON:TMR2使能控制位。1=启用TMR2;0=关闭TMR2,可以降低功耗。 
3. T2CK-PS1~T2CK-PS0:预分频器分频比选择位,如下表所列:

4. TMR2的电路结构

TMR2的内部结构,如下图所示,包含5个组成部分。下面分析各个部分的功能和组成关系。

核心部分就是一个8位宽的累加计数器TMR2。其复位值是00H,也可以是在00H~FFH范围内由用户设定的一个起始值。 
4位宽的预分频器,对于进入TMR2的时钟信号进行预先分频,允许选择3种不同的分频比(1:1、1:4或1:16)。
注意:在对TMR2或控制寄存器进行写操作时,都可以使预分频器清0;在用任何方式复位时,都会对预分频器清0。

周期寄存器PR2也是一个8位可读/写寄存器。用来预置一个作为TMR2一次计数过程结束的周期值。芯片复位后PR2寄存器被自动设置为全1(FFH)。
比较器是一个8位宽的按位比较逻辑电路,只有当参加比较的两组数据完全相同之后,下一次递增时,“匹配”输出端才会送出高电平,其他情况下该输出端均保持低电平。
4位宽的后分频器,对于比较器的输出信号进行后续分频,允许连续选择16种分频比,其输出信号频率是输入信号频率的1/N (N=1~16) 。
TMR2的工作是可控的,所以还包含一个控制门G1。只有当TMR2使能位TMR2ON置1,系统时钟才能通过G1,TMR2也才能进入活动状态。 

5.TMR2的工作原理

TMR2只有一种工作方式:定时器方式,其触发钟信号也只能从内部系统时钟4分频后得到。

5.1 禁止TMR2工作

TMR2也比TMR0多了一种选择,即可以被用户程序关闭而节电,此点类似于TMR1。具体方法是将TMR2使能控制位TMR2ON清0。此时与门G1的一只引脚被低电平封锁,其输出端均保持低电平;因此使得累加计数器TMR2不能活动。

5.2 定时工作方式

TMR2只有定时工作模式,该模式可以被用来实现一般的延时或定时。但是,TMR2的主要目的并不是把它用作普通的定时器,而是为CCP模块或MSSP模块提供周期可调的时基信号

用作周期可调的时基发生器
当TMR2被用作周期可调的时基发生器时,可以为CCP模块或MSSP模块提供周期可调的时基信号。
 这时,应该将中断使能位TMR2IE清0,即屏蔽TMR2的中断功能,相当于把后分频器的作用也屏蔽了;通过对周期寄存器PR2设置不同的值,以及给预分频器设定不同的分频比,来灵活调整TMR2输出端的信号周期TTMR2 。该周期的计算式为:
                                                 TTMR2=(4/fosc)*N1*(PR2+1)
其中:fosc为系统时钟频率;N1为预分频器的分频比(取1、4或16);PR2为周期寄存器预赋值;PR2+1是因为在TMR2与PR2匹配后的下一次增量时TMR2才回00H。
用作延迟时间可调周期性定时器
把TMR2作为延迟时间可调的周期性定时器,会比TMR0的定时方式更加节省软件开销。
TMR2不必像TMR0那样,每次溢出后,都要给寄存器TMR2赋初值。只要一次性设定溢出周期(通过设定预分频器、后分频器以及PR2来实现),TMR2就将会周期性地按预先设定的溢出周期产生超时中断。该超时溢出周期的计算式为 :
                                           TTMR2IF=(4/fosc)*N1*(PR2+1)*N2
其中,N2为后分频器的分频比(连续可取1~16)。这时的简化电路如下图所示:
 
用作普通定时器
TMR2也可以像TMR0那样用作普通的定时器,这样使用时,可以将后分频器的分频比设定为1:1,PR2的值设定为最大值FFH,就相当于把后分频器、周期寄存器以及比较器的功能禁止掉了,使得它们不发挥作用。
从而使TMR2简化为类似于TMR0一样,带有一个分频比可设定为1:1、1:4或1:16的4位预分频器。这时超时溢出周期的计算式为:
                                                     TTMR2IF=(4/fosc)*N1*(256-M)
其中,M为TMR2的初始值。简化电路如下图所示:
采用这种用法时,需要在TMR2每次超时溢出时,都要给TMR2赋一次初始值。累加计数寄存器TMR2,就会以该初始值为起点开始增量,直到递增到FFH,之后再出现一个计数脉冲,就会将TMR2复位清0,并且发出中断请求(TMR2IF被置1)。如果想把预分频器的功能禁止掉,可以把它的分频比也设置为1:1,这样就相当于把预分频器给短路掉了。 

PIC单片机入门_定时器TMR2详解与实例相关推荐

  1. PIC单片机入门_中断系统详解

    1.中断的基本概念 当单片机正在执行程序时,出现了某些特殊状况,例如定时时间到.有键盘信号输入等,此时CPU须要暂时停止当前的程序,而转去执行处理这些事件的程序,待执行完这些特定的程序之后,再返回到原 ...

  2. PIC单片机入门_输入输出端口详解

    1.引言: PIC单片机引脚图: 在PIC16F87X 单片机中,28引脚型号的单片机有3 个I/O端口,分别是RA.RB和RC:40引脚型号单片机有5个 I/O端口,分别是RA.RB.RC.RD和R ...

  3. PIC单片机入门_定时器/计数器TMR0详解与实例

    1.前言: PIC 系列单片机内部配备有数量不等的定时器/计数器模块:例如PIC17CX系列和PIC18CX系列都都配置了4个定时器/计数器模块:而PIC16F87X系列都配置了3个定时器/计数器模块 ...

  4. PIC单片机入门_异步通讯模式详解

    1.USART用于异步通讯详解 1.1 USART的异步工作模式 在异步工作模式下, USART 采用的是标准非归零 ( NRZ编码格式 :一位起始位.8 位或 9 位数据位和一位停止位 ).最常用的 ...

  5. PIC单片机入门_同步/异步通信技术基础

    1.前言 通用同步 / 异步收发器 (Universal Synchronous/Asynchronous Receiver/Transmitter, USART) 模块是两个串行 I/O 模块之一 ...

  6. PIC单片机入门_指令系统

    1.前文回顾 前面学习了PIC单片机的系统框架,也介绍了程序存储器.数据存储器的组织形式.这里需要补充一点的就是寻址方式,之前仅仅提到了立即数寻址.直接寻址.其实还有几个比较重要的寻址方式,PC相对寻 ...

  7. PIC单片机入门_框架与存储器

    1.PIC16F877A单片机框架 1.1 为何性能如此之高? PIC单片机之所以有很高的性能是因为其具备如下特性: 内部为哈佛结构.寄存器文档.大多数单指令周期.指令流水线操作.长字型指令.指令数很 ...

  8. PIC单片机精通_串口通讯与串口调试实例

    1.引子 团队之所以称之为团队,就意味着多个人在一起共事.需要的是谦虚,谦逊,切勿言之偏偏.也要学会尊重,任何一门编程语言都有自己的优势与不足,否则早就有一门语言一统天下啦!!!我由VB入门,利用C. ...

  9. PIC单片机入门_汇编/混编/C编比较

    1.问题描述: 对RAM中从30h开始的50个单元清零. 2.汇编方法 <span style="font-size:18px;">COUNT EQU 20H ;指定2 ...

最新文章

  1. LiveGBS-GB28181流媒体服务如何实现跨域鉴权
  2. Linux命令行性能检测工具
  3. prototype.js常用函数及其用法
  4. Keepalived简介
  5. 云炬Android开发笔记 17商品详情功能开发
  6. docker 安装 minio
  7. MacOS 常用终端命令大全
  8. django学习笔记03
  9. 洛谷——P2381 圆圆舞蹈
  10. java学习之自定义异常
  11. ArcGIS制图表达Representation-规则和几何效果
  12. Web UI设计师的CSS优化工具 25+
  13. 解决苹果手机ios系统app store无法下载讯飞有声的问题
  14. nodejs读取服务器json文件,如何使用Node.js读取JSON文件
  15. 华硕老毛子(Padavan)——锐捷6.41,静态ip,学生破解过程分享,非专业仅供参考,啰嗦的一批,有耐心能看懂
  16. Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为N的商品,请问最少他会收到多少硬币?
  17. Java线程池如何优雅地等待所有任务执行完
  18. 我的Go+语言初体验——基于CentOS系统搭建Go+语言环境详细教程
  19. Java中world、PDF、Excel转图片
  20. ipv4ipv6导致微信H5支付问题

热门文章

  1. 【C++】智能指针用法详解(非常实用)
  2. 免费 PSD 素材:25个全新的界面设计资源
  3. 零售运营中的PP之价格策略(Pricing)分析
  4. 以技术共生智变,创商业共赢质变 华为云生态峰会盛大启幕
  5. RSA算法与ECC算法
  6. C++基础1:类与对象基础
  7. 实验一 进程同步与互斥c语言,进程互斥与进程同步实验
  8. 什么是编译型语言和解释型语言?
  9. Python迁移学习:机器学习算法
  10. 如何在Apple Watch上静音,管理和隐藏通知