单片机---独立按键

[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;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

标题:深入了解 ES6 模块化技术

在 ES6 版本之前&#xff0c;JavaScript 一直缺乏一个内置的模块系统&#xff0c;这给大型项目的开发带来了一些挑战。ES6 引入了模块化的概念&#xff0c;为 JavaScript 开发者提供了一种更好的组织和管理代码的方式。 模块是 JavaScript 的一种代码组织方式&#xff0c;它将代…

界面控件DevExpress WinForms/WPF v23.2 - 电子表格支持表单控件

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

数据结构奇妙旅程之深入解析插入排序

插入排序&#xff08;Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常采用in-place排序&#xff0…

QGraphicsView(平移/缩放/旋转)

简述 Graphics View提供了一个平台&#xff0c;用于大量自定义 2D 图元的管理与交互&#xff0c;框架包括一个事件传播架构&#xff0c;支持场景 Scene 中的图元 Item 进行精确的双精度交互功能。Item 可以处理键盘事件、鼠标按下、移动、释放和双击事件&#xff0c;同时也能跟…

鸿蒙OS封装【axios 网络请求】(类似Android的Okhttp3)

Okhttp.ets /*** 网络请求*/ import axios from ohos/axios import httpConstants from ../net/HttpConstants import errorCode from ../utils/errorCode import toast from ../utils/ToastUtils import router from ../utils/RouterUtils import SPUtils from ../utils/SPUt…

毕马威:量子计算成未来3-5年重大挑战

毕马威&#xff08;KPMG&#xff09;是一家全球性的专业服务网络&#xff0c;其历史可追溯到19世纪末。作为“四大”会计师事务所之一&#xff0c;毕马威在审计、税务和咨询服务领域享有盛誉。公司在全球范围内拥有多个办事处&#xff0c;服务遍及各个行业&#xff0c;包括金融…

5.1 物联网RK3399项目开发实录-Android开发之ADB使用(wulianjishu666)

物联网项目开发实例&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11VQMhHfIL9mZhNlls4wmjw?pwd0gfa 1. ADB 使用 1.1. 前言 ADB&#xff0c;全称 Android Debug Bridge&#xff0c;是 Android 的命令行调试工具&#xff0c;可以完成多种功能&#xff0c;如跟踪系…

CentOS Stream 8系统配置阿里云YUM源

Linux运维工具-ywtool 目录 一.系统环境二.修改yum文件2.1 CentOS-Stream-AppStream.repo2.2 CentOS-Stream-BaseOS.repo2.3 CentOS-Stream-Extras.repo 三.只有一个配置文件四.其他知识4.1 如果想要启用其他源,修改文件配置:enabled14.2 国内源链接 一.系统环境 CentOS Strea…

Linux一键式安装JDK、Mysql、Redis、Nginx(附带安装包,无需手动配置密码等)

安装包 新服务器安装前置准备 1. 设置系统时区 # 查看服务器时区 timedatectl # 设置服务器时区为上海 timedatectl set-timezone Asia/Shanghai # 设置系统时间为“2021-3-19 11:00:00” date -s "2021-3-19 11:00:00" # 查看校准后的系统时间 date …

[C++]内联函数(内联函数的概念,内联函数的特性,内联函数与宏的区别)

一、内联函数的概念 以inline修饰的的函数叫内联函数&#xff0c;编译时C编译器会在调用内联函数的位置将内联函数展开&#xff0c;内联函数没有调用函数参数压栈的开销&#xff0c;内联函数可以提高程序的运行效率。 例子&#xff1a; 没有使用内联函数 使用内联函数&#xff…

uniapp小程序中onShareAppMessage(OBJECT)实现带参数的分享功能

一、引言 小程序中用户点击分享后&#xff0c;在 js 中定义 onShareAppMessage 处理函数&#xff08;和 onLoad 等生命周期函数同级&#xff09;&#xff0c;设置该页面的分享信息。 用户点击分享按钮的时候会调用。这个分享按钮可能是小程序右上角原生菜单自带的分享按钮&…

【SpringBoot整合系列】SpringBoot3.x整合Swagger

目录 产生背景官方解释&#xff1a;作用SpringBoot3整合Swagger注意事项swagger3 常用注解SpringBoot3.x整合Swagger1.创建工程(jdk:17,boot:3.2.4)2.引入pom依赖3.application.yml添加配置4.添加swagger3.0配置5.控制器层(Controller)6.模型层(Model)7.启动并测试【Get请求接口…

一、Spring Cloud(Base工程构建)

一、Spring Cloud&#xff08;Base工程构建&#xff09; 1.1 Spring Cloud 简述 1.1.1 Spring Cloud 版本推荐 在讲解 Spring Cloud 之前&#xff0c;首先推荐一下各个依赖的版本&#xff0c;以免出现版本错误 版本推荐 必须根据以上版本&#xff0c;否则可能会出现一些不…

鸿蒙harmonyOS常用基础标签、组件、事件等用法介绍

基础组件 text &#xff1a; 字体标签&#xff0c;汉字显示必须用字体组件包裹&#xff0c;规范规定&#xff0c;不写不显示image&#xff1a;图片标签&#xff0c;属性&#xff1a;src&#xff0c;路径相对路径…/方式button&#xff1a;按钮标签&#xff0c;属性&#xff1a…

Hana数据库 No columns were bound prior to calling SQLFetch or SQLFetchScroll

在php调用hana数据库的一个sql时报错了&#xff0c;查表结构的sql&#xff1a; select * from sys.table_columns where table_name VBAP SQLSTATE[SL009]: <<Unknown error>>: 0 [unixODBC][Driver Manager]No columns were bound prior to calling SQLFetch …

智能小程序开发 —— meature API 汇总(二)

resetStatistics 重置设备的统计数据。 注意&#xff1a;该方法会清空统计数据&#xff0c;请注意使用方式&#xff01; 请求参数 参数数据类型说明是否必填devIdstring设备 ID是 请求示例 // ray-js/ray^1.2.12 import {resetStatistics} from ray-js/ray;resetStatisti…

基于SpringBoot和Leaflet的行政区划地图掩膜效果实战

目录 前言 一、掩膜小知识 1、GIS掩膜的实现原理 2、图层掩膜流程 二、使用插件 1、leaflet-mask介绍 2、核心代码解释 三、完整实例实现 1、后台逻辑实现 2、省级行政区划查询实现 3、行政区划定位及掩膜实现 4、成果展示 总结 前言 在之前的博客提过按空间矢量…

hadoop 常用命令

hadoop 常用命令 hadoop fs -mkdir /test hadoop fs -put /opt/frank/tb_test03.txt /test/ hadoop fs -ls /test/ hadoop fs -cat /test/tb_test03.txt hadoop fs -rm /test/tb_test03.txt hadoop dfs 也能使用、但不推荐&#xff0c;执行会提示&#xff1a; DEPRECATED: Us…

GPT大语言模型助力R语言开展数据统计分析

自2022年GPT&#xff08;Generative Pre-trained Transformer&#xff09;大语言模型的发布以来&#xff0c;它以其卓越的自然语言处理能力和广泛的应用潜力&#xff0c;在学术界和工业界掀起了一场革命。在短短一年多的时间里&#xff0c;GPT已经在多个领域展现出其独特的价值…

【STM32+HAL】I2C+DMA读取AS5600编码器

一、DMA的应用 有关更多DMA的应用&#xff0c;详见【STM32HAL】DMA应用 二、HAL库配置 1、开启I2C 开启对应DMA及中断 2、开启串口通信 至此&#xff0c;HAL库配置完毕 三、DMA版&#xff08;高效但不稳定&#xff09; 1、as5600.c #include "AS5600.h" #includ…