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

按键控制LED流水灯模式定时器时钟

目录

1.定时器

2. STC89C52定时器资源

3.定时器框图

4. 定时器工作模式

5.中断系统

1)介绍

2)流程图:​编辑

3)STC89C52中断资源

4)定时器和中断系统

5)定时器的相关寄存器

6.按键控制LED流水灯模式


1.定时器

介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成

作用:

1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作

2)替代长时间的Delay,提高CPU的运行效率和处理速度(避免按键不灵敏)

) 

2. STC89C52定时器资源

定时器个数:3个(T0T1T2), T0 和 T1 与传统的51单片机兼容,T2是此型号单片机增加的资源

注意:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的

3.定时器框图

提供计数单元的时钟脉冲                               时钟计数                              产生中断,执行定时任务

定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔“一秒”,计数单元的数值就增加一,当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行 

4. 定时器工作模式

STC89C52T0T1均有四种工作模式:

  模式013位定时器/计数器

  模式116位定时器/计数器(常用)

  模式28位自动重装模式

  模式3:两个8位计数器

工作模式1框图:

1)TH0 TL0 计数系统最多可以存65535

2)TF0为标志位,通过标志位向中断系统申请中断

3)时钟提供脉冲,一个脉冲使计数系统加 1 ,当计数系统到达65535后会溢出(计数系统为 0 )通过TF0产生中断

4)/12或/6 为分频   如:12MHZ/12 ==1 MHZ

SYSclk:系统时钟,即晶振周期,本开发板上的晶振为12MHz  (system clock)

T0 Pin :单片机外部接口 

当有外部引脚来提供时钟时,定时器为计数器                 

5.中断系统
1)介绍

2)流程图:
3)STC89C52中断资源

中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、定时器2中断、外部中断2、外部中断3

中断优先级个数:4

中断号:

注意:中断的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的中断资源,例如中断源个数不同、中断优先级个数不同等等

4)定时器和中断系统

为了方便理解,这里使用的中断系统图是传统51单片机的图,STC89C52的中断系统图可参考手册

从左下往右分别为 非门(数据取反) 或门(有1 则为1) 与门(有0则为0)

5)定时器的相关寄存器

寄存器是连接软硬件的媒介,在单片机中寄存器就是一段特殊的RAM存储器,一方面,寄存器可以存储和读取数据,另一方面,每一个寄存器背后都连接了一根导线,控制着电路的连接方式寄存器相当于一个复杂机器的“操作按钮”

 

6.按键控制LED流水灯模式
#include <REGX52.H>
#include"Timer0.h"            //main.c
#include"Key.h"
#include<INTRINS.H>unsigned char KeyNum,LEDMode;
void main()
{P2=0xfe;Timer0Init();while(1){KeyNum=Key();if(KeyNum){if(KeyNum==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);if(LEDMode==1)P2=_cror_(P2,1);}
}
#include <REGX52.H>
void Timer0Init(void)		//Timer0.c
{TMOD &= 0xF0;		TMOD |= 0x01;		TL0 = 0x18;		TH0 = 0xFC;		TF0 = 0;	TR0 = 1;ET0=1;EA=1;PT0=0;
}
#ifndef    ___Timer0__     //防止重定义
#define ___Timer0__        //Timer0.hvoid Timer0Init(void);		#endif
#include <REGX52.H>    //Key.c
#include"Delay.h"unsigned char Key()
{unsigned char KeyNumber = 0;if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;}if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);KeyNumber=2;}if(P3_2==0){Delay(20);while(P3_2==0);Delay(20);KeyNumber=3;}if(P3_3==0){Delay(20);while(P3_3==0);Delay(20);KeyNumber=4;}return KeyNumber;
}
#ifndef    ___Key__ //防止重定义
#define ___Key__    //Key.hunsigned char Key();#endif
#include <REGX52.H>void Delay(unsigned int xms)		//延时 xms ms{unsigned char i, j;
while(xms)
{i = 2;j = 239;do{while (--j);} while (--i);xms--;
}
}
#ifndef __Delay_H  //防止重定义
#define __Delay_H  //Delay.hvoid Delay(unsigned int xms);	#endif

