定时器/计数器介绍

2023-05-16

第一次在学习定时器的时候模模糊糊,在做过一些题目之后对定时器有了更新的理解,现在整理一下,做笔记使用。

目录

一.基础知识

定时器的作用:

定时器的实质:

定时器的工作原理:

定时器的两个工作模式:

(1)定时器模式:(该模式可以用STC软件来直接得出定时器,而不用自己设定)

(2)计数器模式

二.配置定时器0

三.配置定时器0的中断

一.基础知识

定时器的作用

定时计数器可以用于精确事件定时,PWM脉宽调制,波形发生,信号时序测量的方面。计时也是通过计数来实现的。

定时器的实质

加1的16计数器  分 高八位、低八位组成

51单片机定时器0内部有两个寄存器TH0和TL0,都是1字节的,理解位定时器0高位寄存器(TH0),定时器0低位寄存器(TL0), 我们知道2字节最大能存65535。

比赛板拥有三个定时器0,定时器1,定时器2    主要用定时器0

定时器的工作原理:

加1计数器对输入的脉冲进行计数。

定时器的两个工作模式

1)定时器模式:(该模式可以用STC软件来直接得出定时器,而不用自己设定)

定时器模式的原理:由系统的时钟振荡器输出脉冲经12分频(1/12 us)后送来;加1计数器是对内部机器周期计数。计数值N×机器周期Tcy就是定时时间t 。

51单片机内部有一个12MHZ的晶振:即时钟周期=1/(12M) (s) = 1/12 us

51单片机一个指令周期(机器周期)是12个时钟周期:即指令周期=12*1/12 us = 1us

每经过一个机器周期(1us),内部的16位计数 寄存器的值就会加1,直到这个寄存器装满时溢出。当加到溢出后发出一个溢出中断,即硬件使TCON中TFO或TF1置1,我们程序可以捕获到这个中断,就可以知道此时经历了(65535+1)us。

 T0(T1)当做定时器来使用,就不用外部P3.4(P3.5)引脚,是用内部机器周期计数实现定时的,当定时到就会引起中断.我们可以算出工作在定时模式时最高单次定时时间为 65535*1.085us=时间(单位us)(最高单次定时时间大概在6毫秒左右,这也就是为什么STC软件中为什么定时器只能做6毫秒以下时间的)

2)计数器模式

原理:②T0或T1引脚输入的外部脉冲源。T0(P3.4引脚),T1(P3.5引脚)每来一个脉冲计数器加1(共有16位计数器),当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TFO或TF1置1,向CPU发出中断请求(定时/计数器中断允许时).

 

T0(T1)当做计数器来使用,才用到外部P3.4(P3.5)引脚,检测到1个脉冲,计数+1,当计数满时就会引起中断。

二.配置定时器0

1配置辅助寄存器    (置于定时器启动之前)

      AUXR=0X80

     对51单片机进行兼容处理。

 

2.TCON寄存器:启动定时/计数器

(可位寻址,控制T0、T1的启动和停止,以及设置溢出标志。

后缀为1的是定时器1的配置,不用管)

  TF0 = 0; //清除TF0溢出中断标志,加到65536后TF0会被硬件置为1,我们需要把他清0.

  TR0 = 1; //为1时允许定时器0计数,为0时不允许计数

  IE0和IT0不用管。

所以,我们对于TCON寄存器的使用就只对TF0和TR0设置即可。

 

3.TMOD寄存器

 

 

设置定时/计数器工作模式,设置定时/计数器工作模式。(不可位寻址)

  定时器1的不用配置,全部置1即可,定时器0配置如下

  GATE=0:用到中断的情况下,这一位需要设置为0;如果只用定时器的情况下设置为1即可。

  C/T=0:0代表用作定时器(对内部系统时钟进行计数),1代表用作计数器(对T0-P34引脚的外部脉冲进行计数)。

  M1=0,M0=0: M1和M0这样设置代表使用模式1,即TH0和TL0两个寄存器都使用。

