当前位置: 首页 > news >正文

[蓝桥杯单片机8]定时器的简单应用

1、本实验内容

利用51单片机的定时/计数器T0模式1实现间隔定时,每隔1L1指示灯闪烁一下,也就是点亮0.5秒,熄灭0.5秒;每隔2L8指示灯闪烁一下,即点亮1秒,熄灭1秒。

 2、基础知识

        定时/计数器,是一种能够队内部时钟信号或者外部输入信号进行计数,当计数值到达设定值时,向cpu发出中断处理请求,从而实现定时或者计数功能的外设。

        作为定时器:计数信号的来源选择周期性的内部时钟信号脉冲。

        作为计数器:计数信号来源选择非周期性的外部输入信号。

        51单片机有两个定时/计数器T和T1,为16位加法计数器,由低8位TLx和高8位THx两个寄存器组成,最大计数值为65535个计数脉冲。
        该加1计数器的计数脉冲来源有2个:

                        <1> 系统时钟振荡器输出的12分频。
                        <2>TO或T1引脚输入的外部脉冲信号。
        每接收到一个计数脉冲,计数器就会加1,当计数值累计至全为1时 (8位255,13位8191,16位65535),再输入一个D计数脉冲。计数器便会溢出回零,并且计数器的溢出是TCON寄存器的TFO或TF1位置1。同时向内核提出中断请求。如果定时/计数器工作于定时模式,则表示间隔定时时间到,如果工作与计教模式,则表示计新值已满。

        假设单片机的外部晶振为12MHZ,那么,经过12分频后输入计数器的计数脉冲为1MHZ,即每个脉冲的周期为1us。因此定时器TO的16位工作模式最大的定时时间为65535us,65.5ms。如果要定时10ms的话,计数器就不能够从0开始计数了,必须给它一个计数初值。怎么计算这个初值呢?

例如:要定时10ms,则相当于计数10000个脉冲后计数器的值就到达65535了,那么开始计数的这个地方就是计数初值
                65535 - 10000 = 55535 = 0xd8ef
        把这个计算得到的初值写入THO和TLO寄存器即可:
        TH0= 0xd8;或者 TH0 = (65535 - 10000) / 256;
        TL0 = 0xef; 或者 TL0 = (65535 - 10000) % 256

3、编程思路

在定时/计数器的程序设计中,通常有两个函数: 初始化函数中断服务函数

初始化函数中,一般需要进行以下几个配置:
        <1>配置工作模式,即对TMOD寄存器编程。
        <2>计算技术初值,即对THx和TLx寄存器进行赋值。
        <3>使能定时/计数器中断,即ET0或ET1置1。
        <4> 打开总中断,即EA =1。
        <5>启动定时器,即TRO或TR1置1。
中断服务函数中,一般需要进行以下的编程:
        <1>如果不是自动重装模式,需要对THx和TLx重新赋值。
        <2> 进行间隔定时到达的逻辑处理(越少越好)。
        其程序框架和代码编写基本上差不多:

4、代码展示