注意:可位寻址可以对单独的位进行赋值(TCON),不可位寻址只能整体赋值(TMOD)

谢谢观看

相关文章:

按键控制LED流水灯模式定时器时钟

目录 1.定时器 2. STC89C52定时器资源 3.定时器框图 4. 定时器工作模式 5.中断系统 1&#xff09;介绍 2&#xff09;流程图&#xff1a;​编辑 3&#xff09;STC89C52中断资源 4&#xff09;定时器和中断系统 5&#xff09;定时器的相关寄存器 6.按键控制LED流水灯模…...

【Docker安装】OpenEuler系统下部署Docker环境

【Docker安装】OpenEuler系统下部署Docker环境 前言一、本次实践介绍1.1 本次实践规划1.2 本次实践简介二、检查本地环境2.1 检查操作系统版本2.2 检查内核版本2.3 检查yum仓库三、卸载Docker四、部署Docker环境4.1 配置yum仓库4.2 检查可用yum仓库4.3 安装Docker4.4 检查Docke…...

小程序 使用 UI 组件 Vant Weapp 、vant组件样式覆盖

注意&#xff1a;使用vant 包&#xff0c;需要把app.json 中 的"style:v2" 这句去掉 不然会出现样式混乱的问题 Vant Weapp组件库的使用 参考官网 vant官网 Vant Weapp 组件样式覆盖 Vant Weapp 基于微信小程序的机制&#xff0c;为开发者提供了 3 种修改组件样式…...

(接上一篇)前端弄一个变量实现点击次数在前端页面实时更新

实现点击次数在前端页面实时更新&#xff0c;确实需要在前端维护一个变量来存储当前的点击次数。这个变量通常在Vue组件的data选项中定义&#xff0c;并在组件的生命周期方法或事件处理函数中更新。 以下是实现这一功能的基本步骤&#xff1a; 定义变量&#xff1a;在Vue组件的…...

迭代器模式在金融业务中的应用及其框架实现

引言 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为设计模式&#xff0c;它提供了一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不需要暴露该对象的内部表示。在金融业务中&#xff0c;迭代器模式可以用于遍历复杂的数据结构&#xff0c;如交易…...

浏览器插件利器-allWebPluginV2.0.0.14-stable版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…...

机器学习训练之使用静态图加速

前言 MindSpore有两种运行模式&#xff1a;动态图模式和静态图模式。默认情况下是动态图模式&#xff0c;也可以手工切换为静态图模式。 动态图模式 动态图的特点是计算图的构建和计算同时发生&#xff0c;符合Python的解释执行方式。在调试模型时较为方便&#xff0c;能够实…...

数据结构速成--图

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 …...

昇思25天学习打卡营第12天|FCN图像语义分割

文章目录 昇思MindSpore应用实践基于MindSpore的FCN图像语义分割1、FCN 图像分割简介2、构建 FCN 模型3、数据预处理4、模型训练自定义评价指标 Metrics 5、模型推理结果 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpo…...

昇思MindSpore学习笔记4-03生成式--Diffusion扩散模型

摘要&#xff1a; 记录昇思MindSpore AI框架使用DDPM模型给图像数据正向逐步添加噪声&#xff0c;反向逐步去除噪声的工作原理和实际使用方法、步骤。 一、概念 1. 扩散模型Diffusion Models DDPM(denoising diffusion probabilistic model) &#xff08;无&#xff09;条件…...

Go:hello world

开启转职->Go开发工程师 下面是我的第一个go的程序 在上面的程序介绍&#xff1a; 1、package main 第一行代码package main定义了包名。必须在源文件中非注释的第一行指明这个文件属于哪个包&#xff0c;如&#xff1a;package main。package main表示一个可独立执行的程…...