【自动重装定时器】(后两位00):我们一开始给TH0和TL0一个初值,当它计数满65535之后,如果自动重装,TH0和TL0将会返回这个初值。(一般用这个)

【不可重装模式】(后两位01):我们一开始给TH0和TL0一个初始值,当他计数满65535之后,将不在返回这个初值,而是等待着我们再次给它赋值。

 所以,TMOD=0XF0

3.TH0TL0(配置计数初值)

如果我们要定时1ms(1000个指令周期),可以这样做,设置寄存器的初值为64536(距离65535差1000,一次1us,1000次就是1ms),这样到溢出值65536就正好1ms。       

TL0=64535%256+1;

TH0=64535/256;

定时器模式时有:N=t/Tcy(Tcy是机器周期)

计数初值的公式:X=-N

例如;计5ms的时间:t=5* s​​​​​​​

                                Tcy= ​​​​​​​

              得出 X=10240  

转换成16进制2800(4位二进制是1位16进制)

所以4位16进制的数转换成2进制就是16位

所以 28是高八位;00是低八位

然后将高八位装到TH0里面   将低八位装到TL0里面

TH0=0X28TL0=0X00

三.配置定时器0的中断

定时器0的中断:1;定时器1的中断:3;定时器2的中断:12。

以定时器0为例:

Void time0 (void)      interrupt 1

