首页 > 其他分享 >06_独立按键

06_独立按键

时间:2023-11-04 14:55:24浏览次数:39  
标签:P2 LED -- 独立 Delay while 按键 06

独立按键

image-20231102170335622

原理图

image-20231102170530370

控制LED单个灯的寄存器

image-20231102202149086

独立按键控制LED亮灭

#include <REGX52.H>

void main()
{
	while(1)
	{
		if(P3_1 == 0)
		{
			P2_0=0;
		}
		else
		{
			P2_0=1;
		}
	}
}

运行效果

VID_20231102_204428

按键的抖动

image-20231103145253108

消除抖动可以使用延迟20ms

消除按键抖动后的控制LED状态取反

#include <REGX52.H>

void Delay(unsigned int xms)	//@12.000MHz
{
	unsigned char data i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
	
}

void main()
{
	while(1)
	{
		if(P3_1==0)
		{
			//消除按键抖动
			Delay(20);
			while(P3_1==0);
			Delay(20);
			//LED D1取反
			P2_0=~P2_0;
		}
	}
}

LED移位亮灯

#include <REGX52.H>

void Delay(unsigned int xms)	//@12.000MHz
{
	unsigned char data i, j;

	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

void main()
{
	int count = 0;
	while(1)
	{
		if(P3_1==0)
		{
			//消除抖动
			Delay(20);
			while(P3_1==0);
			Delay(20);
			
			//LED移位亮灯
			P2=~(0x01<<count++);
			if(count==8)
			{
				count=0;
			}
		}
	}
}

VID_20231104_141029

标签:P2,LED,--,独立,Delay,while,按键,06
From: https://www.cnblogs.com/mzx233/p/17809343.html

相关文章

  • 【牛客顺序结构 06】kiki学程序设计基础
    链接:https://ac.nowcoder.com/acm/contest/18839/1006来源:牛客网题目描述BoBo老师教了KiKi学习程序设计基础,他知道C++是带类的C语言,这个“++”主要包含三部分内容:对C语言进行语法上的扩展、面向对象(封装、继承和多态),STL(即模板)。这学期KiKi学习了C......
  • java判断按键是否按下
    Java判断按键是否按下的实现1.简介在Java中,可以使用java.awt.event.KeyEvent类来判断按键是否按下。本文将为刚入行的小白介绍如何实现Java判断按键是否按下的方法。2.实现步骤以下是实现Java判断按键是否按下的步骤:步骤 描述步骤1 创建一个KeyListener对象步骤2 实现KeyList......
  • vscode 怎么在 ctrl+p ( 转到文件 ) / ctrl+shift+o ( 转到编辑器中的符号 ) 时通过自
    解决方法:使用PowerToy( microsoft/PowerToys:Windowssystemutilitiestomaximizeproductivity(github.com) )来进行按键映射。    ......
  • 修改windows电脑键盘按键映射
    改键的需求买了一把61键的小键盘,有些按钮没有,比如Home、End、四个方向键,这些键需要按Fn+XX来实现,所以上网查了一下键盘按键修改的方法,即把按键给改了,比如把右边的Ctrl改成方向键。显示当前按下的键显示当前按下的按键,免费软件:适用于PC|的击键可视化工具显示按下的键-沃维......
  • Codeforces Round 906 (Div. 2) Doremy's Drying Plan E1.&E2
    传送门先考虑\(E1\)只需要删除两条线使得不被覆盖的点数最多。观察到点数只有\(200000\)那么我们完全可以先将被至少\(3\)条线覆盖的点删掉。考虑枚举一条线,枚举这条线覆盖的点寻找另外一条线覆盖这些点中的最大值,然后再找没覆盖这些点之外的线的最大值即可。复杂度容易证明......
  • P9740 「KDOI-06-J」ION 比赛 题解
    题目思路:先计算总分数\(sum\),\(c_i=\frac{100}{a_i}\)为每道题的每个测试点分数。如果总分数达到\(Au\)线,直接输出AlreadyAu.。否则计算到达\(Au\)线还需多少分\(p\),遍历所有题,求出每道题的失分,如果失分大于等于\(p\),则输出\(\lceil\frac{p}{c_i}\rceil\),即至......
  • CodeForces 1060G Balls and Pockets
    洛谷传送门CF传送门NOIP模拟赛T2。很厉害的题。想象数轴上\(a_1,a_2,\ldots,a_n\)位置上各有一个洞,每个非负整数位置上有一个点。每次操作相当于,对于每个点,如果它刚好位于一个洞,那么它会掉进去;否则设它的位置为\(p\),位置在它前面的洞有\(t\)个,那么这个点的位置变成......
  • 06. UDP广播
    一、什么是广播  UDP广播是一种网络通信的方式,在广域网或局域网中,UDP广播可以向多个目标主机发送数据包,使得网络中的所有设备都能接收到广播消息。使用广播之后,socket只需要发送一次UDP数据,就可以发送给本局域网中的任何一台电脑相同的数据。二、UDP广播的流程importso......
  • qt按键图标大小和设置大小不符的问题记录
    问题描述:在导航栏中有几个toolbuttoon,ui文件设置的控件大小相同但图标大小不同问题解决:经过排查,图片和ui文件没有问题,最后发现qss样式中border-image,background-image和image对于相同图标会显示出不同大小。#background-image只根据图片资源的大小,不按照控件的大小,相对于控......
  • Codeforces Round 906 (Div. 2)
    CodeforcesRound906(Div.2)比赛链接A.Doremy'sPaint3题目链接判断给定的数组是不是满足a1+a2=a2+a3=a3+a4=......=an-1+anA思路:这个题一开始没有读仔细问题,导致一时间出错了,后来读清楚问题之后发现其实这个数组中只能出现两个数字,且两个数字之间的差值最多是1A代码:......