52单片机——定时器2详解

文章目录

  • 前言
  • 一、定时器2简述
    • 1.定时器2的作用
    • 2.定时器和计数器的区别
  • 二、定时器2功能详解
    • 1.捕获
      • 1.1.什么是捕获
      • 1.2.捕获的工作原理
      • 1.3.捕获模式
    • 2.自动重装模式(递增/递减计数器)
    • 3.波特率发生器模式
      • 3.1波特率的概率
      • 3.2波特率发生器模式
  • 三、定时器2中的寄存器
    • 1.T2CON(定时器2控制寄存器)
    • 2.T2MOD(定时器2模式控制寄存器)
  • 四、定时器/计数器2的设置


前言

52单片机和51单片机相比,出来内部存储增大外,还多了一个T2 定时器/计数器。


一、定时器2简述

1.定时器2的作用

       定时器2是一个16位定时器/计数器,通过特殊功能寄存器T2CON中的C/T2位。可将其设置为定时器或计数器。它的计数时钟源可以是内部的机器周期,也可以是T2口(P1.0)输入的外部时钟脉冲。通过设置T2CON中的工作模式选择位可将定时器2设置为三种工作模式,分别为捕获、自动重新装载(递增或递减计数)和波特率发生器。


2.定时器和计数器的区别

       定时器和计数器本质上是相同的,都是对单片机中产生的脉冲进行计数。区别:计数器是单片机外部触发的脉冲,而定时器是单片机内部晶振的触发下产生的脉冲。当它们脉冲间隔相同。计数器和定时器就是一样的。


二、定时器2功能详解

       先了解定时器2中的寄存器 跳转到后面的 寄存器介绍

1.捕获

1.1.什么是捕获

       捕获就是捕捉某一瞬间的值,通常用它来测量外部某个脉冲的宽度或周期。使用捕获功能可以准确地测量出脉冲宽度和周期。


1.2.捕获的工作原理

       单片机内部有两组寄存器,其中一组的内部数值是按照固定机器周期递增或递减,通常这组寄存器就是定时器的计数寄存器(THX,TLX),当与捕获功能有关的外部某一引脚有一个负跳变时,捕获便会立即将此时第一组寄存器中的数值精准的获取,并且存入另一组寄存器中(陷阱寄存器 RCAPXL,RCAPXH),同时向CPU申请中断,软件记录两次捕获之间的数据,便可以准确地计算出该脉冲的周期。

负跳变:由高电平变成低电平的过程,也叫下降沿
高脉冲:也就是正脉冲,既上升沿


1.3.捕获模式

       当EXEN2=0时,定时器2作为一个16位定时器或计数器(由T2CON中C/T2位选择),溢出时置位TF2(定时器2溢出标志位)。该位用于产生中断(通过使能IE寄存器中的定时器2中断使能位)

        当EXEN2=1时,与以上描述相同,但增加了一个特性,即外部输入T2EX由1变0时将定时器2中TH2和TL2的当前值各自捕获到RCAP2L和RCAP2H。另外,T2EX的负跳变使T2CON中EXF2置位,EXF2也像TF2一样能够产生中断(其中断向量与定时器2溢出中断地址相同,在定时器2中断服务程序中可通过查询TF2和EXF2来确定引起中断的事件)


52单片机——定时器2详解_第1张图片

       上图为定时器2的捕获模式逻辑结构图。在捕获模式中TL2和TH2无重新装载值,甚至当T2EX引脚产生捕获事件时,计数器仍以T2脚的负跳变或振荡频率的1/12计数。

中断向量

中断向量其实就是中断地址(这个地址单元是厂家按照规定设计好的,即在哪种中断发生后程序中断会转跳到这个中断地址来进行).

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

16位自动重装模式中,定时器可通过C/T2配置为定时器或计数器。并且可编程控制递增/递减计数。计数的方向由DCEN(递减计数使能位)确定,位于T2MOD寄存器中,当DCEN=1时,定时器2可通过T2EX确定递增或递减计数。T2EX=0时,重装的值为0FF和0FF,递减计数与陷阱寄存器预存值相同时,置位TF2产生中断,T2EX=1时,自动重装值为陷阱寄存器中的值,溢出时置位TF2产生中断。

       当EXEN=0时,定时器2递增计数到0FFFFH,并在溢出后将TF2置位,然后将RCAP2L和RCAP2H中的16位值作为重新装载值装入定时器2中。RCAP2L和RCAP2H都是通过软件预设的。
       当EXEN=1时,16位重新装载可通过溢出或T2EX从1到0的负跳变实现,此负跳变同时将EXF2置位。如果定时器2中断被使能,则当TF2或者EXF2置1时产生中断
