物联网CC2530按键单双击分别控制两灯

news/2024/10/14 16:21:28

(1)确定思路单击和双击的效果分别是怎样的(此文章采用简单的延时函数不涉及中断)。首先可以定义一个普通延时delay和一个标志位count变量,这里需有个延时阈值咱们直接可以宏定义B值(这里需要注意宏定义的值一定要大一些否则双击效果不会触发)。

(2)在按下按键等待松开后,让变量count自增去与B比较,小于B时延时让count自增,期间按键被再次按下则实现双击效果

(3)如果在count值自增期间按键并没有被再次按下则实现单击效果(这里单击效果可能略有延时,可通过调节B值解决)
具体代码如下

`#include <iocc2530.h>

define B 1000

unsigned int count = 0;//定义计时变量

void Init_port()//引脚初始化
{
P1DIR |= 0x03;
P1SEL &= ~0x03;
}

void delay(unsigned int time)//定义一个简单延时
{
while(time--);
}

void Scan_P1_2()
{
if(P1_2 == 0)
{
delay(50);//延时消抖
if(P1_2 == 0)//确认按键按下
{
while(P1_2 == 0);//循环检测按键按下
while(count < B)//上面已定义count值为0,小于B再去检测按键是否被再次按下
{
delay(100);
count++;//让计数变量自增
if(P1_2 == 0)
{
delay(100);//延时消抖
if(P1_2 == 0)//确认再次被按下
{
while(P1_2 == 0);
P1_0 = ~P1_0;
count = 0;//实现效果后将计数变量置为0
break;//跳出循环(while(count < B))
}
}
}
if(count >= B)//如果count值自增到延时阈值B之前按键没有再次按下实现单击效果
{
P1_1 = ~P1_1;
count = 0;
}
}
}
}
void main(void)
{
Init_port();
while(1)
{
Scan_P1_2();
}
}

CSDN:https://blog.csdn.net/2301_79116943/article/details/142871186?fromshare=blogdetail&sharetype=blogdetail&sharerId=142871186&sharerefer=PC&sharesource=2301_79116943&sharefrom=from_link

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

5分钟学会使用Linux的 grep、find、ls、wc 命令

01 概述 本系列主要讲解Linux运行时命令,包括网络、磁盘、内存、CPU相关参数等,主要是为了分享怎么通过常见的 Linux 命令去排查相关问题。比如:发现机器的CPU负荷比较高,那么怎么查到是哪个进程CPU占用率比较高?磁盘IO的写入很频繁,怎么查到是哪个进程或线程对磁盘IO频…

python3.6 解析svg保存到mysql

1 import json2 from collections import Counter3 from json import JSONDecodeError4 5 import mysql6 import requests7 from lxml import etree8 9 # 定义远程 SVG 文件的 URL10 file = rD:\tmp_files\jmx\0919_3568.txt11 data_to_insert=[]12 with open(file, r, encodin…

数字游民和远程办公必备的软件!

现在数字游民和远程办公逐渐成为很多年轻人的工作方式 小编搜罗到一个宝藏远程软件ToDesk🆕 让你能身在异地轻松远程控制各种电子设备 实现游玩和工作两不误😎 🔵ToDesk的功能优点有哪些? 1️⃣不限设备和系统,跨界连接超方便 支持PC端-Windows、MacOS、Linux,移动端安…

云电脑玩赛博朋克2077必备三个条件,以ToDesk为例

云电脑近期成为不少用户玩游戏的首选,尤其是面对像《赛博朋克2077》这样硬件要求高的游戏时,价格实惠且性能极高的云电脑,简直是游戏玩家的福音。 市面上虽说有众多云电脑可供我们选择,但小编试用过这么多后还是最推荐ToDesk的云电脑。覆盖的系统够全面,3060和4070配置足够…

css实现的时间线

在一个英文博客上看到用css实现的时间线,看着还是很简单的,写个demo记录下。 <style>.events::before {content: "";position: absolute;top: 0;height: 100%;width: 1px;left: 50%;background: rgb(130, 129, 129);}.events {position: relative;margin: 0.…

mac远程控制软件推荐

Mac远程控制这个软件必须下👍——ToDesk 远程控制最重要的是方便流畅,作为一个深度使用者真的墙裂推荐!这个软件真的太方便打工人了,无论在哪都能远控上Mac电脑,简直是准时下班的救命良药啊! 🔵推荐原因: 1️⃣设备系统无限制,手机平板都能用 支持PC端-Windows、Mac…

WebService

1.创建一个web服务: 创建一个mvc模式的web服务; 2.服务中存在HelloWorld方法以及Plus方法 3.创建一个UnitTest项目,进行调用,调用如下:添加服务引用 测试:

android开发修复第三方库生成的so库名称不是以so结尾的解决方法

需要ubuntu安装patchelf软件:sudo apt-get install patchelf1. 先使用readelf -d查看so内容结构 先使用readelf -d libpsl.so.5.3.5 查看libpsl.so.5.3.5库类型是NEEDED和SONAME的对应的名称是不是以.so结尾的,比如下面的图,libc.so的名称是以.so结尾的我们就不用管,libpsl…