首页 > 其他分享 >物联网CC2530按键单双击分别控制两灯

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

时间:2024-10-14 16:10:10浏览次数:1  
标签:count 两灯 P1 CC2530 while 按下 延时 按键 双击

(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

标签:count,两灯,P1,CC2530,while,按下,延时,按键,双击
From: https://www.cnblogs.com/9539msp112233/p/18460276

相关文章

  • ubuntu 双击sh脚本文件有时候显示运行有时候直接被gedit打开
    前言全局说明ubuntu双击sh文件有时候显示运行有时候直接被gedit打开一、说明环境:Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMPWedMay2400:51:42UTC2023x86_64x86_64x86_64GNU/Linux)二、开启sh脚本文件询问打开或运行1.打开......
  • sap 报表 ZALV_XZH(新增报表空白行且双击字段生成一行)demo
    *&---------------------------------------------------------------------**&ReportZALV_XZH*&---------------------------------------------------------------------**&*&---------------------------------------------------------------------......
  • WPS JS宏单元格双击打勾
    一行代码,rg.Value2=就可以实现在任意单元格里输入等号后面的内容。如果想要在表格中加入限制,在规定范围内的单元格中随意输入。 rg.Column==限制了等号后面,输入的列rg.Cells!=限制单元格内容。rg.MergeCells==判断是否是合并单元格完整代码functionWorkbook_Sheet......
  • 解决方案 | Claunch如何实现双击CTRL键(连续按下2次CTRL)呼出启动页面?
     众所周知,listary可以连续按下2次CTRL键用于打开搜索界面。  为了方便, Claunch其实也可以通过键盘启动,本次给出方法: Claunch如何实现连续按2次CTRL键(这里以SHIFT键演示,因为我的ctrl键已经被listary占用)呼出启动页面。  Claunch右键---选项---键盘----热键-----按下sh......
  • windbg 搭建双击调试环境
    当我们搭建好驱动开发环境后,就可以设置双机调试了,虚拟机的安装可以参考网上其他教程,比较简单,我们直接来讲设置双击调试需要注意的一些地方。1.设置被调试的虚拟机首先,将虚拟机关机,如果此时已经有了串行端口存在首先移除,管道名字输入\\.\pipe\com_1,并选择“该端是服务器”、“另......
  • ultra vnc viewer无法直接双击打开vnc配置
    需要修改注册表,为打开方式添加参数/config[HKEY_CLASSES_ROOT\Applications\vncviewer.exe\shell\open\command]@="\"xxxxxx\\vncviewer.exe\"/config\"%1\""HKEY_CLASSES_ROOT\Applications\vncviewer.exe\shell\open\command"C:......
  • 解决方案 | listary 双击ctrl不生效,不启动搜索工具条 (困扰了我2天,终于解决)
    一、问题描述快捷键设置是正常的,但是双击ctrl不生效,不启动搜索工具条。(其实是大屏幕不显示,我一直盯着大屏幕,没看笔记本;本方法适用于同时使用笔记本和显示器)  解决思路来源 二、解决方法 只需要把接着笔记本的hdmi线路拔掉重插,然后再重新启动listary即可正常在笔记......
  • ActiViz实战:ActiViz中的自己实现鼠标双击事件
    文章目录1、添加鼠标事件2、网上实现双击事件的方式3、增加双击的时间限制4、补充说明1、添加鼠标事件  已知在C#中观察者/命令模式会报错,正常添加鼠标事件如下:privatevoidVtkInteractorStyleTest(){vtkInteractorStylestyle=vtkInteractorS......
  • excel单元格设置为文本为何还要双击
    excel单元格设置为文本时为何还要双击才有效?我选定一行,用右键设置为文本,为何还要单个逐一双击才有效,否则选定求和时(包含其中一个单元格),仍视为数值。而逐一双击太麻烦,怎么解决?因为这是excel默认设置,如想要不单个操作,可使用分列的方式来批量处理。具体操作方式如下:1、以Excel201......
  • 【C#】MouseDown与MouseDoubleClick事件,如果此时双击,那么这俩事件的是否都响应?如果都
    问题描述MouseDown与MouseDoubleClick事件,如果此时双击,那么这俩事件的是否都响应?如果都响应,那么应该先执行那个方法?问题响应在WindowsForms或WPF等基于事件的GUI框架中,MouseDown和MouseDoubleClick是两个不同的鼠标事件。当双击鼠标时,这两个事件都可能被触发,但是它们的......