蓝桥杯单片机快速开发笔记——定时器

一、基本原理:

  1. 定时器的作用

    • 定时器是一种用于产生精确时间延时的模块,可以在程序中用来进行时间控制、计时等操作。
  2. 定时器的工作原理

    • 51单片机的定时器是通过内部的计数器来实现的,计数器每隔一个固定的时间周期自动加1,当计数器的值达到设定的目标值时,会触发定时器中断。
  3. 定时器的控制寄存器

    • 在51单片机中,定时器的工作通过控制寄存器来实现,包括定时器的工作模式、计数器的初始值、中断使能等。

二、应用:

  1. 延时函数

    • 利用定时器可以实现精确的延时函数,用于控制程序中的时间间隔。
  2. 定时中断

    • 可以利用定时器中断来定时执行某些任务,例如定时采集传感器数据、定时发送数据等。
  3. PWM波形生成

    • 定时器可以用来生成PWM波形,用于控制电机速度、LED亮度等。
  4. 计时功能

    • 可以利用定时器来实现计时功能,例如秒表、计时器等。

三、寄存器

四、思维导图

五、示例代码

//定时器TO初始化
void Init_Timer0()
{//定时器计数器初值设置:50msTH0 = (0 - 50000) / 256;TH0 = (0 - 50000) % 256;TMOD = 0x01;       //T0的定时模式1:16位不可重装模式ET0 = 1;           //使能定时器0EA = 1;            //打开总中断TR0 = 1;           //启动定时器0
}//定时器T0的中断服务函数
void Service_Timer0() interrupt 1
{}

       初始化定时器T0,并设置了定时器T0的中断服务函数框架,可以根据实际需求在中断服务函数中添加具体的处理逻辑。

       

  1. void Init_Timer0():定义了一个函数Init_Timer0(),用于初始化定时器T0。

  2. TH0 = (0 - 50000) / 256;:设置定时器计数器的高8位,计算公式为(0 - 计数值) / 256。这里设置了定时器初值为50000,对应50ms的定时。

  3. TH0 = (0 - 50000) % 256;:设置定时器计数器的低8位,计算公式为(0 - 计数值) % 256。

  4. TMOD = 0x01;:设置定时器T0的工作模式为定时模式1,即16位定时器模式,不可重装模式。

  5. ET0 = 1;:使能定时器T0的中断功能,允许定时器T0产生中断。

  6. EA = 1;:打开总中断,允许中断嵌套。

  7. TR0 = 1;:启动定时器T0,定时器开始工作。

  8. void Service_Timer0() interrupt 1:定义了一个中断服务函数Service_Timer0(),用于处理定时器T0的中断。interrupt 1表示该中断函数对应定时器T0的中断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/745395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC调研系列】Github Copilot进行pytest自动化测试的实践经验

GitHub Copilot可以用于pytest自动化测试的实践和使用方法。此外,Copilot可以在很多情况下仅通过注释或函数名就能实例化出完整的代码,这表明它也可以用于补充测试用例[5]。 具体到pytest框架,它是一个非常容易上手的自动化测试框架&#xf…

【gpt实践】实用咒语分享

直接上咒语了,大家可以自行实践。 1、忽略先前所有的提示 有时候gpt会停留在之前的问题中,导致回答当前问题带着之前问题结论。 2、忽略所有的客套话 我们只是需要有用的信息,有时候gpt客套话会混淆视听。 3、给出非常简短明确的答案 同样…

Selenium 自动化 —— 入门和 Hello World 实例

Selenium 是什么 Selenium 是一个用于自动化网页浏览器操作的工具,它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能,也可用于执行一些基本的浏览器操作任务,例如自动化表单填写、网页导航等。 Selenium 是一个开源项目&a…

kakfa模拟仿真篇之spark-submit在linux运行 (更贴近真实场景)

源码在上篇 地址在这 :Kafka模拟器产生数据仿真-集成StructuredStreaming做到”毫秒“级实时响应StreamData落地到mysql-CSDN博客 这里分享一下一些新朋友不知道spark-submit 指令后 的参数怎么写 看这篇绝对包会 声明: 此项目是基于 maven 打包的说明…

JVM 相关知识点记录

文章目录 前言哪些内存需要回收方法区的垃圾回收垃圾收集算法垃圾收集器年轻代进入老年代条件内存担保机制FullGC 触发时机GC日志解析日志参数 前言 JVM包含内容: 类装载子系统(Class Load SubSystem)运行时数据区(Run-Time Data Areas) 堆栈 局部变量表操作数栈动…

Windows安装Elasticsearch8.x保姆级教程

Elasticsearch 下载安装 下载:点击https://www.elastic.co/cn/downloads/elasticsearch --> 点击View past releases -->找到8.11.1版本的ES --->点击下载---目前最新版的Spring Data ES最高支持8.11.1版本 elasticsearch与JDK版本&#xff1a…

