首页 > 其他分享 >定时器的认识

定时器的认识

时间:2024-06-18 16:05:26浏览次数:22  
标签:定时器 周期 认识 计数器 TMOD 寄存器 时钟

目录

定时器

定时器怎么定时

定时器编程

定时器控制led一秒亮灭

定时器知识点补充


定时器

简介 :C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器 或者计数器使用。 确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使 用时,每经过1个机器周期,计数存储器的值就加1。而当配置为计数器时,每来一个负跳变信号 (信号从P3.4 或者P3.5引脚输入),就加1,以此达到计数的目的。 标准C51有2个定时器/计数器:T0和T1。他们的使用方法一致。C52相比C51多了一个T2。

概念:

定时器和计数器,电路一样。

定时或者计数的本质就是让单片机某个部件数数。

当定时器用的时候,靠内部震荡电路数数。

当计数器用的时候,数外面的信号,读取针脚的数据。

定时器怎么定时

定时器的本质原理: 每经过一个机器周期,就加1 :寄存器。

什么是晶振        11.0592Mhz = 11059.2Khz=11059200hz

晶振(晶体震荡器),又称数字电路的“心脏”,是各种电子产品里面必不可少的频率元器件。数字电 路的所有工作都离不开时钟,晶振的好坏、晶振电路设计的好坏,会影响到整个系统的稳定性。

什么是时钟周期   1个时钟周期 =  晶振的倒数 1/11059200 秒

时钟周期也称为 振荡周期,定义为 时钟频率的 倒数。时钟周期是计算机中最基本的、最小的 时间单 位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。更小的时钟周 期就意味着更高的工作频率。

什么是机器周期 

机器周期也称为CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶 段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为 机器周期。一般情况下,一个机器周期由若干个时钟周期组成。

查找手册

1个机器周期 = 12个时钟周期

加1经过了多少时间:

机器周期 = 12 x 时钟周期 =12 x (1/时钟频率) 秒 = 12 / 时钟频率 秒 = 12 / 11059200 秒 = 12 000 000 / 11059200 微秒 = 1.085 微秒

定时器编程

单片机内有两个可编程的定时/计数器 T0、T1 和一个特殊功能定时器 T2。

T0和T1各自拥有一组独立的寄存器来存储其计数值,包括TH0/TL0(T0的高8位和低8位)和TH1/TL1(T1的高8位和低8位)。

在哪里加1,最大计数时间,也就是爆表(定时器寄存器是16位的,由THx和TLx两个8位寄存器组成。当定时器从初始值开始计数,直到达到其最大值(即65535,对应于16位二进制数的全1状态)时,会发生溢出。)了能计算多长间?

在TH0/1和TL0/1寄存器中加1,默认是从0开始数数,最多能数65536下(2的16次方),累计计时71ms(65536*1.085);

如何算出10ms定时器的初值?

就不让他从0开始数数,10ms需要数9216(10/1.085)下,你让他从65536-9126=56320(16进制表示为 0xDC00)开始数数 这样TL0=0x00;TH0=0xDC;

1.怎么知道爆表?

TCON寄存器的bit5(TF0)能表示爆表:当爆表的时候,硬件会修改bit5(TF0)位上面的数据,改成 1(置1),如果不用中断,我们代码清零。

2.怎么开始计时?

TCON寄存器的bit4,通过编程让这个位为1的时候,开始计时,相当于按下了闹钟。

3.定时器使用是有很多种模式

  1. GATE位(门控位)
    • GATE=0时:仅由TCON寄存器中的TR0或TR1位控制定时器的启动。只要TR0或TR1为1,定时器就会开始工作。
    • GATE=1时:除了TCON寄存器中的TR0或TR1位外,还需要外部引脚(INT0或INT1)为高电平,定时器才会开始工作。
  2. C/T位(功能选择位)
    • C/T=0时:定时器工作在定时模式。
    • C/T=1时:定时器工作在计数模式。
  3. M0和M1位(方式选择功能)
    • M1M0的工作方式选择有四种:
      • 00:方式0,13位计数器。TMOD设置为0x00。
      • 01:方式1,16位计数器。TMOD设置为0x01。
      • 10:方式2,自动重装8位计数器。TMOD设置为0x02。
      • 11:方式3,T0分为两个独立的8位计数器,T1为无中断重装8位计数器。TMOD设置为0x03。

定时器控制led一秒亮灭

定时器知识点补充

了解一种常用于二进制到十六进制转换的方法(8421法),它基于十六进制每一位(从右到左)对应的二进制权重是 1, 2, 4, 8(即 20, 21, 22, 23)。这种方法允许我们将每4位二进制数直接转换为对应的十六进制数字。

下面是一个具体的例子:

假设我们有一个二进制数 10110100,我们想要将其转换为十六进制数。

  1. 将二进制数分组(如果位数不足,则在左边补零):0010 1101 00(注意我们在最左边补了两个零以达到8位,但因为我们只关心每4位一组,所以只需要看前两组)。
  2. 对每一组应用 "8421法":
    • 第一组 0010:0×8 + 0×4 + 1×2 + 0×1 = 2(对应的十六进制数字是 2)
    • 第二组 1101:1×8 + 1×4 + 0×2 + 1×1 = 13(但13在十六进制中表示为 D)
  3. 将得到的十六进制数字从左到右排列:2D