JVM专题之内存模型以及如何判定对象已死问题

体验与验证 2.4.5.1 使用visualvm **visualgc插件下载链接 :https://visualvm.github.io/pluginscenters.html https://visualvm.github.io/pluginscenters.html **选择对应JDK版本链接--->Tools--->Visual GC** 2.4.5.2 堆内存溢出 * **代码** java @RestCont…...

vscode使用Git的常用操作

主打一个实用 查看此篇之前请先保证电脑安装了Git&#xff0c;安装教程很多&#xff0c;可自行搜索 一.初始化本地仓库&#x1f534; 使用vscode打开项目文件夹如图所使初始化仓库&#xff0c;相当于命令行的git init 二.提交到暂存区&#x1f534; 二.提交到新版本&#x1f…...

RPC与REST

RPC与REST 访问远程服务1远程服务调用&#xff08;Remote Procedure Call&#xff0c;RPC&#xff09;&#xff1a;RPC 解决什么问题&#xff1f;如何解决的&#xff1f;为什么要那样解决&#xff1f;1.1 先解决两个进程间如何交换数据的问题&#xff0c;也就是进程间通信&…...

计数排序的实现

原理 对一个数组进行遍历&#xff0c;再创建一个count数组 每找到一个值则在count数组中对应的位置加一&#xff0c;再在count数组中找到数字上方的count值&#xff0c;count值为几&#xff0c;则打印几次数组中的值. 开空间 相对映射 排序的实现 void CountSort(int* a, i…...

【Qt】QTableWidget设置可以选择多行多列,并能复制选择的内容到剪贴板

比如有一个 QTableWidget*m_tbwQuery m_tbwQuery->installEventFilter(this); //进行事件过滤处理//设置可以选择多行多列 m_tbwQuery->setSelectionMode(QAbstractItemView::MultiSelection); m_tbwQuery->setSelectionBehavior(QAbstractItemView::SelectItems); …...

跨越界限的温柔坚守

跨越界限的温柔坚守 —— 郑乃馨与男友的甜蜜抉择在这个光怪陆离、瞬息万变的娱乐圈里&#xff0c;每一段恋情像是夜空中划过的流星&#xff0c;璀璨短暂。然而&#xff0c;当“郑乃馨与男友甜蜜约会”的消息再次跃入公众视野&#xff0c;它不仅仅是一段简单的爱情故事&#xf…...

Vue3 对于内嵌Iframe组件进行缓存

1&#xff1a;应用场景 对于系统内所有内嵌iframe 的页面均通过同一个路由/iframe, 在router.query内传入不同src 参数&#xff0c;在同一组件内显示iframe 内嵌页面&#xff0c;对这些页面分别进行缓存。主要是通过v-show 控制显示隐藏从而达到iframe 缓存逻辑 2&#xff1a…...

L04_MySQL知识图谱

这些知识点你都掌握了吗&#xff1f;大家可以对着问题看下自己掌握程度如何&#xff1f;对于没掌握的知识点&#xff0c;大家自行网上搜索&#xff0c;都会有对应答案&#xff0c;本文不做知识点详细说明&#xff0c;只做简要文字或图示引导。 1 基础 1.1内部组件结构 1.2 数据…...

什么是CNN,它和传统机器学习有什么区别

CNN&#xff0c;全称为卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;&#xff0c;是一种专门用于处理具有网格结构数据&#xff08;如图像、视频&#xff09;的深度学习模型。它由多个卷积层、池化层、全连接层等组成&#xff0c;通过卷积运算和池化操作…...

Fish Speech-1.5语音自然度提升:后处理降噪与韵律微调实战指南

Fish Speech-1.5语音自然度提升&#xff1a;后处理降噪与韵律微调实战指南 1. 快速上手&#xff1a;部署与基础使用 Fish Speech V1.5是一个强大的文本转语音模型&#xff0c;基于超过100万小时的多语言音频数据训练而成。它支持包括中文、英语、日语在内的12种语言&#xff…...