/**************************************************************
利用51单片机的定时/计数器T0的模式1实现间隔定时,
每隔1秒L1指示灯闪烁一下,即点亮0.5秒,熄灭0.5秒;
每隔10秒L8指示灯闪烁一下,即点亮1秒,熄灭1秒。
*************************************************/#include "reg52.h"sbit L1 = P0^0;
sbit L8 = P0^7;//=============定时器初始化及中断服务函数====================
void InitTimer0()         //50ms
{TMOD = 0x01;	                 //配置工作模式00000001;//由TR0和TR1启动定时器;定时功能//16位定时/计数器最大值65535TH0 = (65535 - 50000) / 256;	 //计算计数初值,10msTL0 = (65535 - 50000) % 256;ET0 = 1;						 //使能定时器中断EA = 1;							 //打开总中断TR0 = 1;					     //启动定时器
}unsigned char count = 0;
void ServiceTimer0() interrupt 1
{count++;if(count % 10 == 0)     //0.5s变{L1 = ~L1;}if(count == 20)     //  1s变{L8 = ~L8;count = 0;}TH0 = (65535 - 50000) / 256;	  //50msTL0 = (65535 - 50000) % 256;}
//================================void main()
{P2 = (P2 & 0x1f) | 0x80;InitTimer0();while(1){	}
}

相关文章:

[蓝桥杯单片机8]定时器的简单应用

1、本实验内容 利用51单片机的定时/计数器T0的模式1实现间隔定时&#xff0c;每隔1秒L1指示灯闪烁一下&#xff0c;也就是点亮0.5秒&#xff0c;熄灭0.5秒&#xff1b;每隔2秒L8指示灯闪烁一下&#xff0c;即点亮1秒&#xff0c;熄灭1秒。2、基础知识 定时/计数器&#xff0c;是…...

node-HTTP协议

文章目录一. 概念二. 请求报文的组成三.HTTP请求行四.HTTP请求头五.HTTP的请求体六.响应报文的组成七.创建HTTP服务八.获取HTTP请求报文九.HTTP设置响应十.GET和POST请求的区别一. 概念 HTTP协议. 中文叫超文本传输协议; 是一种基于TCP/IP的应用层通信协议; 这个协议详细规定了…...

基于springboot+vue的地方美食分享网站

081-springboot基于vue的地方美食分享网站开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&am…...

【Android】之【Aplication】

一、Application简介 Application和Activity&#xff0c;Service一样是Android框架的一个系统组件&#xff0c;当Android程序启动时系统会创建一个Application对象&#xff0c;用来存储系统的一些信息。 Android系统自动会为每个程序运行时创建一个Application类的对象且只创建…...

社区之声|Grant Program支持Moonbeam生态壮大

在本次社区之声会议中&#xff0c;Moonbeam基金会解释生态系统Grant流程、一个由社区成员组成的圆桌讨论表达各自对此次Grant的看法&#xff0c;Moonbeam开发者关系工程师演示了如何在Snapshot对申请生态系统Grant项目的投票。观看视频回顾 请注意&#xff0c;内容仅供参考&am…...

GO实现Redis:GO实现Redis协议解析器(2)

本文实现Redis的协议层&#xff0c;协议层负责解析指令&#xff0c;然后将指令交给核心database执行echo database用来测试协议层的代码https://github.com/csgopher/go-redis RESP协议 RESP是客户端与服务端通信的协议&#xff0c;格式有五种&#xff1a;正常回复&#xff1…...

Geoserver 发布wmts服务,以及cesium加载发布的wmts服务

WMTS提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案。WMTS弥补了WMS不能提供分块地图的不足。WMS针对提供可定制地图的服务&#xff0c;是一个动态数据或用户定制地图&#xff08;需结合SLD标准&#xff09;的理想解决办法。WMTS牺牲了提供定制地图的灵活性&am…...

【微信小程序】selectComponent(#id)失败得到是null分析

小程序中无法像网页中轻易的获取DOM元素&#xff0c;需要依靠 this.selectComponent(#id)this.selectAllComponents(#id) 本文主要针对 this.selectComponent 获取DOM元素失败的原因 下面开始正文 上图为我的业务代码&#xff0c;由图可知&#xff0c;通过for循环遍历渲染ca…...

JVM中引用计数法与可达性分析

目录 概要 如何判断对象已死&#xff1f; 引用计数算法 优点 缺点 举例说明 可达性分析 图例说明 GC Roots的对象包括以下几种 可达性分析回收过程 四大引用 回收方法区 方法区的垃圾收集主要回收两部分内容&#xff1a; 1. 废弃的常量 2. 不再使用的类型。 JVM是…...

JS-对象篇

内容 简单介绍 重点介绍三个 Array,String和JSON 后面这两个不是重点 BOM-浏览器对象模型 DOM-文档对象模式&#xff08;JS中每个HTML标签都封装成一个DOM对象&#xff09; Array 和java不同 方式一 JS中是var 变量 new Array()&#xff08;这个变量名后面没有[]这个标记&…...

【Unity】创建一个自己的AR安卓程序

目录1 环境配置2 下载官方提供的AR Starter工程3 AR Starter工程中的包以及打包设置3.1 Package Manager3.2 Player Settings4 创建一个新的AR场景5 AR场景中的物体6 在unity中运行AR场景7 在AR场景的基础上添加自己的想法7.1 修改Cube的旋转速度/方向7.2 将Cube替换为其他物体…...

游戏平台商店化的功能特点

帮助用户高效的获取游戏以及游戏相关内容是游戏平台的核心&#xff0c;基于这个需求在平台功能的设计上与其他类型产品也有着类似的思路。商店模式的特点诸如百货商店、超市、书店以及其他类型的商店&#xff0c;都会根据推荐、分类两个特点提供商品。 如果把游戏比作书籍&…...

最新前端面试知识点总结-2023(3w+字,长篇幅)

2023-前端面试知识点总结面试题总览javascript相关一、js 代码的常用优化手段二、es5 构造函数与继承三、new 一个对象的过程四、防抖与节流五、promise/A规范概述六、实现一个柯里函数封装七、事件队列八、微任务是哪些宏任务是哪些九、执行js代码时&#xff0c;同步任务、微任…...

离线安装ffmpeg

linux离线安装ffmpeg 获取安装包&#xff1a;[ffmpeg-release](Index of /releases (ffmpeg.org)) 下载最新版本&#xff0c;ffmpeg-4.4.tar.gz 然后传送到服务器上&#xff0c;解压安装 # 解压 tar -zxvf ffmpeg-4.4.tar.gz# 安装 cd ffmpeg-4.4 ./configure --enable-sha…...

位置编码Positional Encoding

位置编码Positional Encoding1.Transformers中的PE2.什么是Transformer位置编码2.1.表格型2.2.相对位置的关系-函数型3.为什么可以表示相对距离&#xff1f;4.其他参考内容全来自于网络总结。 其他参考1其他参考2 1.Transformers中的PE 摘抄自这里。 公式是初中生都看的懂, …...

Java异步注解@Async详解

一、Async注解 Async的作用就是异步处理任务。 在方法上添加Async&#xff0c;表示此方法是异步方法&#xff1b;在类上添加Async&#xff0c;表示类中的所有方法都是异步方法&#xff1b;使用此注解的类&#xff0c;必须是Spring管理的类&#xff1b;需要在启动类或配置类中…...

macOS Big Sur 11.7.5 (20G1225) 正式版 ISO、PKG、DMG、IPSW 下载

本站提供的 macOS Big Sur 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。 2023 年 3 月 27 日 &#xff08;北京时间 28 日凌晨&#xff09;&#xff0c;…...

硬件语言Verilog HDL牛客刷题day02 组合逻辑部分

1.VL11 4位数值比较器电路 1.题目&#xff1a; 某4位数值比较器的功能表如下。请用Verilog语言采用门级描述方式&#xff0c;实现此4位数值比较器。 2.解题代码&#xff1a; timescale 1ns/1nsmodule comparator_4(input [3:0] A ,input [3:0] B ,output …...

【LM401】ADC采集代码解读

本文主要实现基于LM401模组,&#xff0c;测试ADC低功耗采集&#xff0c;详细解析代码基于计算方式 对于小白理解ADC有更详细的理解 【LM401】ADC采集代码解读1. 单片机ADC与DAC简单理解2. 模组ADC通道介绍3. ADC初始化4. 采集值的计算5.测试结果硬件基于易智联的LM401的LoRa模组…...

CSDN 编程竞赛四十期题解

竞赛总览 CSDN 编程竞赛四十期&#xff1a;比赛详情 (csdn.net) 竞赛题解 题目1、小鱼的航程 有一只小鱼&#xff0c;它上午游泳150公里&#xff0c;下午游泳100公里&#xff0c;晚上和周末都休息&#xff08;实行双休日)。假设从周x&#xff08;1<x<7&#xff09;开…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

向量几何的二元性:叉乘模长与内积投影的深层联系

在数学与物理的空间世界中&#xff0c;向量运算构成了理解几何结构的基石。叉乘&#xff08;外积&#xff09;与点积&#xff08;内积&#xff09;作为向量代数的两大支柱&#xff0c;表面上呈现出截然不同的几何意义与代数形式&#xff0c;却在深层次上揭示了向量间相互作用的…...