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

51单片机学习之旅——定时器

打开软件

1与其它等于其它,0与其它等于0

1或其它等于1,0或其它等于其它

TMOD=TMOD&0xF0;//0xF0=1111 0000进行与操作,高四位保持,低四位清零,高四位定时器1,低四位定时器0

TMOD=TMOD|0x01;//0x01=0000 0001进行或操作,高四位保持,低四位置0001

只配置了定时器0为16位定时器/计数器模式,不影响定时器1的配置TF0=0;//初始状态TF0置0,只有当溢出时,单片机硬件自动置TF0为1,响应中断时,硬件又自动置TF0为0

TR0=1;//配置定时器0时GATE已配置为0,TR0=1允许计时

TH0=(65535-1000)/256;

TL0=(65535-1000)%256;

定时器算配置好了,接下来配置中断,给CPU信号说,来!到点儿了!先别忙那个了,干这个!

ET0=1;

EA=1;

PT0=0;

综上,定时器0初始化函数代码为:

之所以多1是因为65535是从0开始计数,如果从1开始计数,则是1到65536,而我们设置初始值,相当于从1开始计数而不是0,所以TL0=(65536-1000)%256,TH0=(65536-1000)/256

12MHz定时器时钟为12T所以1T就是1MHz

void Timer0_Init()//定时器0初始化函数12MHz下配置的12T
{TMOD&=0xF0;//高四位保持,低四位清零,a=a&b简写为a&=bTMOD|=0x01;//高四位保持,低四位0001TL0=0X18;//低四位(65536-1000)%256设置1毫秒定时器TH0=0XFC;//高四位(65536-1000)/256设置1毫秒定时器TF0=0;//TF0初始化,溢出为1,平时为0TR0=1;//允许定时器开始计数//打开中断ET0=1;EA=1;//设置优先级PT0=0;
}

定时器中断配置好了,接下来是中断后要干事情了,需要中断函数

void Timer0_Routine() interrupt 1
{static unsigned int T0Count;//用于定时比65536微秒更长的时间比如1秒,设置一个变量TL0=0x18;//每次进入中断函数后,初始化函数里的初始值会自动清0,如果不想下次从0开始计数则需要TH0=0xFC;//重新给TL0和TH0赋值T0Count++;//每进一次中断是1毫秒,累加到T0Count中if(T0Count==1000)//1秒等于1000毫秒{T0Count=0;//先初始化清零//下来写想要干的事儿,点灯等等}
}

不懂static可以跳转到这里,希望可以帮助到你节约时间 

 51单片机学习之旅——C语言小知识-CSDN博客

下来把定时器0做模块化

跳转到这个链接:51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客 跳转到这个链接:51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客下来做按键模块化

 跳转到这个链接:51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客 跳转到这个链接:51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客同理是delay模块化, 跳转到这个链接:51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客  跳转到这个链接:51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客下面是main.c文件内容:

