单片机---独立按键
[3-1] 独立按键控制LED亮灭_哔哩哔哩_bilibili

按下的时候连接,松开的时候断开。
一头接GND(电源负极),另一头接I/O口。

单片机上电时,所有I/O口为高电平。
按键没有按下,I/O口为高电平。
按键按下,I/O口为低电平。
寄存器会检测I/O口的值,读入寄存器中。
直接读寄存器,值应该为1.
按键按下,寄存器值应该为0.
(1)
直接对位进行操作:
#include <REGX52.H>
#include <INTRINS.H>void main()
{P2_0=0;while(1){}
}
(2)
按下K1,LED1亮,松开,LED1灭。
#include <REGX52.H>
#include <INTRINS.H>void main()
{while(1){if(P3_1==0){P2_0=0;}else{P2_0=1;}}
}

(3)
按键按下,灯亮,再按下,灯灭:
#include <REGX52.H>
#include <INTRINS.H>void Delay1ms() //@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i=0;i<x;i++){Delay1ms();}
}
void main()
{P2_0=0;//点亮LED1while(1){if(P3_1==0){Delay_time(20);//消抖//按键按下while(P3_1==0){}Delay_time(20);//消抖P2_0=~P2_0;}}
}
(4)
LED1亮,按下按钮,LED2亮,,,再按,LED8亮,然后,LED1亮。
都不亮,1111 1111
LED1亮,1111 1110
LED2亮,1111 1101
LED3亮,1111 1011
LED8亮,0111 1111
#include <REGX52.H>
#include <INTRINS.H>void Delay1ms() //@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i=0;i<x;i++){Delay1ms();}
}
void main()
{P2=0xFE;while(1){if(P3_1==0){Delay_time(20);while(P3_1==0){}Delay_time(20);P2<<=1;P2=P2|0x01;if(P2==0xFF)P2=0xFE;}}
}
(5)
LED1亮,按下按钮,LED8亮,按下按钮,LED7亮,,,再按,LED1亮,然后,LED8亮。
都不亮,1111 1111
LED1亮,1111 1110
LED8亮,0111 1111
LED7亮,1011 1111
LED3亮,1111 1011
LED2亮,1111 1101
LED1--->LED8--->LED7--->LED6--->LED1(逆循环)
#include <REGX52.H>
#include <INTRINS.H>void Delay1ms() //@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i=0;i<x;i++){Delay1ms();}
}
void main()
{P2=0xFE;while(1){if(P3_0==0){Delay_time(20);while(P3_0==0){}Delay_time(20);P2>>=1;P2=P2|0x80;if(P2==0xFF)P2=0x7F;}}
}
(6)
按下K1,LED1--->LED2--->LED8--->LED1
按下K2,,LED1--->LED8--->LED7--->LED1
#include <REGX52.H>
#include <INTRINS.H>void Delay1ms() //@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i=0;i<x;i++){Delay1ms();}
}
void main()
{P2=0xFE;while(1){if(P3_1==0){Delay_time(20);while(P3_1==0){}Delay_time(20);P2<<=1;P2=P2|0x01;if(P2==0xFF)P2=0xFE;}if(P3_0==0){Delay_time(20);while(P3_0==0){}Delay_time(20);P2>>=1;P2=P2|0x80;if(P2==0xFF)P2=0x7F;}}
}
(7)
使用LED8---LED1,8个灯表示数a的二进制形式。
开始时a=0
按下按钮,a++
a=255时,按下按钮,a=0。
观察8个灯的变化
0000 0000
0000 0001
0000 0010
0000 0011
......
1111 1111
0000 0000
#include <REGX52.H>
#include <INTRINS.H>void Delay1ms() //@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i=0;i<x;i++){Delay1ms();}
}
void main()
{unsigned char a=0x00;while(1){if(P3_1==0){Delay_time(20);while(P3_1==0){}Delay_time(20);a=a+1;P2=~a;if(a==256)a=0x00;}}
}
相关文章:
单片机---独立按键
[3-1] 独立按键控制LED亮灭_哔哩哔哩_bilibili 按下的时候连接,松开的时候断开。 一头接GND(电源负极),另一头接I/O口。 单片机上电时,所有I/O口为高电平。 按键没有按下,I/O口为高电平。 按键按下&…...
java分布式面试快问快答
目录 Java分布式面试宝典50题DubboRedisZookeeper分布式系统设计性能优化与监控安全实践经验 解答DubboRedisZookeeper分布式系统性能优化与监控安全 Java分布式面试宝典50题 Java分布式开发涉及到Dubbo、Redis、Zookeeper等技术,这些技术在实际工作中扮演着重要角…...
AI:148-开发一种智能语音助手,能够理解和执行复杂任务
AI:148-开发一种智能语音助手,能够理解和执行复杂任务 1.背景介绍 随着人工智能技术的飞速发展,智能语音助手已经逐渐成为人们日常生活中不可或缺的一部分。从简单的查询天气、播放音乐,到复杂的日程安排、智能家居控制…...
Kindling the Darkness:A Practical Low-light Image Enhancer
Abstract 在弱光条件下拍摄的图像通常会出现(部分)可见度较差的情况。,除了令人不满意的照明之外,多种类型的退化也隐藏在黑暗中,例如由于相机质量有限而导致的噪点和颜色失真。,换句话说,仅仅调高黑暗区域的亮度将不…...
图像处理与视觉感知---期末复习重点(4)
文章目录 一、图像复原与图像增强1.1 概述1.2 异同点 二、图像复原/退化模型2.1 模型图简介2.2 线性复原法 三、彩色基础四、彩色模型五、彩色图像处理 一、图像复原与图像增强 1.1 概述 1. 图像增强技术一般要利用人的视觉系统特性,目的是取得较好的视觉效果&…...
ABAP AMDP 示例
AMDP 是HANA开发中的一种优化模式 按SAP的官方建议,在可以使用Open SQL实现需要的功能或优化目标的时候,不建议使用AMDP。而在需要使用Open SQL不支持的特性,或者是大量处理流和分析导致了数据库和应用服务器之间有重复的大量数据传输的情况…...
发票查验接口C++语言如何集成、发票OCR
说起发票查验工作,繁琐的发票信息录入与反复查验令财务人员头疼不已。数字化时代,企业财务管理的自动化需求越来越高,翔云发票查验API搭配发票识别接口为企业提供一种高效的财务管理解决方案。仅需上传发票图片即可快速提取发票四要素信息&am…...
【图论 | 数据结构】用链式前向星存图(保姆级教程,详细图解+完整代码)
一、概述 链式前向星是一种用于存储图的数据结构,特别适合于存储稀疏图,它可以有效地存储图的边和节点信息,以及边的权重。 它的主要思想是将每个节点的所有出边存储在一起,通过数组的方式连接(类似静态数组实现链表)。这种方法的优点是存储空间小,查询速度快,尤其适…...
【蓝桥杯3.23小白赛】(详解)
第一题签到题不多说 【二进制王国】 #include <iostream> #include <vector> #include <algorithm> using namespace std;//int Cmp(string s1, string s2)测试了一下时间差确实很明显,还是用下面的内个 int Cmp(const string &s1,const st…...
设计模式之抽象工厂模式精讲
概念:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类。 抽象工厂模式是工厂方法模式的升级版本。在存在多个业务品种或分类时,抽象工厂模式是一种更好的解决方式。 抽象工厂模式的UML类图如下: 可以看…...
初识云原生、虚拟化、DevOps
文章目录 K8S虚拟化DevOpsdevops平台搭建工具大数据架构 K8S master 主节点,控制平台,Master节点负责核心的调度、管理和运维,不需要很高性能,不跑任务,通常一个就行了,也可以开多个主节点来提高集群可用度…...
怎麼實現Nginx反向代理?
Nginx是一款開源軟體,可以作為Web伺服器、負載均衡器和反向代理使用,是高性能的HTTP和反向代理伺服器。其中反向代理是Nginx的一項重要特性。接下來,我們詳細講一下Nginx反向代理的實現和應用。 反向代理是什麼? 代理一詞通常指的…...
IOS面试题编程机制 71-75
71. 简述有哪几种手势通知方法?-(void)touchesBegan:(NSSet*)touchedwithEvent:(UIEvent*)event; -(void)touchesMoved:(NSSet*)touched withEvent:(UIEvent*)event; -(void)touchesEnded:(NSSet*)touchedwithEvent:(UIEvent*)event; -(void)touchesCanceled:(NSSet*)touchedw…...
JMeter元件作用域和执行顺序
JMeter元件作用域和执行顺序 元件的基本介绍基本元件总结 作用域的基本介绍作用域的原则元件执行顺序Jmeter第一个案例: Jmeter三个重要组件(重点)线程组特点线程组分类线程组的属性案例分析 HTTP请求案例一(使用HTTP请求路径来传…...
Jmeter 聚合报告之 90% Line 正确理解
今天看了些关于Jmeter 聚合报告之 90% Line 的一些博客 关于90% Line 的算法各有各自的见解 。 90%Line可以用公式计算: 100/总个数每一个所占的百分比,90%/每一个所占的百分比90%Line的序号(从小到大排) 例如:1.2.3.…...
2024 解决 Failed to launch process [ElasticSearch]
操作系统:centos 7 (x86) sonarQube不能使⽤root账号进⾏启动,所以需要创建普通⽤户及其⽤户组 一、问题描述:使用root启动时,一直反馈 SonarQube is not running 问题原因:不能够使用root用户进行启动 解决方案…...
平台介绍-搭建赛事运营平台(4)
存储结构是赛事运营平台的核心设计内容。平台整体采用分库结构,各赛事独立享有自己的数据库。但是选手、家长、赛事组织机构、培训机构、老师、志愿者信息都是存储在核心库中。新增报名时,家长或老师首先看自己名下有无该选手信息(对照关系也…...
系列学习前端之第 7 章:一文掌握 AJAX
1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML(中文名:阿贾克斯),就是异步的 JS 和 XML。AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。AJAX 可以在浏览器中向服务器发送异步请求…...
iOS - Runtime - Class的结构
文章目录 iOS - Runtime - Class的结构前言1. Class的结构1.1 Class的结构1.1.1 objc_class1.1.2 class_rw_t1.1.3 class_ro_t 1.2 class_rw_t和class_ro_t的区别1.3 class_rw_t和class_ro_t的关系1.3.1 分析关系1.3.2 原因 1.4 method_t1.4.1 Type Encoding1.4.2 types iOS - …...
MySQL高阶语句(一)
一、常用查询 (增、删、改、查) 对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。 例如只取 10 条数据、对查询结果进行排序或分组等等 1、按关键字排序 PS:类比于windows 任务管理器 使用 SELECT 语…...
ROS实战:5分钟搞定大华网络摄像机RTSP流接入(Ubuntu18.04+Melodic版)
ROS实战:5分钟搞定大华网络摄像机RTSP流接入(Ubuntu18.04Melodic版) 在智能机器人开发领域,实时视频流处理是构建环境感知系统的核心能力之一。大华作为安防行业领先品牌,其网络摄像机被广泛应用于工业检测、智能巡检等…...
终极指南:Redaxios参数序列化完全掌握,自定义查询字符串生成逻辑如此简单
终极指南:Redaxios参数序列化完全掌握,自定义查询字符串生成逻辑如此简单 【免费下载链接】redaxios The Axios API, as an 800 byte Fetch wrapper. 项目地址: https://gitcode.com/gh_mirrors/re/redaxios Redaxios是一个轻量级的Fetch封装库&a…...
WebAgent :基于 MCP 协议打造的智能应用“超级路由器”
本文由云软件体验技术团队李锦浩原创。 在 NextSDK 介绍文章里,我们聊了怎么用 opentiny/next-sdk 给前端页面快速接入智能化能力——几行代码嵌进去,用户扫个二维码,手机上就能弹出一个 Remoter 对话窗口,直接用自然语言远程操控…...
QT5实战:如何用QTreeView打造层级分明的下拉菜单(附完整代码)
QT5实战:用QTreeView构建层级下拉菜单的工程化实现 在桌面应用开发中,标准的下拉菜单往往难以应对复杂的层级数据展示需求。想象一下文件浏览器中的树形目录、多级分类的商品筛选器,或是组织架构中的部门-人员选择场景——这些都需要更强大的…...
3个理由让你选择DeepSeek-Coder-V2:免费开源的AI编程助手
3个理由让你选择DeepSeek-Coder-V2:免费开源的AI编程助手 【免费下载链接】DeepSeek-Coder-V2 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Coder-V2 从代码效率低下到开发流程革新的完整路径 在当今快节奏的软件开发环境中,开…...
利用COMSOL软件对变压器局部放电超声波传播特性进行了有限元声学仿真,首先建立包括变压器油、...
利用COMSOL软件对变压器局部放电超声波传播特性进行了有限元声学仿真,首先建立包括变压器油、铁芯、绕组和基座的变压器几何模型,选取符合声压波动方程的压力声学物理场,建立了局放超声波声源模型,可用于研究固定声源的声压时间和…...
3步打造你的专属AI角色扮演世界:SillyTavern终极指南
3步打造你的专属AI角色扮演世界:SillyTavern终极指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 你是否厌倦了千篇一律的AI对话?是否渴望创造真正有灵魂的虚拟角…...
告别Trello!这款开源看板工具让你的团队协作更高效
1. 为什么你需要一个Trello替代品? 如果你正在使用Trello管理团队项目,可能已经发现了一些痛点。Trello确实简单易用,但随着团队规模扩大或项目复杂度增加,免费版的限制就会显现出来。比如最多只能创建10个看板,每个看…...
智能水塔改造指南:用S7-200PLC+超声波传感器实现低成本自动化
智能水塔改造实战:S7-200PLC与超声波传感器的低成本自动化方案 在农村和小型工厂的实际运营中,水塔作为重要的供水设施,其稳定性和自动化程度直接影响着日常生产和生活。传统的人工监控方式不仅效率低下,还存在水位失控的风险。本…...
VIT模型IP核需要修改的地方
导入路径 "D:\VIT\HG-PIPE\instances\proj_ATTN0\work"选择“open project”整合多个 HLS IP 时 遇到“撞名”此时会报错:Top function not found: there is no function named top INFO: [HLS 200-1510] Running: set_directive_top -name top top...
