文章目录

  • 前言
  • 一、定时器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的字节地址
*/
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

– —— 保留未使用


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


DCEN——向下计数使能位

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


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

STC52单片机 第三个定时器 定时器2详解相关推荐

  1. Spring定时器corn表达式详解

    1.结构 Spring定时器corn表达式详解 2.各字段的含义 字段 允许值 允许的特殊字符 秒 0~59 - * / 分 0~59 - * / 小时 0~23 - * / 日期 1~31 - * ...

  2. 单片机-bmp280大气压强与温度传感器使用详解

    单片机-bmp280大气压强与温度传感器使用详解" 转载: https://blog.csdn.net/sunshinebooming/article/details/79637822 最近 ...

  3. 51单片机串口通信发送以及接收代码详解1

    #include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...

  4. 51单片机串口通信发送以及接收代码详解2

    #include <reg51.h> //实验现象:在电脑端没按下发送的时候,单片一直给电脑发送aaa字符串: //实验现象:在电脑端按下发送的时候,结束字符串aaa的发送代码,执行单片接 ...

  5. Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】

    目   录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...

  6. QT快速入门、三点求圆心实现详解

    在编程中,会经常用到数学计算,所以C++将常用的数学计算,例如求正余弦等,封装成函数(正是我们在3.2 数学计算中学习到的),我们只需要写入简单的语句就可以执行所需要的功能,这正是函数的意义.在这一章 ...

  7. 圆形界面 开启相机_「基础篇三」手机摄影拍照界面详解

    ​[基础篇三]手机摄影拍照界面详解 手机拍照对我们来说已习以为常,每天我们都会用手机相机功能或多或少的拍出几张照片.故手机拍照界面对我们来说也不陌生,但手机拍照界面上的那些按钮,那些功能你都用过吗?你 ...

  8. (03)_k8s之flannel三种模型安装部署详解

    flannel三种模型安装部署详解 yht_1990关注[2020-10-04 12:13:47](javascript:

  9. AT89C51单片机流水灯c语言程序及详解(扫盲教程)

    AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...

最新文章

  1. Linux11-RPM软件包和YUM源
  2. EL之DTRFGBT:基于三种算法(DT、RF、GBT)对泰坦尼克号乘客数据集进行二分类(是否获救)预测并对比各自性能
  3. zookeeper分布式锁避免羊群效应(Herd Effect)
  4. 不小心把硬盘摔了一下,结果电脑变成这样了......
  5. 小程序怎样和服务器交互,微信小程序与 Django服务器 数据流 交互通信
  6. JQMObile 优势
  7. tigerVNC的简单使用教程(CentOS 自带VNC包的远程桌面连接)
  8. django的模板系统过滤器笔记
  9. 基于Labview的简易计算器设计
  10. CSS单位:em、rem、%、vh、vw、vmin、vmax
  11. take off用法
  12. 解决 Could not locate executable null\bin\winutils.exe in the Hadoop binaries 异常
  13. 走迷宫爆压,21行突破B站记录(自创,自设地图)
  14. 微信公众号内下载pdf等文件,受微信所限制,安卓和IOS不同处理方式(最最最优版)
  15. Android内存泄漏检测工具使用手册
  16. 矩阵与矩阵转置的加法
  17. 完全零基础,如何系统地学习视频剪辑
  18. *p++和(*P)++的区别
  19. 读《why programs fail》的闲话
  20. 深入了解示波器(一):示波器分类

热门文章

  1. VLC 视频pause后seek画面概率性卡主问题分析记录
  2. 程序设计:蒜头君的数轴
  3. Python+Word:我已经使用“pip install docx”命令安装了扩展库docx,为什么无法运行书上的代码操作Word文件呢?
  4. 基于冲突搜索算法的多机器人路径规划(Matlab代码实现)
  5. stm32cubemax配置造成芯片错误,无法下载程序该怎么办?PDSC: Sequence Execution failed error
  6. CMSIS-DAP和openOCD那些事
  7. matlab选修结课作业,matlab在高等数学中的应用结课作业
  8. 二元最佳前缀码_最优前缀编码
  9. rabbitmq 限制速度_如何控制消息队列的消费速度?
  10. Redis面试题系列:跳跃表