之前我们了解了TMOD的模式选择,但是在STC-ISP软件中TMOD的模式选择运用了按位操作:

理解1:

TMOD &= 0xF0;

这行代码使用了按位与(bitwise AND)操作符&=。它将TMOD寄存器的当前值与0xF0(二进制11110000)进行按位与操作。结果是TMOD的高四位保持不变,而低四位都被清零(设置为0)。这通常用于清除TMOD的低四位,以便为接下来的操作设置这些位。

TMOD |= 0x01;

这行代码使用了按位或(bitwise OR)操作符|=。它将TMOD寄存器的当前值(经过上一步操作后,其低四位已经是0)与0x01(二进制00000001)进行按位或操作。由于0与任何数进行按位或操作结果都是该数本身,而1与任何数进行按位或操作结果都是1(只要对应位上有1),所以这行代码实际上是将TMOD的最低位(D0)设置为1,而不影响其他位。

综合这两行代码,它们的效果是:清除TMOD的低四位,并将最低位(D0)设置为1。这通常用于配置TMOD寄存器以设置定时器/计数器的特定模式。不过,要注意的是,这里只设置了T0的模式位(D0和D1),而T1的模式位(D4和D5)没有被改变,它们保持之前的值。

如果你想要设置T0为模式1(16位定时器/计数器),并且假设T1的模式保持不变,你可能需要这样做:

因为模式1在TMOD中对应于M1=1, M0=0,其二进制表示为00000010(即0x02)。

理解2:

配寄存器推荐用按位操作,清零的时候,对应的需要清零的位与上0,不需要清零的位与上1。

置1的时候,需要置1的位置或1,不需要置一的位置或0。

标签:定时器,周期,认识,计数器,TMOD,寄存器,时钟
From: https://blog.csdn.net/2301_76378962/article/details/139744714

相关文章

  • 专业程序员进阶之路:认识设计
    专业程序员进阶之路:认识设计设计是什么设计就是构思一套方案,将软件规格说明书的要求转变为可运行的软件的过程。设计将需求和编码连接在一起。设计有时候可能不是一项明确的活动,但是在项目过程中一直都存在,只是设计进行的程度或深或浅。大型项目可能有特定的正式设计阶段,由专......
  • Linux 内核定时器实验
    Linux内核定时器实验内核时间管理简介Linux内核中有大量的函数需要时间管理,比如周期性的调度程序、延时程序、对于我们驱动编写者来说最常用的定时器。硬件定时器提供时钟源,时钟源的频率可以设置,设置好以后就周期性的产生定时中断,系统使用定时中断来计时。中断周期性产生的频......
  • 快手大数据面试SQL-用户中两人一定认识的组合数
    本文首发在数据仓库技术,网站种整理了几十篇各大公司大数据开发岗位、数据仓库、数据分析相关岗位实际面试SQL题目,并给出了对应的参考答案。快手大数据面试SQL-用户中两人一定认识的组合数.一、题目有某城市网吧上网记录表,包含字段:网吧id,访客id(身份证号),上线时间,下线时间......
  • 定时器寄存器1
    文章目录定时器工作方式选择寄存器TMODTMOD的各位定义工作方式选择位定时器工作方式选择寄存器TMODTMOD的各位定义工作方式选择位......
  • STM32定时器篇——Systick定时器的使用(实现delay延时函数)
    一、Systick定时器的简介:        Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器对于CM3,CM4内核芯片,都有Systick定时器。当Systick计到0时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在......
  • 认识 Java 里的线程和方法
    Thread和Runnable的区别Thread才是Java里对线程的唯一抽象,Runnable只是对任务(业务逻辑)的抽象。Thread可以接受任意一个Runnable的实例并执行启动线程的方式有:1、XextendsThread;,然后X.start2、XimplementsRunnable;然后交给Thread运行永远都只有thread.star......
  • 认识与学习JSP
    JSP核心技术什么是JSPJSP全称是JavaServerPages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP/Servlet规范。JSP实际上就是ServletJSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页......
  • 认识和使用minio
    什么是minio?minio是一个基于ApacheLicensev2.0开源协议的轻量对象存储服务,兼容亚马逊S3接口,号称目前速度最快,在标准硬件上,对象存储的读/写速度最高可以高达183GB/s和171GB/s。官网文档地址:https://docs.min.io/cn/部署使用minio服务端#下载Minio服务器二进制文件wgeth......
  • js之操作元素属性和定时器以及相关案例倒计时
    这里写目录标题一级目录二级目录三级目录WebAPIs01四、操作元素属性1.操作元素常用属性2.操作元素样式属性通过style属性操作css1.修改样式通过style属性引出2.如果属性有-连接符,需要转换为小驼峰命名法3.赋值的时候,需要的时候不要忘记加css单位通过className操作css......
  • 队列结构认识
    目录什么是队列?消息处理的触发机制异步消息队列的概念常见的异步消息队列框架什么是队列?队列数据结构的特点:跟排队一样:先进先出。队列的应用场景:一般在业务中,常常把队列作为一种中间件服务,比如当要处理大量消息的时候,往往是把这些消息放入一个队列存储,这时并不需要立即对它......