51单片机定时/计数器相关知识点
51单片机定时/计数器相关知识点
结构组成
51单片机的定时/计数器中有两个寄存器:
- T0:低位:TL0(字节地址8AH)高位:TH0(字节地址8CH)
- T1:低位:TL1(字节地址8BH)高位:TH1(字节地址8DH)
他们的控制通过两个特殊功能寄存器实现, 其中:
- TMOD定时方式控制寄存器:确定定时/计数器的工作方式和功能
- TCON定时控制寄存器:管理T0,T1的启停、溢出、中断
两个定时器都有一根连接外部的引脚P3.4,P3.5,用于接入外部计数脉冲信号。
当软件设置T0或T1启动定时/计数器后,他们会由硬件自动运行。无需CPU干预,直到计数器溢出后才会通过中断让CPU进行后续的处理。
定时/计数器的控制
TMOD定时方式控制寄存器
以下是TMOD的寄存器组成:
下面是对其中每一位的说明:
位 | 符号 | 功能 |
---|---|---|
TMOD.7 | GATE | TMOD.7控制定时器1,置1时只有在 I N T 1 ‾ \overline {INT1} INT1脚为高及TR1控制位置1时才可打开定时器/计数器1。 |
TMOD.3 | GATE | TMOD.7控制定时器1,置1时只有在 I N T 0 ‾ \overline {INT0} INT0脚为高及TR1控制位置1时才可打开定时器/计数器1。 |
TMOD.6 | C/ T ‾ \overline {T} T | TMOD.6控制定时器1用作定时器或计数器,清零则用作定时器(从内部系统时钟输入),置1用作计数器(从T1/P3.5脚输入) |
TMOD.2 | C/ T ‾ \overline {T} T | TMOD.2控制定时器0用作定时器或计数器,清零则用作定时器(从内部系统时钟输入),置1用作计数器(从T0/P3.4脚输入) |
TMOD.5/TMOD.4 | M1 M0 | 定时器/计数器1模式选择 |
TMOD.1/TMOD.0 | M1 M0 | 定时器/计数器0模式选择 |
定时/计数器的模式选择,其对应模式如下:
T1定时器:
M1 | M0 | 模式 |
---|---|---|
0 | 0 | 13位定时器/计数器,兼容8048定时模式,TL1只用低5位参与分频,TH1整个8位全用。 |
0 | 1 | 16位定时器/计数器,TL1、TH1全用 |
1 | 0 | 8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1 |
1 | 1 | 定时器/计数器1此时无效(停止计数) |
T0定时器:
M1 | M0 | 模式 |
---|---|---|
0 | 0 | 13位定时器/计数器,兼容8048定时模式,TL0只用低5位参与分频,TH0整个8位全用。 |
0 | 1 | 16位定时器/计数器,TL0、TH0全用 |
1 | 0 | 8位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0 |
1 | 1 | 定时器0此时作为双8位定时器/计数器。TL0作为一个8位定时器/计数器,通过标准定时器0的控制位控制。TH0仅作为一个8位定时器,由定时器1的控制位控制 |
定时/计数器的工作方式
方式1
这里不介绍具体原理,读者知道以下几点即可:
- M1M0 = 01时,定时/计数器工作在方式1状态
- 这个状态下满计数值为216
- T1和T0两个定时/计数器在方式1方面没有区别
- 当C/ T ‾ \overline {T} T = 0时,为定时器工作方式
- GATE的作用实际上是是否设置外部引脚控制定时,如果它为0,那么定时/计数器的开与关只与TR的状态有关
- 当C/ T ‾ \overline {T} T = 1时,为计数器工作方式
- 处在计数器工作方式时,以该定时器对应的引脚的负脉冲作为计数信号
- 最高计数频率为(1/24)fOSC
关于定时/计数器的初值a与定时时间t的关系:
t = ( 2 16 − a ) ⋅ 12 / f O S C t = ( 2^{16} - a ) \cdot 12/ f_{OSC} t=(216−a)⋅12/fOSC
因此,当时钟频率为12MHz时,方式1的定时范围为1~65536μs
计数器初值a与计数值N的关为:
N = 2 16 − a N = 2^{16} - a N=216−a
因此,方式1的计数范围为1~65536个脉冲
方式2
当M1M0 = 10 时,定时/计数器工作于方式2
需要知道的有:
- TLx(这里的x可以为0或者1,表示定时/计数器1或者0中的低八位寄存器)作为计数器,计满数值为28
- THx记录TLx的初值,当TLx满时,由硬件自动将TLx的值还原为THx中的值
- THx中的初值是由软件赋值的
定时方式2的定时时间t和计数初值分别按下式计算:
t = ( 2 8 − a ) ⋅ 12 / f O S C a = 2 8 − t ⋅ f O S C / 12 t = (2^8 - a) \cdot 12 / f_{OSC} \\ a = 2^8 - t \cdot f_{OSC} /12 t=(28−a)⋅12/fOSCa=28−t⋅fOSC/12
方式2可以产生非常精确的定时时间,适合作用于串行口波特率发生器
计数初值a与计数值N的关系为:
N = 2 8 − a N = 2^8 - a N=28−a
方式0
当M1M0 = 00 时,定时/计数器工作于方式0
需要知道的有以下几点:
- 方式0采用低5位TLx和高8位THx组成13位的加1计数器
- 满记数值为213
- 初值不能自动重装
- TLx中的高三位是无效的,可以为任意值
方式0的定时时间t与计数初值a分别按照下式计算:
t = ( 2 13 − a ) ⋅ 12 / f O S C a = 2 13 − t ⋅ f O S C / 12 t = (2^{13} - a) \cdot 12 / f_{OSC} \\ a = 2^{13} - t \cdot f_{OSC}/12 t=(213−a)⋅12/fOSCa=213−t⋅fOSC/12
计数初值a与计数值N的关系为:
N = 2 13 − a N = 2^{13} - a N=213−a
方式3
当M1M0 = 11时,定时/计数器工作于方式3
方式3与其他方式不同,方式3时,单片机可以组合出3种定时/计数器关系:
- TH0 + TF1 + TR1 组成带有中断功能的8位定时器
- TL0 + TF0 + TR0 组成带有中断功能的8位定时/计数器
- T1 组成的无中断功能的定时/计数器
相关文章:

51单片机定时/计数器相关知识点
51单片机定时/计数器相关知识点 结构组成 51单片机的定时/计数器中有两个寄存器: T0:低位:TL0(字节地址8AH)高位:TH0(字节地址8CH)T1:低位:TL1(…...

机器视觉兄弟们,没有项目订单,机器视觉项目行业难题来了
产品没一个正形,光源像是打了几十年的光棍一样,偏偏配不上,n次“相亲”之后图像硬是“阴晴圆缺”,老板阴阳怪气你这打不出来,给客户看之后说,这都打不出来,你们不行啊。 我听了后真想ÿ…...

机器人开发--动力系统
机器人开发--动力系统 1 介绍概述BMS电池管理芯片系电源管理细分赛道,主要产品形态包括电池计量(电量计)、电池安全、充电管理等三大类芯片BMS 产业链动力电源、消费电子细分领域 BMS 芯片种类、技术及下游销量概览 电池电池包典型产品及参数…...

51单片机四位数码管计算器 Proteus仿真程序
目录 概要 仿真图 部分代码 资料下载地址:51单片机四位数码管计算器 Proteus仿真程序 概要 1.系统通过4x4的矩阵键盘输入数字及运算符。 2.可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E 3.可以进行加法以外…...
问题 B: 分牌
题目描述 有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若干张纸牌,然后移动。 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上…...

3元一平方公里的在线卫星影像
我们为大家分享了免费下载卫星影像的方法。 但让人遗憾的是,该影像的最高分辨率只有10米,需要更高清且比较新的卫星影像,看来还是得付费购买才比较靠谱。 自助选择区县范围 商业卫星影像主要面向企事业单位,一般来讲都比较贵&a…...

只会用 xxl-job?更强大的新一代分布式任务调度框架来了!
前言 PowerJob是新一代分布式任务调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,能让您轻松完成作业的调度与繁杂任务的分布式计算。 文章来源:https://blog.csdn.net/LY_624/…...

LeetCode-无重复字符的最长子串(3)
题目描述: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 代码: class Solution {public int lengthOfLongestSubstring(String s) {Set<Character> occnew HashSet<Character>();int lens.length();int…...

【C#】知识点实践序列之Lock简单解决并发引起数据重复问题
欢迎来到《小5讲堂之知识点实践序列》文章,大家好,我是全栈小5。 这是2024年第3篇文章,此篇文章是C#知识点实践序列文章,博主能力有限,理解水平有限,若有不对之处望指正! 本篇在Lock锁定代码块基…...
NLP基础——TF-IDF
TF-IDF TF-IDF全称为“Term Frequency-Inverse Document Frequency”,是一种用于信息检索与文本挖掘的常用加权技术。该方法用于评估一个词语(word)对于一个文件集(document)或一个语料库中的其中一份文件的重要程度。…...
kubernetes(四)
文章目录 1. 持久化存储1.1 HostPath1.2 NFS1.3 PV和PVC 1. 持久化存储 1.1 HostPath hostpath:多个容器共享数据,不能跨宿主机,如果宿主机挂了,在其他宿主机上起pod,那么之前的数据就没有了 spec:nodeName: 10.0.0…...

安科瑞变电站综合自动化系统在青岛海洋科技园应用——安科瑞 顾烊宇
摘 要:变电站综合自动化系统是将变电站内的二次设备经过功能的组合和优化设计,利用先进的计算机技术、通信技术、信号处理技术,实现对全变电站的主要设备和输、配电线路的自动监视、测量、控制、保护、并与上级调度通信的综合性自动化功能。 …...

紫光展锐5G扬帆出海 | 欧洲积极拥抱更多5G选择
和我国一样,欧洲不少国家也在2019年进入5G商用元年:英国在2019年5月推出了5G商用服务,该国最大的移动运营商EE(Everything Everywhere)最先商用5G;德国在2019年年中推出5G商用服务,德国电信、沃达丰和 Telefonica是首批…...

Open3D聚类算法
按照官网的例子使用聚类,发现结果是全黑的。 经过多次测试发现 eps3.3, min_points1这里是关键 min_points必须等于1否则无效果 import time import open3d as o3d; import numpy as np; import matplotlib.pyplot as plt#坐标 mesh_coord_frame o3d.geometry.Tria…...

swing快速入门(三十九)进度对话框
🎁注释很详细,直接上代码 🧧新增内容 🧨1.模拟耗时操作 🧨2.使用计时器更新进度对话框 🎀源码: package swing31_40;import javax.swing.*; import java.awt.event.ActionEvent; import java.aw…...
Oracle-存储过程
简介 存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,它大大提高了SQL语句的功能和灵活性。存储过程编译后存储在数据库中,所以执行存储过程比执行存储过程中封装的SQL语句更有效率。 语法 存储过程: 一组为了完成某种特定功能的sql语句…...

L1-085:试试手气
我们知道一个骰子有 6 个面,分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态,即它们朝上一面的点数,让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙,每次摇出的结果都满足以下两个条件: 1、每个骰子摇出…...

nginx+keepalived实现七层负载
目录 一、部署nginx01、nginx02 二、keepalived配置(抢占模式、master- backup模式) 三、测试 四、非抢占模式(backup-backup模式) nginx01 11.0.1.31nginx0211.0.1.32虚拟IP(VIP)11.0.1.30 一、部署ngin…...

机器人制作开源方案 | 智能盲道除雪小车
作者:汪荣顺 李明旭 马晓乐 吴泽俊 李以陈 单位:江汉大学 指导老师:张朝刚 张会利 本文论述了一种新型智能盲道除雪小车的设计与研发。由于目前的除雪设备集中在公路、城市道路、机场路面、高速公路等领域,但对于街道等路况的研…...
Mypy: 把静态类型检查带给Python
之前我们介绍过,Python作为一门动态语言,为人诟病的缺点之一,就是难以像java那样,支持静态类型检查,这样会把一些错误带到运行中(如果你不进行单元测试的话)。 不过,随着type hint的推开,实际上现在Python已经有了比较充分的静态类型检查。这一章我们先介绍其它Lint工…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...