VMware虚拟机中部署Qwen3智能字幕对齐系统:Windows开发者的Linux环境方案

VMware虚拟机中部署Qwen3智能字幕对齐系统&#xff1a;Windows开发者的Linux环境方案 如果你和我一样&#xff0c;主要用Windows电脑工作&#xff0c;但时不时又需要折腾一下Linux环境来跑AI模型&#xff0c;那今天这个方案可能正合你意。直接在Windows上部署某些依赖复杂的AI…...

Qwen3.5-2B在WSL2中的开发环境配置指南

Qwen3.5-2B在WSL2中的开发环境配置指南 1. 为什么选择WSL2进行AI开发 对于习惯Windows系统但又需要Linux环境的开发者来说&#xff0c;WSL2提供了一个近乎完美的解决方案。它能在Windows系统上运行完整的Linux内核&#xff0c;性能接近原生Linux&#xff0c;同时又能与Window…...

【AI实战项目】项目二:语言模型构建与应用实战

分享一个大牛的人工智能教程。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;希望你也加入到人工智能的队伍中来&#xff01;请轻击人工智能教程​​https://www.captainai.net/troubleshooter 项目背景&#xff1a; 在当今AI蓬勃发展的时代&#xff0c;语⾔模…...

RTX 50系显卡用户看过来:在Windows上为CUDA 12.8和PyTorch Nightly版安装Triton的实战记录

RTX 50系显卡用户看过来&#xff1a;在Windows上为CUDA 12.8和PyTorch Nightly版安装Triton的实战记录 当GeForce RTX 50系列显卡遇上PyTorch Nightly和CUDA 12.8&#xff0c;这可能是目前最前沿的AI开发环境组合。但官方文档和主流教程往往跟不上硬件迭代的速度&#xff0c;让…...

终极指南:PDFMiner XML输出如何高效提取结构化数据

终极指南&#xff1a;PDFMiner XML输出如何高效提取结构化数据 【免费下载链接】pdfminer Python PDF Parser (Not actively maintained). Check out pdfminer.six. 项目地址: https://gitcode.com/gh_mirrors/pd/pdfminer PDFMiner是一个强大的Python PDF解析库&#x…...

Bubblewrap项目部署实战:从开发环境到Google Play发布的完整流程

Bubblewrap项目部署实战&#xff1a;从开发环境到Google Play发布的完整流程 【免费下载链接】bubblewrap Bubblewrap is a Command Line Interface (CLI) that helps developers to create a Project for an Android application that launches an existing Progressive Web A…...

OpenClaw硬件适配指南:gemma-3-12b-it在不同显卡上的性能对比

OpenClaw硬件适配指南&#xff1a;gemma-3-12b-it在不同显卡上的性能对比 1. 测试背景与动机 上周在本地部署OpenClaw对接gemma-3-12b-it模型时&#xff0c;发现同样的自动化任务在不同设备上表现差异巨大。我的旧笔记本&#xff08;RTX 3060&#xff09;处理简单文件整理都会…...

OpenClaw离线部署方案:Qwen3-32B镜像在无网络环境中的适配改造

OpenClaw离线部署方案&#xff1a;Qwen3-32B镜像在无网络环境中的适配改造 1. 离线部署的核心挑战与解决思路 去年在给某研究所部署内部知识管理系统时&#xff0c;我第一次遇到完全隔离的局域网环境。当时尝试用OpenClaw对接Qwen模型&#xff0c;发现官方默认安装流程完全依…...

前端手写电子签系统实战:SVG为何是合同图片合成的最优解

一、前端手写电子签系统核心需求拆解 在开发手写电子签系统时&#xff0c;前端需满足以下核心业务与技术需求&#xff0c;这也是方案选型的核心依据&#xff1a; 高清无损&#xff1a;合同属于正式法律文件&#xff0c;签名、填写的字段文字需保证任意缩放、打印后均清晰无失真…...