#include <REGX52.H>
#include "timer0.h"
#include "key.h"
#include <INTRINS.H>//函数库中有连续左移,右移函数unsigned char keynumber=0,ledmode=0;void main()
{P2=0xFE;//先让最低位亮一个灯Timer0Init();//定时器0中断初始化while(1){keynumber=key();//读取按键if(keynumber)//按键1控制led灯的模式,0模式循环左移,1模式循环右移{if(keynumber==1){ledmode++;if(ledmode>=2){ledmode=0;}}}}
}void Timer0_Routine() interrupt 1{static unsigned int T0Count;TL0=0x18;TH0=0xFC;T0Count++;if(T0Count>=500){T0Count=0;if(ledmode==0){P2=_crol_(P2,1);//_crol_(待移项,需要左移left的位数),最高位与最低位相连成环,一直移}if(ledmode==1){P2=_cror_(P2,1);//_cror_(待移项,需要右移right的位数)}}}

相关文章:

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…...

一台服务器将docker image打包去另一天服务器安装这个镜像

一台服务器将docker image打到去另一天服务器安装这个镜像 1. 打包2.另一台服务器执行 1. 打包 docker save -o nebula-graph-studio.tar harbor1.vm.example.lan/dockerio/vesoft/nebula-graph-studioxxx.tar 是打包好的文件 后面的是 docker image 2.另一台服务器执行 docke…...

QT串口通信之二,实现单个温湿度传感器数据的采集(采用Qt-modbus实现)

接上 QT串口通信之一,实现单个温湿度传感器数据的采集 上述文章中用QSerialPort实现了温湿度传感器的采集,实际上比较麻烦的,因为需要自定义解析帧, 接下来,用Qt-modbus-封装度更高的协议,来实现温湿度的采集; #include "MainWindow.h" #include "ui_M…...

基于SpringBoot的校园消费点评管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

【小沐学Java】VSCode搭建Java开发环境

文章目录 1、简介2、安装VSCode2.1 简介2.2 安装 3、安装Java SDK3.1 简介3.2 安装3.3 配置 4、安装插件Java Extension Pack4.1 简介4.2 安装4.3 配置 结语 1、简介 2、安装VSCode 2.1 简介 Visual Studio Code 是一个轻量级但功能强大的源代码编辑器&#xff0c;可在桌面上…...

《操作系统 - 清华大学》8 -4:进程管理:进程控制结构

深度剖析进程控制块&#xff1a;操作系统进程管理的核心关键 在操作系统的复杂体系中&#xff0c;进程控制块&#xff08;PCB&#xff09;是实现高效进程管理的关键所在。接下来&#xff0c;将从多个维度深入剖析进程控制块&#xff0c;帮助更好地理解其在操作系统中的重要作用…...

RPC 框架项目剖析

RPC 框架项目剖析 说明 本文用于梳理一个 rpc项目的实现细节&#xff0c;此项目基于cpp语言 大概三千行左右&#xff0c;用于学习目的。 项目链接&#xff1a;rpc项目 项目底层类 1.抽象消息类 描述&#xff1a; 各种消息的基类 属性&#xff1a; 消息id&#xff0c;消息类型…...

C++ Boost面试题大全及参考答案

目录 boost::thread_group 如何实现批量线程管理? 解释 boost::asio 中 proactor 模式的设计原理 使用 boost::atomic 实现无锁环形缓冲区 boost::mutex 与 std::mutex 在异常安全上的差异 如何用 boost::condition_variable 实现生产者 - 消费者模型 当 boost::shared_p…...

关于Transparent native-to-ascii conversion

1、功能 自动转换ASCII编码&#xff0c;即在文件系统上&#xff0c;文件的编码格式为ascii编码&#xff0c;在编辑器&#xff08;idea/pycharm&#xff09;中&#xff0c;其展现结果为配置的编码格式&#xff0c;仅展现方便阅读 使用UTF-8并勾选自动转换ASCII编码结果&#x…...

js数据类型检测

JavaScript的数据类型检测 typeof操作符 适用场景 基本数据类型快速判断&#xff1a;适用于快速判断变量是否为number、string、boolean、undefined、function等基本数据类型。比如在函数参数检查中&#xff0c;若要求传入数字参数&#xff0c;可用typeof来初步判断。函数类型…...

go 模块管理

go version 查看版本 go version go1.21.12 windows/amd64 需要保证:go的版本升级为1.11以上,go mod依赖的最底版本 go env 查看go的环境变量 go env 开启go mod # 标识开启go的模块管理 set GO111MODULE=on GO111MODULE有三个值:off, on和auto(默认值)。 GO111M…...

记一次复杂分页查询的优化历程:从临时表到普通表的架构演进

1. 问题背景 在项目开发中&#xff0c;我们需要实现一个复杂的分页查询功能&#xff0c;涉及大量 IP 地址数据的处理和多表关联。在我接手这个项目的时候,代码是这样的 要知道代码里面的 ipsList 数据可能几万条甚至更多,这样拼接的sql,必然是要内存溢出的,一味地扩大jvm参数不…...

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中&#xff0c;有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统&#xff0c;能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…...

java面试场景问题

还在补充&#xff0c;这几天工作忙&#xff0c;闲了会把答案附上去&#xff0c;也欢迎各位大佬评论区讨论 1.不用分布式锁如何防重复提交 方法 1&#xff1a;基于唯一请求 ID&#xff08;幂等 Token&#xff09; 思路&#xff1a;前端生成 一个唯一的 requestId&#xff08;…...

JS宏实例:数据透视工具的制作(四)

上一节中&#xff0c;我们完成了核心的计算代码部分&#xff0c;本节中将完善事件代码 一、创建所有需求的事件函数 1、窗体初始化 // 窗体初始化 function pivotForm_Initialize(){} function typeSet_Initialize(){} function valueSet_Initialize(){} function allCol…...

5. Go 方法(结构体的方法成员)

Go语言没有传统的 class &#xff0c;为了让函数和结构体能够关联&#xff0c;Go引入了“方法”的概念。 当普通函数添加了接收者&#xff08;receiver&#xff09;后&#xff0c;就变成了方法。 一、函数和方法示例 // 普通函数 func Check(s string) string {return s }//…...

20250223学习记录

之前HDFview查看.hdf5文件的时候&#xff0c;看到土壤湿度数据是分为AM和PM&#xff0c;当时我有一个这样的疑问 但是后来用Python处理的时候&#xff0c;直接就是对整个的.hdf5文件处理&#xff0c;当时没有注意这一块&#xff0c;所以就没有这个疑问了。 今天突然看到一篇论…...

WPS携手DeepSeek:开启智能办公新时代

在数字化办公的浪潮中&#xff0c;效率与智能成为了人们追求的核心目标。近年来&#xff0c;人工智能技术的飞速发展为办公领域带来了前所未有的变革契机。DeepSeek作为一款备受瞩目的人工智能工具&#xff0c;以其强大的功能吸引了众多用户&#xff0c;然而在使用过程中&#…...

无需服务器,浏览器跑700+AI模型?!

Transformers.js 是一个创新的网络机器学习库&#xff0c;它将先进的 Transformer 模型直接带入浏览器&#xff0c;无需服务器端支持。这个库与 Hugging Face 的 Python transformers 库功能对等&#xff0c;提供相似的 API 接口来运行预训练模型&#xff0c;涵盖了自然语言处理…...

WSL2下ubuntu开启NFS服务

1. wsl2下ubuntu配置 安装 NFS 服务&#xff1a; sudo apt-get install nfs-kernel-server rpcbindnfs 配置文件/etc/exports&#xff1a; sudo vi /etc/exports打开/etc/exports 以后在后面添加如下所示内容&#xff1a; /home/mk/nfs *(rw,sync,no_subtree_check,no_root…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...