单片机-定时器中断
1、相关知识
振荡周期=1/12us; //振荡周期又称 S周期或时钟周期(晶振周期或外加振荡周期)。
状态周期=1/6us;
机器周期=1us;
指令周期=1~4us;
①51单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时器/计数器。
②定时器/计数器和单片机的CPU 是相互独立的。定时器/计数器工作的过程是自动完成的,不需要CPU 的参与。
③单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加 1
2、单片机定时/计数器结构 T0—P3.4 T1—P3.5
定时/计数器的实质是加 1 计数器(16 位),由高 8 位和低 8 位两个寄存器 THx 和TLx组成。它随着计数器的输入脉冲进行自加 1,也就是每来一 个脉冲,计数器就自动加 1,当加到计数器为全 1 时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置 1,向 CPU 发出中断请求(定时 /计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到; 如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加 1 计数器的计数值。
51 单片机定时器/计数器内部结构如下所示
2.1、工作方式寄存器 TMOD
工作方式寄存器 TMOD 用于设置定时/计数器的工作方式,低四位用于 T0,高四位用于 T1。其格式如下:
GATE = 0 时:只需要用软件使 TCON 中的 TR0 或 TR1 为 1,就可以启动定时/计数器工作;
GATE=1 时,要用软件使 TR0 或 TR1 为 1,同时外部中断引脚 INT0/1 也为高电平 时,才能启动定时/计数器工作。
C/T =0 为定时模式; C/T =1 为计数模式
定时器——方式1 串口通信——方式2
2.2、控制寄存器 TCON
TCON 的低 4 位用于控制外部中断。TCON 的高 4 位用于控制定 时/计数器的启动和中断申请。
TF0,TF1:定时/计数器中断请求控制位,当计数溢出时设为1,响应中断后设为0
TR0,TR1:定时/计数器中断允许标志位
3、单片机定时/计数器的工作方式
3.1 方式0 计数初值与计数个数的关系为:X=2 (13次方)-N
方式 0 为 13 位计数,由 TL0 的低 5 位(高 3 位未用)和 TH0 的 8 位组成。 TL0 的低 5 位溢出时向 TH0 进位,TH0 溢出时,置位 TCON 中的 TF0 标志,向 CPU 发出中断请求。
GATE=0 时,仅由TR0 控制与门的开启;GATE=1时,由外中断引脚信号INT0 和 TR0 共同控制与门的开启
3.2 方式1(定时器使用) 计数初值与计数个数的关系为:X=2 (16次方)-N。
方式 1 的计数位数是 16 位,由 TL0 作为低 8 位,TH0 作为高 8 位
3.3 方式2 (串口通信使用) 计数初值与计数个数的关系为:X=2 (8次方)-N。
方式 2 为自动重装初值的 8 位计数方式。工作方式 2 特别适合于用作较精确的脉冲信号发生器。
3.4 方式3
方式 3 只适用于定时/计数器 T0,定时器 T1 处于方式 3 时相当于 TR1=0, 停止计数。工作方式 3 将 T0 分成为两个独立的 8 位计数器 TL0 和 TH0。
4、定时器配置
①对 TMOD 赋值,以确定 T0 和 T1 的工作方式,如果使用定时器 0 即对 T0 配 置,如果使用定时器 1 即对 T1 配置。
②根据所要定时的时间计算初值,并将其写入 TH0、TL0 或 TH1、TL1。
③如果使用中断,则对 EA 赋值,打开总定时器中断。
④使 TR0 或 TR1 置位,启动定时/计数器定时或计数
如果我们想定时 1ms 的初值是多少呢?1ms/1us=1000。也就是要计数 1000 个,初值=65535-1000+1 (因为实际上计数器计数到 65536(2 的 16 次方)才溢出,所以后面要加 1) =64536=FC18H,所以初值即为 THx=0XFC,TLx=0X18
以定时器 0 为例介绍配置定时器工作方式 1、设定 1ms 初值,开启定时器计数功能以及总中断,
void time0_init(void)
{
TMOD|=0X01;//选择为定时器 0 模式,工作方式 1 0X01方式1 0X10——方式2
TH0=0XFC; //给定时器赋初值,定时 1ms
TL0=0X18;
ET0=1;//选择使用定时器 0 中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}
定时器中断实验:通过定时器 0 中断控制 D1 指示灯间隔 1 秒闪烁
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay_10us(u16 ten_us){
while(ten_us--);
}sbit LED1=P2^0;
//初始化定时器0中断的函数
void time0_init(){
TMOD|=0X01;//选择定时器 0 模式,工作方式 1 为了不干扰定时器1
TH0=0XFC;//低8位 给定时器赋初值,定时1ms,相当于1000次脉冲
TL0=0X18;//高8位
ET0=1;//打开定时器 0 中断允许
EA=1;//打开总开关
TR0=1;//打开定时器
}//初始化定时器1中断的函数
void time1_init(){
TMOD|=0X10;//选择为定时器 0 模式,工作方式 1
TH0=0XFC; //给定时器赋初值,定时 1ms
TL0=0X18;
ET0=1;//打开定时器 0 中断允许
EA=1;//打开总中断
TR0=1;//打开定时器,手动设置
}void main(){
time0_init();
while(1){
}
}//定义定时器中断服务函数
void time0() interrupt 1{
static u16 i=0;//静态变量,只初始化1次
TH0=0XFC;
TL0=0X18;
i++;
if(i==1000){
i=0;
//计时1s
LED1=!LED1;
}
}
相关文章:
单片机-定时器中断
1、相关知识 振荡周期1/12us; //振荡周期又称 S周期或时钟周期(晶振周期或外加振荡周期)。 状态周期1/6us; 机器周期1us; 指令周期1~4us; ①51单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时器…...
计算机网络 (31)运输层协议概念
一、概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。运输层的一个核心功能是提供从源端主机到目的端主机的可靠的、与实际使用的网络无关的信息传输。它向高层用…...
【学Rust开发CAD】2 创建第一个工作空间、项目及库
文章目录 一、 创建工作空间二、新建项目(可执行文件)三、 新建库(库文件)四、更新项目依赖五、编写代码七、总结 在 Rust 中,工作空间(workspace)允许你管理多个相关的包(crate&…...
使用GitLab+Jenkins搭建CICD执行环境
使用GitLabJenkins搭建CI\CD执行环境 前言什么是DevOps?什么是CI/CD?使用GitLabJenkins搭建CI\CD执行环境GitLab安装1. 安装和配置所需的依赖2. 下载并安装极狐GitLab3. 登录极狐GitLab 实例4.常用gitlab指令5.修改密码 Jenkins安装1.Jenkins 的主要特点…...
微信小程序——创建滑动颜色条
在微信小程序中,你可以使用 slider 组件来创建一个颜色滑动条。以下是一个简单的示例,展示了如何实现一个颜色滑动条,该滑动条会根据滑动位置改变背景颜色。 步骤一:创建小程序项目 首先,使用微信开发者工具创建一个…...
Mac中配置vscode(第一期:python开发)
1、终端中安装 xcode-select --install #mac的终端中安装该开发工具 xcode-select -p #显示当前 Xcode 命令行工具的安装路径注意:xcode-select --install是在 macOS 上安装命令行开发工具(Command Line Tools)的关键命令。安装的主要组件包括:C/C 编…...
Next.js 实战 (七):浅谈 Layout 布局的嵌套设计模式
业务场景 在目前常见的中后台管理系统中,比较常见的是固定的布局方式包裹页面,但一些特殊页面,比如:登录页面、注册页面、忘记密码页面这些页面是不需要布局包裹的。 但在 Next.js AppRouter 中,必须包含一个根布局文…...
Linux环境下确认并操作 Git 仓库
在软件开发和版本控制中,Git 已成为不可或缺的工具。有时,我们需要确认某个目录是否是一个 Git 仓库,并在该目录中运行脚本。本文将详细介绍如何确认 /usr/local/src/zcxt/backend/policy-system-backend 目录是否是一个 Git 仓库,…...
海陵HLK-TX510人脸识别模块 stm32使用
一.主函数 #include "stm32f10x.h" // Device header #include "delay.h" #include "lcd.h" #include "dht11.h" #include "IOput.h" #include "usart.h" //#include "adc.h" …...
MATLAB语言的正则表达式
MATLAB 中的正则表达式使用指南 引言 在数据处理和文本分析中,正则表达式是一种强大而灵活的工具。MATLAB 作为一种广泛应用于科学计算和数据分析的编程语言,提供了对正则表达式的支持,使得用户可以方便地进行字符串匹配与处理。本文将深入…...
【CVPR 2024】【遥感目标检测】Poly Kernel Inception Network for Remote Sensing Detection
0.论文摘要 摘要 遥感图像(RSIs)中的目标检测经常面临几个日益增加的挑战,包括目标尺度的巨大变化和不同范围的背景。现有方法试图通过大核卷积或扩张卷积来扩展主干的空间感受野来解决这些挑战。然而,前者通常会引入相当大的背…...
笔记-使用ffmpeg产生rtsp视频流,然后用进行VLC播放
笔记-使用ffmpeg产生rtsp视频流,然后用进行VLC播放 1.软件配置1.1下载安装好**ffmpeg**1.2使用EasyDarwin创建RTSP服务器 2.FFmpeg找本地摄像头名字3.FFmpeg推流命令3.1使用VLC实现拉流 1.软件配置 1.1下载安装好ffmpeg ffmpeg官网 本地下载 1.2使用EasyDarwin创…...
Ubuntu20.04中EasyConnect启动报错
安装路径 /usr/share/sangfor/EasyConnect 方法 通过 ./EasyConnect获得错误代码,其中‘Failed to load module "canberra-gtk-module"’可以忽略,主要是‘Harfbuzz version too old (1.3.1)’这个问题,后边的版本号可能因系统不…...
计算机毕业设计Python中华古诗词知识图谱可视化 古诗词智能问答系统 古诗词数据分析 古诗词情感分析模型 自然语言处理NLP 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Excel | 空格分隔的行怎么导入excel?
准备工作:windows,一个记事本程序和微软的Excel软件。 打开记事本,选中所有内容,按CtrlA全选,然后复制(CtrlC)。 在Excel中,定位到你想粘贴的单元格,按CtrlV进行粘贴。粘贴后,你会在…...
【形式篇】年终总结怎么写:PPT如何将内容更好地表现出来
——细节满满,看完立马写出一篇合格的PPT 总述 形式服务于内容,同时合理的形式可以更好地表达和彰显内容 年终总结作为汇报型PPT,内容一定是第一位的,在内容篇(可点击查看)已经很详细地给出了提纲思路,那如何落实到…...
Python生日祝福烟花
1. 实现效果 2. 素材加载 2个图片和3个音频 shoot_image pygame.image.load(shoot(已去底).jpg) # 加载拼接的发射图像 flower_image pygame.image.load(flower.jpg) # 加载拼接的烟花图 烟花不好去底 # 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大 shoo…...
(六)CAN总线通讯
文章目录 CAN总线回环测试第一种基于板载CAN测试第一步确认板载是否支持第二步关闭 CAN 接口将 CAN 接口置于非活动状态第三步 配置 CAN 接口第一步 设置 CAN 接口比特率第二步 设置 CAN 启用回环模式第三步 启用 CAN 接口 第四步 测试CAN总线回环捕获 CAN 消息发送 CAN 消息 第…...
python.exe无法找到程序入口 无法定位程序输入点(Anaconda Prompt报错)
参考 总结: (1)pythoncom36.dll是pywin32的一个文件,位于路径Anaconda3\envs\pytorch(你的虚拟环境)\Lib\site-packages\pywin32_system32中; (2)但在Anaconda3\envs\pytorch\Library\bin中也…...
C++网络程序设计
在C网络编程中,使用Berkeley Sockets API是一种常见的方法来实现跨平台的TCP通信。Berkeley Sockets API最初是在UNIX系统上开发的,但它已经被广泛移植到其他操作系统,包括Windows。 示例代码 client.cpp #include <iostream> #incl…...
【快速实践】深度学习 -- 数据曲线平滑化
希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【深度学习从 0 到 1】谢谢你的支持! 在观察数据结果时,我们通常希望获得整体趋…...
【强化学习】演员评论家Actor-Critic算法(万字长文、附代码)
📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…...
Kubernetes Gateway API-5-后端协议和网关基础设置标签
1 后端协议 自 v1.2.0 开始支持 并非所有网关API实现都支持自动协议选择。在某些情况下,协议在没有明确选择加入的情况下被禁用。 当 Route 的后端引用Kubernetes Service 时,应用程序开发人员可以使用 ServicePort appProtocol 字段指定协议。 例如…...
鸿蒙 ArkUI实现地图找房效果
常用的地图找房功能,是在地图上添加区域、商圈、房源等一些自定义 marker,然后配上自己应用的一些筛选逻辑构成,在这里使用鸿蒙 ArkUI 简单实现下怎么添加区域/商圈、房源等 Marker. 1、开启地图服务 在华为开发者官网,注册应用&…...
前后端分离架构设计与实现:构建现代Web应用的基石
前后端分离架构设计与实现:构建现代Web应用的基石 引言 随着互联网技术的发展,Web应用变得越来越复杂和多样化。传统的单体式架构难以满足快速迭代、团队协作以及性能优化的需求。前后端分离架构应运而生,它不仅提高了开发效率,…...
【51单片机】02LED流水灯实验
点亮你的LED 一、点亮第一个LED1.GPIO介绍2.P1、P2、P3端口 二、LED实验2.尝试点亮LED3.LED流水灯4.利用库函数实现流水灯的移动 一、点亮第一个LED 1.GPIO介绍 这块内容这里可以做简单的了解,与数电知识强相关。后续可以再回过头来学习 GPIO (general purpose in…...
【简博士统计学习方法】第1章:4. 模型的评估与选择
4. 模型的评估与选择 4.1 训练误差与测试误差 假如存在样本容量为 N N N的训练集,将训练集送入学习系统可以训练学习得到一个模型,我们将这么模型用决策函数的形式表达,也就是 y f ^ ( x ) y\hat{f}(x) yf^(x),关于模型的拟合…...
GitLab创建用户,设置访问SSH Key
继上一篇 Linux Red Hat 7.9 Server安装GitLab-CSDN博客 安装好gitlab,启用管理员root账号后,开始创建用户账户 1、创建用户账户 进入管理后台页面 点击 New User 输入用户名、邮箱等必填信息和登录密码 密码最小的8位,不然会不通过 拉到…...
flutter 专题二十四 Flutter性能优化在携程酒店的实践
Flutter性能优化在携程酒店的实践 一 、前言 携程酒店业务使用Flutter技术开发的时间快接近两年,这期间有列表页、详情页、相册页等页面使用了Flutter技术栈进行了跨平台整合,大大提高了研发效率。在开发过程中,也遇到了一些性能相关问题和…...
RAFT:随机退火森林
RAFT:随机退火森林 RAFT(Randomized Annealed Forests)是一种机器学习算法,主要用于分类和回归任务。以下是对它的介绍及原理举例说明: 一、RAFT简介 RAFT是一种基于随机森林的集成学习方法,它结合了随机森林的优点和退火算法的思想。随机森林通过构建多个决策树并综…...
上下游服务间解耦的技术与管理
一、解耦为何至关重要 在当今软件研发的复杂生态中,耦合问题如影随形,困扰着众多开发者与企业。当多个模块、系统或团队紧密交织,相互依赖程度不断攀升,仿佛一张错综复杂的网,牵一发而动全身。就拿电商系统来说&#…...
[桌面运维]windows自动设置浅深色主题
设置自动浅色/深色主题 我看很多up主的教程过于繁琐,需要添加四个功能,并且有些还不能生效! 大多数都是教程: 自动任务栏浅色 add HKCUSOFTWAREMicrosoftWindowsCurrentVersionThemesPersonalize/v SystemUsesLightTheme /t …...
【Spring】Spring DI(依赖注入)详解——注入参数的细节处理-内部Bean的注入
引言 在现代Java开发中,Spring框架已经成为了构建企业级应用的标准工具之一。Spring的核心特性之一就是依赖注入(Dependency Injection,DI),它通过将对象的依赖关系从代码中解耦出来,提升了代码的可维护性…...
Docker: 教程07 - ( 如何对 Docker 进行降级和升级)
如果我们使用 docker 来管理容器,那么保持 docker 引擎的更新将会是十分重要的,这一篇文章我们将会讨论如何对Docker 进行降级和升级。 准备工作 - docker 环境 我们需要拥有一个安装好 docker 的运行环境。 如果你需要了解如何安装 docker 可以通过如…...
CV-LLM经典论文解读|VTimeLLM: Empower LLM to Grasp Video MomentsVTimeLLM:赋能大语言模型理解视频片段
论文标题 VTimeLLM: Empower LLM to Grasp Video Moments VTimeLLM:赋能大语言模型理解视频片段 论文链接: VTimeLLM: Empower LLM to Grasp Video Moments论文下载 论文作者 Bin Huang, Xin Wang, Hong Chen, Zihan Song, Wenwu Zhu (Tsinghua Un…...
新手学习yolov8目标检测小记2--对比实验中经典模型库MMDetection使用方法(使用自己的数据集训练,并转换为yolo格式评价指标)
一、按照步骤环境配置 pip install timm1.0.7 thop efficientnet_pytorch0.7.1 einops grad-cam1.4.8 dill0.3.6 albumentations1.4.11 pytorch_wavelets1.3.0 tidecv PyWavelets -i https://pypi.tuna.tsinghua.edu.cn/simple pip install -U openmim -i https://pypi.tuna.t…...
Kubernetes开发环境minikube | 开发部署apache tomcat web单节点应用
minikube是一个主要用于开发与测试Kubernetes应用的运行环境 本文主要描述在minikube运行环境中部署J2EE tomcat web应用 minikube start --force minikube status 如上所示,在Linux中启动minikube运行环境 service docker start docker version service docker …...
浙江安吉成新的分布式光伏发电项目应用
摘 要:分布式光伏发电站是指将光伏发电组件安装在用户的建筑物屋顶、空地或其他适合的场地上,利用太阳能进行发电的一种可再生能源利用方式,与传统的大型集中式光伏电站相比,分布式光伏发电具有更灵活的布局、更低的建设成本和更高…...
Git - 记录一次由于少输入了一个命令导致的更改丢失
Git - 记录一次由于少输入了一个参数导致的更改丢失 前言 某晚我激情开发了几个小时,中途没有进行commit存档。准备睡觉时,我想创建一个新的分支并将今晚所有更改提交到新分支上(似乎应该开发时候就创建?)。 然后因…...
【Nginx】设置https和http同时使用同一个端口访问
以下是一个同时使用 HTTP 和 HTTPS 并通过 8070 端口的配置示例: server {listen 8070;server_name your_domain.com;location / {root /var/www/html;index index.html;} }server {listen 8070 ssl;server_name your_domain.com;# SSL 证书和私钥的路径ssl_certif…...
Vue 组件开发:构建高效可复用的 UI 构建块
在现代前端开发中,Vue.js 凭借其简洁的 API、渐进式框架设计和强大的生态系统,已经成为众多开发者的首选。Vue 组件化开发是其核心特性之一,它允许我们将复杂的 UI 拆分成多个独立、可复用的组件,从而提高代码的可维护性和可扩展性…...
【Uniapp-Vue3】v-if条件渲染及v-show的选择对比
如果我们想让元素根据响应式变量的值进行显示或隐藏可以使用v-if或v-show 一、v-show 另一种控制显示的方法就是使用v-show,使用方法和v-if一样,为true显示,为false则不显示。 二、v-if v-if除了可以像v-show一样单独使用外,还…...
浏览器报错:您的连接不是私密连接,Kubernetes Dashboard无法打开
问题描述 部署完成Kubernetes Dashboard后,打开HTTPS的web页面,Chrome和Edge浏览器都无法正常加载页面,会提示您的连接不是私密连接的报错。 原因: 浏览器不信任这些自签名的ssl证书,为了…...
asp.net core 属性路由和约定路由
在 ASP.NET Core 中,Web API 中的路由(Route)用于确定客户端请求的 URL 与服务器端处理逻辑之间的映射关系。路由机制在 Web API 的开发中非常重要,它帮助定义和管理不同请求路径如何触发特定的控制器和操作方法。 1. 路由概述 …...
机器学习之模型评估——混淆矩阵,交叉验证与数据标准化
目录 混淆矩阵 交叉验证 数据标准化 0-1标准化 z 标准化 混淆矩阵 混淆矩阵(Confusion Matrix)是一种用于评估分类模型性能的工具。 它是一个二维表格,其中行表示实际的类别,列表示模型预测的类别。 假设我们有一个二分类问题&…...
Java实现UDP与TCP应用程序
三、Java实现UDP应用程序 3.1 InetAddress类 java.net.InteAddress类是用于描述IP地址和域名的一个Java类; 常用方法如下: public static InetAddress getByName(String host):根据主机名获取InetAddress对象public String getHostName()…...
[python3]Excel解析库-calamine,10倍openpyxl性能
calamine 是一个用于读取多种电子表格格式(如 Excel、LibreOffice Calc 等)的 Python 库。它支持 .xls, .xlsx, .ods 和 .csv 文件格式,提供了简单易用的 API 来加载和处理电子表格数据。calamine 的一大特点是它的轻量级和高效性,…...
Clisoft SOS设置Server和Project
Clisoft SOS设置Server和Project 一、关于SOS Servers、Clients、Projects和Work Areas 以下三个图是官方文档中介绍的三种情况 图1:带有两个客户端的SOS服务器 图2:使用本地缓存服务器 图3:远程设计团队的缓存服务器 因为SOS软件需要…...
基于FPGA的出租车里程时间计费器
基于FPGA的出租车里程时间计费器 功能描述一、系统框图二、verilog代码里程增加模块时间增加模块计算价格模块上板视频演示 总结 功能描述 (1);里程计费功能:3公里以内起步价8元,超过3公里后每公里2元,其中…...
AnaConda下载PyTorch慢的解决办法
使用Conda下载比较慢,改为pip下载 复制下载链接到迅雷下载 激活虚拟环境,安装whl,即可安装成功 pip install D:\openai.wiki\ChatGLM2-6B\torch-2.4.1cu121-cp38-cp38-win_amd64.whl...