52单片机——定时器2详解_第2张图片


52单片机——定时器2详解_第3张图片

T2引脚 ----P1^0
T2EX引脚 ----P1^1

3.波特率发生器模式

3.1波特率的概率

       单片机或者计算机在串口通信时的速率用波特率表示它定义为每秒传输二进制代码的位数。单位是bps(位/秒)。即每秒中传送100个字符,而每个字符含十位(1个起始位、1个停止位和8个数据位),这时的波特率就是10X100 = 1000bps

3.2波特率发生器模式

       寄存器T2CON的TCLK和RCLK位允许从定时器1或定时器2获得串行口发送和接收数据的波特。当TCLK = 0时,定时器1作为串行口发送波特率发生器,当TCLK = 1时,定时器2作为串行口发送波特率发生器。RCLK对串行口接收波特率有同样的作用。通过这两位串行口能得到不同的接收和发送波特率一个通过定时器1产生,一个通过定时器2产生。
52单片机——定时器2详解_第4张图片


       由上图可知,波特率发生器模式时的逻辑结构图。与自动重装模式相似,当TH2溢出时,波特率发生器模式使定时器2寄存器装载来自寄存器RCAP2H和RCAP2L的16位的值,寄存器RCAP2H和RCAP2L的值由软件预置。

当定时器2配置为技术方式时,外部时钟信号由T2引脚引入,当工作于模式1和模式3时

                                   模式1和模式3的波特率 = 定时器2的溢出率/16

当定时器2作为定时器时,它的操作不同于波特率发生器。通常定时器2作为定时器时,它会在每个机器周期递增(1/12振荡频率);当定时器2作为波特率发生器时,它以1/2振荡器频率递增,这时波特率的计算公式

                    模式1和模式3的波特率 = 振荡器频率/32 X [ 65536 - (RCAP2H, RCAP2L) ](RCAP2H, RCAP2L)是RCAP2H和RCAP2L的内容,为16位无符号整数

定时器2 作为波特率发生器,仅当寄存器T2CON中的RCLK或TCLK=1时,定时器2作为波特率发生器才有效。TH2溢出并不置位TF2,也不产生中断。这样当定时器2作为波特率发生器时定时器2中断不必被禁止,如果EXEN2(T2外部使能位)被置位,在T2EX中由1到0的跳变时会置位EXF2(T2外部标志位),但并不导致(TH2, TL2)重新装载(RCAP2H, RCAP2L)。
当定时器工作在波特率发生器模式时,不要对TH2和TL2进行读和写,每隔一段状态时间(fosc/2)或由T2进入的异步信号,定时器2的计数器都将加1,在此情况下,对TH2和TH1进行读写是不准确的;可对RCAP2L寄存器进行读,但不要进行写,否则将导致自动重装错误。当对定时器2的寄存器RCAP2进行访问时应关闭寄存器

三、定时器2中的寄存器

1.T2CON(定时器2控制寄存器)

       T2CON寄存器用来设定与定时器2有关的一些操作,字节地址为C8H,该寄存器可进行位寻址(即对该寄存器的每一位赋值)。单片机复位时T2CON全部被清0。

位序号 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的外部使能标志
当EXEN=1且定时器2未作为串行口时钟时,允许T2EX的负跳变产生捕获或重装;当EXEN2=0时,T2EX的跳变对定时器2无效


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时,该位无效且定时器强制为溢出时自动重装。

中断使能

中断标志是处理器内部标志寄存器中的一位,如果将该位设置为1,处理器会屏蔽所有可屏蔽中断。
中断使能是通过I/O操作设置外部的中断控制器,决定当某一个中断请求发生时,中断控制器是否向处理器发送中断信号。可以允许一部分中断请求而屏蔽另一部分中断请求。(使…能产生中断)

2.T2MOD(定时器2模式控制寄存器)

     头文件中没有定义需要自己定义

sfr  T2MOD = 0xc9;	 
/*
	sfr ----特殊功能寄存器的数据声明,声明一个8位的寄存器
	0xc9 ----T2MOD的字节地址
*/

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

位序号 D7 D6 D5 D4 D3 D2 D1 D0
位符号 T2OE DCEN

– —— 保留未使用


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


DCEN——向下计数使能位

四、定时器/计数器2的设置

52单片机——定时器2详解_第5张图片
52单片机——定时器2详解_第6张图片

内部控制:仅当定时器溢出时进行捕获和重装
外部控制:当定时器/计数器溢出并且T2EX(P1.1)发生电平负跳变时产生捕获或重载(定时器2用于波特率发生器模式时除外)

你可能感兴趣的:(单片机,单片机)