{

      中断之后系统要做的程序

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定时器/计数器介绍 的相关文章

  • Python打包EXE踩坑 No such file or directory: ‘E:***\\matplotlib\\mpl-data\\matplot

    错误如上图 xff1a FileNotFoundError Errno 2 No such file or directory 39 E matplotlib mpl data matplotlibrc 39 55148 Failed to
  • C#:winform窗体 实现类似QQ的窗体在桌面边缘停靠和隐藏

    设计思路 xff1a 1 使用定时器 xff08 Timer xff09 来监控鼠标位置和窗体位置 xff0c 并实现窗体的停靠和隐藏 2 当鼠标拖动窗体时 xff0c 窗体才有可能根据自身位置决定是否停靠 3 如果窗体四周没有接触到屏幕边
  • VUE+ts 运行时常见错误

    1 error Extra semicolon semi 错误分号半 error Strings must use singlequote 错误字符串必须使用单引号 解决办法 xff1a 在项目根目录下新建文件 xff1a prettier
  • 配置CMakeLists.txt工程文件把当前工程下的所有c文件添加为可执行程序

    span class token function cmake minimum required span span class token punctuation span VERSION span class token number
  • C语言实现选择排序

    排序的基本方法 xff1a 选择排序 原理跟我们生活十分贴近 xff0c 从一组数中扫一眼 xff0c 找到最小的 xff0c 放到最左边 xff0c 第二小的放在左起第二个 xff0c 以此类推 xff01 下面是源代码 include
  • C语言实现冒泡排序

    冒泡排序作为学习排序最基本的算法 xff0c 具有稳定性与实用性 下面是C语言冒泡排序的源代码 include lt stdio h gt int main void int a 10 61 6 4 3 2 7 8 9 10 1 5 int
  • ESP32(ESP-IDF)+CNC Shield+A4988控制步进电机

    陈拓 2023 04 15 2023 04 15 1 简介 在 Arduino Uno开发板 43 电机驱动扩展版CNC Shield V3 0硬件说明 https blog csdn net chentuo2000 article det
  • C语言实现快速排序算法

    快排作为公认最优秀的排序方法 xff0c 是每一个程序员都应该掌握的 xff0c 那么 xff0c 今天就由我来为大家简单讲解一下快速排序算法的代码 源代码如下 xff1a include lt stdio h gt void quicks
  • C语言实现二分查找

    相较于线性查找 xff0c 二分查找在面对大量数据时的效率更高 xff0c 但它的缺点是只能对有序数组进行查找 源代码如下 xff1a include lt stdio h gt void binarysearch int a int su
  • 约瑟夫环详解

    package newjosephu public class myfinaljosephu 你可能会说crazy 我只想说ez xff01 public static void main String args circlelinkedl
  • 01背包问题(滚动数组实现的逻辑)

    package tttest public class mybetterbag public static void main String args int weight 61 1 3 4 int bagsize 61 4 int val
  • java递归实现辗转相除法

    public static int getres int a int b if b 61 0 return getres b a b return a
  • java 线索二叉树的构建

    public class test public static void main String args Node root 61 new Node 1 Node node2 61 new Node 2 Node node3 61 new
  • VINS-Mono

    非极大值抑制 NMS算法 xff0c 思想是搜索局部最大值 xff0c 抑制非极大值 输入 xff1a 目标边界框及其对应的置信度的分列表 xff0c 设定阈值 xff0c 阈值用来删除重叠较大的边界框 IoU xff1a 两个边界框的交集
  • vtk世界坐标系与屏幕坐标系的转换

    世界坐标系 gt 屏幕坐标系 double worldCoord 3 61 100 100 20 vtkSmartPointer lt vtkCoordinate gt pCoorPress 61 vtkSmartPointer lt vt
  • VTK读取DCM保存成png

    VTK读取DCM保存成png include lt vtkSmartPointer h gt include lt vtkImageViewer2 h gt include lt vtkDICOMImageReader h gt inclu
  • 姿态矩阵与姿态向量的相互转化

    罗德里格斯公式 转轴 n 是矩阵 R 特征值 1 对应的特征向量 求解此方程 再归一化 就得到了旋转轴 CV EXPORTS W void Rodrigues InputArray src OutputArray dst OutputArr
  • 电脑连接树莓派Zero W

    电脑连接树莓派ZeroW 陈拓 2018 05 16 2018 06 09 0 概述 本位介绍两种电脑连接树莓派PiZero W的方法 xff1a l 电脑通过USB以太网连接树莓派ZeroW l 电脑通过WiFi连接树莓派ZeroW 1
  • 读取 ttf 字体文件并提取汉字轮廓

    读取 ttf 字体文件并提取汉字轮廓 ttf 免费下载 ttf 下载链接 编译安装 freetype freetype下载链接 实现效果 demo下载地址
  • CRC-16/MODBUS 校验位计算

    实验指令 xff1a 前23位表示 信息头 43 信息内容 24 xff0c 25位是待计算的校验位 26位是结束码 7E 01 00 00 01 10 02 00 27 00 0C 00 02 00 00 00 00 00 50 00 3

随机推荐

  • QSS之QPushButton 详细介绍

    官方参考资料 span class hljs tag QPushButton span span class hljs rules span class hljs comment 前景色 span span class hljs rule
  • bochs 详细介绍

    BOCHS 简介及配置 Bochs 简介 Bochs xff08 读音同 Box xff09 是用C 43 43 开发的以 LGPL 许可证发放的开放源代码的x86 xff0c x86 64模拟器 xff0c 模拟整个PC 它被设计成可以运
  • QT信号槽传递复杂参数

    原理 1 先将想要传递的多个数据封装成一个结构体 2 然后再用QVariant打包 3 通过信号槽机制传送 4 传到目标类后再解开QVariant的到自己想要的数据 实验目标 按下按钮后 xff0c 将界面上3个控件的值传递到Product
  • Opencv 轮廓提取

    边缘检测的一般步骤 滤波 消除噪声增强 使边界轮廓更加明显检测 选出边缘点 方法一 Canny算法 特点 xff1a 轮廓细腻 include lt opencv2 opencv hpp gt include lt opencv2 high
  • opencv矩形识别

    include lt opencv2 highgui highgui hpp gt include lt opencv2 imgproc imgproc hpp gt include lt opencv2 core core hpp gt
  • 【怎么在KEIL中自定义STM32的栈顶地址】

    STM32的启动文件中定义的栈和堆的大小 xff0c 由于栈是向下生长的 所以我们一般希望将栈顶设置为RAM的最高有效地址 这样就可以最大限度保护栈不会溢出 但是STM32的启动文件居然不是这样的思路 那STM32的启动文件的分配思路是怎么
  • VaR和CVaR举例说明_笔记转载

    风险价值VaR成为金融市场风险度量的主流指标 VaR自1993年发展至今已作为金融市场风险度量的主流指标被各银行 投资公司 证券公司及金融监管机构广泛采用 VaR不仅具有概念简单 xff0c 易于沟通和理解的优点 xff0c 而且为不同金融
  • 树莓派GPIO控制

    树莓派GPIO 控制 陈拓 2018 06 09 2018 06 10 0 概述 本文介绍树莓派 Zero W的GPIO控制 xff0c 并用LED看效果 也适宜于树莓派3B 43 0 1 树莓派GPIO编号方式 功能物理引脚 从左到右 x
  • UDP编程详解

    1 1 编程准备 字节序 地址转换 1 1 1 字节序概述 字节序概念 xff1a 是指多字节数据的存储顺序 分类 xff1a 大端格式 xff1a 将低位字节数据存储在低地址 小端格式 xff1a 将高位字节数据存储在低地址 注意 xff
  • DataHub:通用的元数据搜索和发现工具(开源)

    Get Started With DataHub DataHub 作为世界上最大的专业网络和Economic Graph的运营商 xff0c LinkedIn 的数据团队一直致力于扩展其基础架构 xff0c 以满足我们不断增长的大数据生态系
  • mp4格式视频因为录制到一半断电,导致损坏能修复

    risingresearch com 可以用 xff0c 完全免费 xff0c 只是下载页面有英文 xff0c 安装后是中文的 xff0c 非常小巧 然后可能会出现缺文件头的提示 此时点击是 xff0c 然后导入一个正常录制的MP4视频 x
  • ipscan端口扫描工具

    ip端口扫描工具的英文名字是ipscan 是一款搜索局域网机器的绿色小软件 IPScan在静态IP地址环境下或者DHCP环境下 都提供完善的IP地址管理 用户也可以使用IPScanProbe自带的DHCP服务器 它能提供更高的安全和灵活的D
  • IPFS,HDFS以及http对比笔记

    分布式系统 分布式系统发展至今已有数十年 xff0c 那么分布式系统到底是什么 xff1f 实际上分布式系统并没有标准的定义 分布式系统一般的呈现方式是将硬件或软件分布在不同的网络计算机 xff0c 彼此间通过消息传递进行通信及协调 xff
  • chatgpt注意点

    1 ip地址不能是国内 2 浏览器无痕模式 xff08 浏览器不挑 xff09 3 国外的手机号激活sms 激活 20230213目前还可以注册
  • ASP.NET 连接MySQL数据库 详细步骤

    ASP NET默认的数据库是MS SQL Server xff0c 微软的数据库产品 事实上 xff0c 如果不计成本因素的话 xff0c Windows Server 43 IIS 43 MS SQL Server 43 ASP NET是
  • Apache Skywalking介绍

    Apache Skywalking介绍 1 基本介绍 Apache Skywalking是一款APM工具 xff08 Application Performance Management 应用性能管理 xff09 2 安装部署 官网地址 x
  • 常用的法律检索类网站

    1 中国裁判文书网 xff1a http wenshu court gov cn xff0c 共公布全国各级法院生效裁判文书1 2亿篇 xff0c 可以检索 查看 下载裁判文书 2 中国司法案例网 xff1a http anli court
  • 重要代码备份

    文书 xff1a button 61 document getElementsByClassName 34 a xzBox 34 for let i 61 0 i lt 61 14 i 43 43 setTimeout 61 gt butt
  • 在 Visio 绘图中剪裁线条和形状

    编辑绘图或图表 在 34 开始 34 选项卡上 xff0c 单击 34 编辑 34 组中 34 选择 34 xff0c 然后单击 列表中的 34 全 选 34 单击 34 开发工具 34 选项卡 在 34 形状设计 34 组中 xff0c
  • 定时器/计数器介绍

    第一次在学习定时器的时候模模糊糊 xff0c 在做过一些题目之后对定时器有了更新的理解 xff0c 现在整理一下 xff0c 做笔记使用 目录 一 基础知识 定时器的作用 xff1a 定时器的实质 xff1a 定时器的工作原理 xff1a