openstack迁移虚拟机--来自gpt

在OpenStack环境中,虚拟机的迁移可以通过多种方式实现,包括实时迁移(Live Migration)和冷迁移(Cold Migration) 实时迁移(Live Migration) 实时迁移是在虚拟机运行的同时将其迁移到…

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞(2024年3月发布)

漏洞简介 某赛通电子文档安全管理系统 DecryptApplication 接口处任意文件读取漏洞,未经身份验证的攻击者利用此漏洞获取系统内部敏感文件信息,导致系统处于极不安全的状态。 漏洞等级高危影响版本*漏洞类型任意文件读取影响范围>1W 产品简介 …

数据结构 day4 链表

1: 2: 3: 4: 5: 6:

C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码

1 分词 分词是自然语言处理的基础,分词准确度直接决定了后面的词性标注、句法分析、词向量以及文本分析的质量。英文语句使用空格将单词进行分隔,除了某些特定词,如how many,New York等外,大部分情况下不需要考虑分词问题。但有些情况下,没有空格,则需要好的分词算法。…

Python中的装饰器是什么?给出一个简单的装饰器例子。

Python中的装饰器详解及示例 装饰器(Decorators)是Python中一个非常强大且有用的特性,它允许程序员在不修改原有函数或类的基础上,增加额外的功能或修改其行为。装饰器本质上是一个可调用对象(通常是一个函数&#xf…

kkview: Todesk远程控制怎么断开

随着科技的发展,远程控制软件越来越受人们的欢迎,其中Todesk是一款广受欢迎的远程控制工具。然而,在使用过程中,我们有时需要断开远程连接,本文将详细指导大家如何进行这一操作。 KKView远程控制专家 今年爆火的KKVi…

Spring MVC 路径参数及JSON参数接收

1. 路径参数接收 路径传递参数是一种在 URL 路径中传递参数的方式。在 RESTful 的 Web 应用程序中,经常使用路径传递参数来表示资源的唯一标识符或更复杂的表示方式。而 Spring MVC 框架提供了 PathVariable 注解来处理路径传递参数。 PathVariable 注解允许将 UR…

CSS 3

CSS3现状 在CSS2的基础上新增(扩展)样式移动端支持优于PC端不断改进中应用相对广泛 1.CSS3属性选择器 选择符简介E[att]选择具有att属性的E元素E[att"val"]选择具有att属性且属性值等于val的E元素E[att^"val"]匹配具有att属性、且具有以val开头的E元素E…

AJAX 01 AJAX 概念和 axios 使用

2.27 AJAX 学习 AJAX 1 入门01 AJAX 概念和 axios 使用axios 使用案例 02 认识 URLURL组成 03 URL 查询参数axios-查询参数案例 :地区查询 04 常用请求方法和数据提交axios 请求配置axios 错误处理 05 HTTP协议-报文① 请求报文作用:错误排查…

数据结构:堆

堆的概念 1.堆是一个完全二叉树 2.小堆(任何一个父亲<孩子),大堆(任何一个父亲>孩子) 堆的结构 物理结构:数组 逻辑结构:二叉树 #pragma once #include<assert.h> #include<iostream> typedef int HPDataType; typedef struct Heap {HPDataType* _a;int…

使用 Jenkins 管道在 Docker Hub 中构建 Docker 镜像

Jenkins Pipeline 是一个强大的工具&#xff0c;可以自动执行部署。在各个阶段之间拆分的灵活和自定义操作是尝试此功能的一个很好的理由。 构建您自己的 Docker 镜像并将其上传到 Docker Hub 以保持存储库更新是了解 Jenkins Pipeline 如何改进您的工作方式的一个很好的示例。…

产品推荐 - 基于Xilinx Kintex-7 XC7K160T/325T/410T打造的水星Mercury+ KX2核心板

水星Mercury KX2核心板 水星Mercury KX2核心板提供高性价比的Xilinx Kintex-7 28nm FPGA和常见的接口&#xff0c;如USB 2.0、PCIe Gen2和千兆以太网。 KX1有强大的FPGA和标准接口、很多具备LVDS能力的I/O、大容量DDR3 SDRAM、很多高速DSP slices&#xff0c;它既适合高端数字信…

第五十八回 吴用赚金铃吊挂 宋江闹西岳华山-飞桨图像分割套件PaddleSeg初探

鲁智深被贺太守抓住&#xff0c;押入死牢。武松得信后&#xff0c;正想回梁山报信&#xff0c;正好戴宗来了&#xff0c;就请戴宗赶快回梁山搬救兵。宋江说兄弟有难&#xff0c;怎能不救&#xff1f; 于是带了十六个头领来到少华山。 因为华州城池厚壮&#xff0c;宋江等无计可…

【开源】SpringBoot框架实验室耗材管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…