【单片机学习】51单片机【定时/计数器】,详细介绍

2023-05-16

51单片机学习

  • 一、先知先会
    • 1、CPU时序的有关知识
      • 1.1、周期换算
      • 2、在学习定时器之前需要明白的
      • 3、定时/计数器的工作原理
      • 4、51单片机定时器结构
  • 二、定时/计数器的控制
    • 1、工作方式寄存器TMOD
    • 2、控制寄存器TCON
    • 3、定时/计数器的工作方式
      • 方式0:13位计数器(`TR0`控制型)
      • 方式1:16位加1计数器
      • 方式2:8位自动重装(重装初值)
      • 方式3:只适用于定时/计数器`T0`
      • 使用定时器,该做哪些工作

一、先知先会

1、CPU时序的有关知识

  • 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)
  • 状态周期2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期时钟周期
  • 机器周期1个机器周期=6个状态周期=12个振荡周期。
  • 指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。

1.1、周期换算

2、在学习定时器之前需要明白的

(1)51单片机有两组定时器/计数器;

因为既可以定时,也可以计数,所以称为定时/计数器。

(2)定时/计数器和单片机的CPU是相互独立的。

定时/计数器工作过程是自动完成的,不需要CPU的参与。

(3)51单片机中的定时/计数器是根据机器内部的时钟或者是外部脉冲信号对寄存器中的数据加1

(4)有了定时/计数器之后,可以增加单片机的效率。

一些简单的重复加1的工作可以交给定时/计数器处理,CPU转而处理一些复杂的事情。同时可以实现精确定时

3、定时/计数器的工作原理

4、51单片机定时器结构

​ 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器THx和TLx组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

二、定时/计数器的控制

​ 51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式TCON用于控制其启动和中断申请

1、工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

其格式如下:

  • GATE是门控位, GATE=0时,用于控制定时器的启动是否受外部中断源信号的影响。只要用软件使TCON中的TR0TR1为1,就可以启动定时/计数器工作。

    GATE=1时,需要用软件使TCON中的TR0TR1为1,同时外部中断引脚INTO/1也为高电平时,才可以启动定时/计数器工作。【相较于上面的方式,该方式多一个外加高电平(所以常用上面的方式)】

  • C/T :定时/计数模式选择位。C/T =0为定时模式;C/T =1为计数模式。

  • M1M0:工作方式设置位。定时/计数器有四种工作方式。

2、控制寄存器TCON

TCON的低4位用于控制外部中断,已在【中断部分】介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。

其格式如下:

  • TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
  • TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。
  • TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
  • TR0(TCON.4):T0运行控制位,其功能与TR1类同。

3、定时/计数器的工作方式

方式0:13位计数器(TR0控制型)

GATE=0经过反相器,为1,经过或门还是为1(此时不用管INT0引脚,因为门嘛),再经过与门(此时等于多少就由TR0来控制),当TR0=1时导通,开始计数,否则不导通。【由TR0控制】

GATE=1经过反相器,为0,此时还得看INT0引脚,若为1,经过或门为1(否则为0,计时器就开启不了),再经过与门(此时结果为多少就由TR0来控制),当TR0=1时导通,开始计数。【由TR0控制】

方式1:16位加1计数器

方式2:8位自动重装(重装初值)

方式3:只适用于定时/计数器T0

通常使用方式1方式2

使用定时器,该做哪些工作

初始化程序应完成如下工作:【编写程序也是按如下步骤进行】

  • TMOD赋值,以确定T0T1的工作方式;
  • 计算初值,并将其写入TH0TL0TH1TL1
  • 打开计时器0 中断 开关ET0
  • 中断方式,则对EA(总中断开关)赋值,打开定时器中断;
  • 使TR0TR1置位,启动定时/计数器定时计数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【单片机学习】51单片机【定时/计数器】,详细介绍 的相关文章

