文章目录

  • 前言
  • 一、定时器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来确定引起中断的事件)


上图为定时器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时产生中断


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产生。


由上图可知,波特率发生器模式时的逻辑结构图。与自动重装模式相似,当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模式控制寄存器)

头文件<reg52.h>中没有定义需要自己定义

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的设置


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

52单片机——定时器2详解相关推荐

  1. 89c52单片机c语言延时程序计算 脉冲,89C52单片机定时器延时时间的计算与程序解析 - STC89C52单片机定时器/计数器详解(含程序和定时器2)...

    STC单片机STC89C52RC定时器延时时间的计算 延时时间要根据晶振频率计算,不同板子可能有所不同. 时钟周期: 1/时钟源,在我现在这块板子上,晶振频率是11.0592M,也就是时钟周期是 1/ ...

  2. 52单片机定时器2使用(C语言程序)

    本文是关于52单片机定时器计数器2做为普通的16位自动重装定时器使用,类似于定时器计数器0和定时器计数器1工作在方式1下.以下程序在Keil 2和Keil 3下调时通过,下载在本校的实验板上达到预期效 ...

  3. 51单片机步进电机角度控制详解(免费提供代码+仿真)

    51单片机步进电机控制详解 目录 51单片机步进电机控制详解 一.步进电机基本介绍 1. 步进电机结构 2. 步进电机驱动 二.硬件&仿真设计 0.设计要求 1. 硬件设计 显示模块 输入模块 ...

  4. 单片机执行指令过程详解

    单片机执行指令过程详解: 单片机执行程序的过程,实际上就是执行我们所编制程序的过程,即逐条指令的过程. 计算机每执行一条指令都可分为三个阶段进行.即取指令-----分析指令-----执行指令. (1) ...

  5. 继电器写法c语言单片机,单片机驱动继电器详解

    原标题:单片机驱动继电器详解 之前说过,单片机的拉电流和灌电流有限,即输出驱动能力有限,要驱动继电器这类大功率的器件该怎么办呢,答案很简单:用三极管.器件参数该如何确定呢? 手上有一个HFD23的5V ...

  6. 英飞凌 AURIX 系列单片机的HSM详解(1)——何为HSM

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> <英飞凌 AURIX 系列单片机的HSM详解(3)--开发方法> ...

  7. 英飞凌 AURIX 系列单片机的HSM详解(2)——与HSM相关的UCB和寄存器

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

  8. 英飞凌 AURIX 系列单片机的HSM详解(5)——HSM硬件加速模块的使用

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

  9. 英飞凌 AURIX 系列单片机的HSM详解(4)——Tricore核与HSM核之间的通信方法

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

最新文章

  1. 浅谈自然语言处理技术在自动化的应用
  2. jsp静态化和伪静态化转载
  3. spring boot2.x使用rabbitmq
  4. 服务器dbback文件夹,怎么让SQL 2000定时复制备份数据库到局域网中的指定电脑上? - SQL Server论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  5. Android开发--初探SQLiteDataBase/数据库的创建,更新,插入,查询
  6. IOS开发基础之使用Xcode12.3连线storyboard与属性
  7. github里的默认域_恕我直言!你对Python里的import一无所知
  8. 数据库应用系统——引言
  9. 数据库中的超码、候选码、主码
  10. python网络编程案例_python网络编程实例简析
  11. c235delc杂合变异遗传吗_血常规正常就真的没有地贫吗?
  12. 扩展欧几里得算法(Python)
  13. 夯实Java基础系列16:一文读懂Java IO流和常见面试题
  14. 大数据平台任务调度与监控系统
  15. python 模拟键盘按键错乱_python 采坑总结 调用键盘事件后导致键盘失灵的可能原因...
  16. 前端读取服务器文件,js读取服务器端的txt文件
  17. 皮影机器人ppt_机器人皮影戏装置的制作方法
  18. 利用丁香园数据生成疫情分布地图(R语言)
  19. 华为matebook X 笔记本没开什么程序,有时经常慢卡
  20. 计算机网络整理(上)

热门文章

  1. 私募教父”赵丹阳:与巴菲特那顿饭明年才吃
  2. 利用Python将视频转为字符动画
  3. 大年初一,呱哥带父母游西溪湿地(多美图)
  4. 小黑除夕跟尚香吃喜茶喝火锅,走了一下午,晚上休息会儿顺便的leetcode之旅:剑指 Offer 34. 二叉树中和为某一值的路径
  5. mysql 正态分布函数_C++ normal_distribution高斯正态分布函数用法详解
  6. composer -vvv 命令
  7. 2020美容师(初级)实操考试视频及美容师(初级)操作证考试
  8. Windows 平台如何抓包
  9. ejs 模板 html转移,ejs模板使用
  10. backtrader利用小时间粒度数据动态合成大时间粒度数据:replay功能