当前位置:网站首页>独立按键控制led进阶(1)
独立按键控制led进阶(1)
2022-07-30 05:46:00 【缘聚654】
通过上次的了解,已经掌握了控制led亮灭,但是不足的是只有当按键按下时灯亮,而松手后灯就熄灭了,那么为了能完善一下,下面学要对程序进阶一下
我们需要一段代码来判断一下按键的状态然后再对led的状态进行改变,这里需要在if语句中引入一个while循环来实现
#include <REGX52.H>
#include <INTRINS.H>
void Delay1ms(int xms)
{
unsigned char i, j;
while(xms--)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
while(1)
{
if(P3_1==0)
{
Delay1ms(20);
while(P3_1==0);
Delay1ms(20);
P2_0=~P2_0;
}
}
}
解释一下代码的运行过程,首先判断按键是否按下,然后进入while循环,当按键按下但没有松开时,循环体会一直循环,从而不运行下面的代码,当按键松开时便跳出循环,执行对led进行操作的语句P2_0=~P2_0;这里的~是取反的意思,即led不亮时转化为亮,亮时转化为灭,然后循环上述内容,即每当对按键进行一次操作都会改变led的状态。
对单片机进行操作后的结果如下
然后在此基础上加入一些新功能,按键控制led二进制显示。
控制led二进制显示需要用到整个led模块的8个led,所以这里用P2对模块进行整体控制,但是由于直接对P2进行赋值比较复杂引入一个中间变量lednum,并使其从0开始逐次加一,并且每次取反后的值赋给P2就能实现led的二进制显示
#include <REGX52.H>
void Delay1ms(int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
unsigned char lednum=0;
while(1)
{
if(P3_1==0)
{
Delay1ms(20);
while(P3_1==0);
Delay1ms(20);
lednum++;
P2=~lednum;
}
}
}
操作现象如下
边栏推荐
- js 替换字符串中所有 “ 引号 —— 数据处理
- openssl 1.1.1编译语句
- QT serial and CAN dynamic real-time display the log data
- Difference between logical shift right and arithmetic right shift
- 干货 | 什么是FOC?一文带你看BLDC电机驱动芯片及解决方案
- Antd简单启动一个企业级项目
- jvm之逃逸分析
- i++与 ++i 的区别
- QT serial 4: LORA test platform based on QT and STM32H750 (3)
- Kunlun On-state Screen Production (serial 1)---Contact
猜你喜欢
无法完成包的安装npm ERR! Refusing to install package with name “moment“ under a package also called “moment“
QT weekly skills (2)~~~~~~~~~ interface buttons
Antd简单启动一个企业级项目
SSH-RSA密钥
this的指向问题
昆仑通态屏幕制作(连载3)---基础篇(按钮串口发送)
【正点原子】sys.c、sys.h位带操作的简单应用
vscode set sublime theme
二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
ES6 syntax notes (ES6~ES11)
随机推荐
vscode set sublime theme
QT连载3:基于QT和STM32H750的LORA试验平台(2)
FPGA parsing B code----serial 2
虚拟机栈帧结构
基于QT的CAN通讯数据实时波形显示(连载八)====“子函数或新类调用ui控件”
信号链模拟芯片是什么?
顺序二叉树---实现数组的二叉树前序遍历输出
Acwing刷题第一节
Diwen serial screen production (serialization 1) ===== preparation work
ipconfig Command Guide
昆仑通态屏幕制作(连载2)---基础篇(设定与显示,串口发送)
主机和从机配置,建立ssh连接实现Rviz远程控制
Knowledge of the day: handwritten deep copy and shallow copy (solves the problem of circular references)
【markdown常用用法】
JS的值和引用,复制和传递
NS3报错 fatal error: ns3/opengym-module.h: No such file or directory
QT serial 2: LORA test platform based on QT and STM32H750 (1)
Cannnot download sources不能下载源码百分百超详细解决方案
2020-09-03解决pip install安装非常慢[Errno 101] 网络不可达问题
SSH-RSA密钥