首页 > 其他分享 >关于如何设置 TMOD (定时/计数 高低 共 8 位 寄存器)

关于如何设置 TMOD (定时/计数 高低 共 8 位 寄存器)

时间:2024-06-10 21:05:24浏览次数:20  
标签:定时器 使用 模式 计数 TMOD M0 寄存器 M1

TMOD 寄存器简介

TMOD 是 8051 单片机的定时器模式寄存器。它是一个 8 位寄存器,用于配置定时器/计数器的工作模式。TMOD 的每一位有特定的含义。

TMOD 的结构如下:

GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0
  7  |  6  |  5 |  4 |  3   |  2  |  1 |  0
  • GATE (位 7 和 3):门控控制位
    • 0:不使用外部中断来启动/停止定时器
    • 1:使用外部中断来启动/停止定时器
  • C/T (位 6 和 2):计数器/定时器选择位
    • 0:定时器模式(使用内部时钟)
    • 1:计数器模式(使用外部时钟)
  • M1, M0 (位 5, 4 和 1, 0):模式选择位
    • 00:模式 0(13 位定时器)
    • 01:模式 1(16 位定时器)
    • 10:模式 2(8 位自动重装)
    • 11:模式 3(两个独立的 8 位定时器,只有定时器 0 有效)

设定步骤

  1. 选择定时器

    • 使用定时器 0,则设置 TMOD 的低 4 位。
    • 使用定时器 1,则设置 TMOD 的高 4 位。
  2. 选择模式

    • 模式 1(16 位定时器)需要将 M1, M0 设置为 01。
  3. 选择定时器/计数器模式

    • 使用定时器模式(内部时钟),将 C/T 设置为 0。
  4. 选择是否使用门控

    • 不使用门控,将 GATE 设置为 0。

例子分析

我们假设使用定时器 0,模式 1,定时器模式(内部时钟),不使用门控。

  • GATE0 (位 3):0
  • C/T0 (位 2):0
  • M1, M0 (位 1, 0):01

高 4 位用于定时器 1,不使用,所以设置为 0000。

将这些组合起来得到 TMOD 的值:

高 4 位:0000
低 4 位:0001

即:

TMOD = 0000 0001 = 0x01

实际代码

TMOD = 0x01;  // 设置定时器 0 为模式 1(16 位定时器模式)
TH0 = 0xEC;   // 高 8 位初始值
TL0 = 0x78;   // 低 8 位初始值
TR0 = 1;      // 启动定时器 0

其他模式设置示例

如果你需要设置不同的模式或使用定时器 1,可以根据上面的步骤调整:

  • 使用定时器 1,模式 2(8 位自动重装),计数器模式,使用门控:
    GATE1 | C/T1 | M1 | M0 | GATE0 | C/T0 | M1 | M0
      1   |  1   |  1 |  0 |   0   |  0   |  0 | 0
    TMOD = 1100 0000 = 0xC0
    

标签:定时器,使用,模式,计数,TMOD,M0,寄存器,M1
From: https://blog.csdn.net/weixin_53269100/article/details/139576380

相关文章

  • 一般图边覆盖计数(从洛谷博客同步)
    今天模拟赛中出现了一个题,需要对一个\(n\)个点,\(m\)条边的图做边覆盖计数,边覆盖是一个边集\(S\subseteqE\)使得任意一个点\(i\)都存在一条边\((u,v)\inE\)满足\(u=i\)或\(v=i\),即覆盖所有的点。\(n\leq40,m\leq60\),1s512M。然后被我使用神秘做法冲过去了(然后莫......
  • 一文搞懂 ARM 64 系列: 寄存器
    ARM64中包含多种寄存器,下面介绍一些常见的寄存器。1通用寄存器ARM64包含31个64bit寄存器,记为X0~X30。每一个通用寄存器,它的低32bit都可以被访问,记为W0~W30。在这31个通用寄存器中,有2个寄存器比较特殊。X29寄存器被作为栈帧寄存器,也被称为FP(FramePointerRegister)。X3......
  • 计数问题(普及)
    描述试计算在区间[1,n]的所有整数中,数字x(0<=x<=9)共出现了多少次?例如,在1到11中,即在1、2、3、4、5、6、7、8、9、10、11中,数字1出现了4次。输入描述共1行,包含2个正整数n、x,之间用一个空格隔开。输出描述共一行,包含一个整数,表示x出现的次数。用例输入1111用例输出14......
  • 计数排序(排序终篇)
    1.计数排序2.排序的稳定性1.计数排序1.1计数排序的概念计数排序就是把要排序的数组的里面的数据在有序的数组中记录次数,每个数据有多少个就在另一个数组(有序的)上对应的位置加多少,有俩个2就在有序的数组下标2的位置标2,最后把有序数组的元素按顺序一个一个搬过来,这样就把......
  • 慢慢写 十二重计数法
    \(n\)球\(m\)​盒。谁家数学答题卡。\(\text{I}\):球之间互不相同,盒子之间互不相同。每个球\(m\)种放法,\(n^m\)。\(\text{II}\):球之间互不相同,盒子之间互不相同,每个盒子至多装一个球。\(n>m\)则\(0\)。\[\binom{m}{n}n!=\frac{m!}{n!(m-n!)}n!=\frac{m!}{(m......
  • JVM之GC篇:(一)引用计数与可达性分析
    文章目录0x00前言0x01引用计数0x02可达性分析0x03总结0x00前言GC的第一步就是要判断出哪些对象需要被回收。显然易见的是,当一个对象不再被使用后,那么就需要对其进行回收。那么问题就是,如何判断对象是否被使用?本文将介绍两种算法来判断对象的使用情况。0x01引......
  • 利用西门子DQ模块控制移位寄存器,模拟串行通信
    1.背景以前了解过串行通信的方法但是没有详细了解过具体实现。趁着手上有的一堆破铜烂铁尝试自己去实现一个最简单的串行控制。目的是通过移位寄存器的不同位的表达,达到2*2=4个的继电器管断组合,达到切换矩阵的目的。这里只记录一下程序实现,不记录硬件电路。2.材料移位寄......
  • 标志寄存器
    标志寄存器EFLAGS寄存器 1.进位标志CF运算结果的最高位产生进位或者借位,那么CF=1注:前提是要确定数据宽度2.奇偶标志PF反映运算结果中'1'的个数,若个数为偶PF=1,为奇则PF=0注:结果转为二进制,数1的个数3.辅助进位标志AF1)在字操作时,发生低字节向高字节进位或者借位时,AF=12)......
  • 8086 汇编笔记(十):标志寄存器
    前言一、ZF标志ZeroFlag,零标记位。用于记录相关指令执行后,其结果是否为0。如果结果为0,则ZF=1,如果结果非0,则ZF=0 movax,1subax,1;ZF=1movax,2subax,1;ZF=0二、PF标志ParityFlag,奇偶标记位。它用于记录相关指令执行后,其结果的所有bit位中1的个......
  • 51单片机学习记录-06-LED点阵屏(74HC595移位寄存器)
    1 74HC595是串行输入并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于IO口扩展。2 74HC595原理图上升沿移位SERCLK,上升沿锁存RCLK点阵屏MATRIX函数sbitRCK=P3^5; //RCLKsbitSCK=P3^6; //SRCLKsbitSER=P3......