随机推荐

  • #使用TF实现海龟机器人跟随

    使用TF实现海龟机器人跟随 昨天粗略地讲解了一会儿TF变换 xff0c 用的是ROS系统中自带的功能包实现小海龟跟随的功能 xff08 具体见 初识TF变换 xff09 今天我们将用自己编写节点的方式实现小海龟跟随的功能 xff0c 并且
  • #创建虚拟机器人URDF模型

    创建虚拟机器人URDF模型 题外话 xff1a 作业发布已有一两天了 xff0c 之所以今天才编辑这篇博客 xff0c 是因为我也遇到问题了 xff0c 现在以及解决了 xff08 小细节 xff1a 创建功能包之前先编译工作空间确保里面已
  • # gazebo 仿真

    gazebo 仿真 1 给 base link 添加惯性 xff0c 碰撞以及 gazebo 属性 在路径xqrobot description urdf xacro 件夹下新建 件夹 gazebo xff0c 并在 gazebo 件下创建
  • #Gmapping

    Gmapping 开始之前先安装两个功能包 xff0c 命令如下 xff1a sudo apt span class token operator span get install ros span class token operator
  • #navigation

    navigation 1 安装相关依赖 sudo apt span class token operator span get install ros span class token operator span kinetic span
  • # Qt_day1

    Qt day1 1 项目框架 span class token macro property span class token directive hash span span class token directive keyword i
  • ros先订阅后发布 无法收到消息的解决办法

    现象 今天遇到的问题是 使用的是Ros1 在先订阅后发布时 会导致订阅者无法收到订阅的消息 除非在发布者发布后重新订阅 思考 以前使用的是Ros2似乎并不关心订阅和发布的先后顺序 nbsp 似乎都可以收到消息 nbsp nbsp 这个问题后
  • C/C++中关于struct和class类的区别

    struct和class的主要的区别在于两者默认的访问权限有所不同 在不设置类中的成员属性和成员方法的权限时 xff0c struct默认的访问权限是公共权限 xff0c class默认的访问权限是私有权限 补充 xff1a 成员属性和成员
  • C++中STL容器的主要使用及含义

    1 stack栈容器的使用 假如栈中存放的是字符串 xff0c 我们做如下定义 xff1a stack lt string gt ss 设该变量名为ss 其主要用法如下 xff1a ss push a 存入栈中元素a ss top 读取栈顶
  • 电赛备赛记录第一篇(控制部分)

    2022 5 25 九校联赛备赛阶段第一天 联赛小车系统沿用去年国赛使用的树莓派驱动底板与外设 整车情况良好 xff0c 摄像头通信 连接均正常 xff0c 现已拼装完整 复产复工的初步成果为 xff1a 小车可以实现开机自启动的程序运行
  • 数据结构——栈详解

    1 栈 Stack 是一种线性存储结构 xff0c 它具有如下特点 xff1a xff08 1 xff09 栈中的数据元素遵守 先进后出 34 First In Last Out 的原则 xff0c 简称FILO结构 xff08 后进先出的
  • 双目相机标定

    一 运行环境 opencv2 windows vs 二 图像获取 分割 保存 参考博客opencv打开双目摄像头 图像切割保存 scutqq的博客 CSDN博客 双目图像分割 include amp lt opencv2 core core
  • uart1接收不定长度数据和发送:STM32 HAL库串口+DMA+IDLE空闲中断

    DMA增加 xff1a usart1 gpio 默认即可 usart1中断必须打开 在 STM32 中 USART 发送接收有三种基本方式 xff0c 轮询 中断和 DMA 1 轮询方式为堵塞模式 xff0c 使用超时管理机制 它每次接收一
  • 串口、网口等自定义通信协议的问题

    自定义通信协议的问题 一 串口1 通信分为网络通信和串口通信2 协议格式3 协议设计4 代码实现 二 网口1 TCP粘包与拆包 包的划分 出现TCP粘包的原因 粘包与拆包的几种情况 常见的粘包与拆包解决方案 2 为什么UDP没有粘包 xff
  • 如何理解奇偶校验位?

    奇偶校验位提供对传输数据的简单错误 xff08 奇偶校验 xff09 检查 此表描述奇偶校验的类型 奇偶校验类型 xff1a Even 描述 xff1a 数据位加上奇偶校验位产生偶数个1 xfffc 奇偶校验类型 xff1a Mark 描述
  • C语言----隐藏代码文件

    在C语言中 xff0c 常用的文件主要是后缀为 c的源文件以及后缀名为 h的头文件 我们通常使用头文件对函数进行声明 xff0c 使用源文件对具体的函数进行实现 有些时候会由于各种原因需要将函数的功能交给别人使用 xff0c 但是又不想将具
  • c++入门系列(三)之头文件

    1 什么是头文件 xff1f 在C语言家族程序中 xff0c 头文件被大量使用 一般而言 xff0c 每个C 43 43 C程序通常由头文件和定义文件组成 头文件作为一种包含功能的函数 数据接口声明的载体文件 xff0c 主要用于保存程序的
  • std::atomic_thread_fence

    在原子变量的存取上应用不同的memory order可以实现不同的内存序来达到数据同步的目的 xff0c 而在C 43 43 11及之后的标准里 xff0c 除了利用原子操作指定内存序 xff0c 还定义了单独使用 内存栅栏 xff08 s
  • 【数据结构】【期末复习】知识点总结

    算法 线性表 概念明晰 xff1a 随机存取 顺序存取 随机存储和顺序存储 随机存取 顺序存取 随机存储和顺序存储这四个概念是完全不一样的 xff0c 切不可将之混淆 很多人包括我可能认为随机存取就是随机存储 xff0c 顺序存取就是顺序存
  • 【单片机学习】51单片机【定时/计数器】,详细介绍

    51单片机学习 一 先知先会1 CPU时序的有关知识1 1 周期换算2 在学习定时器之前需要明白的3 定时 计数器的工作原理4 51单片机定时器结构 二 定时 计数器的控制1 工作方式寄存器TMOD2 控制寄存器TCON3 定时 计数器的工