物联网CC2530按键单双击分别控制两灯
(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();
}
}
物联网CC2530按键单双击分别控制两灯的更多相关文章
- cc2530的第三次实验,按键中断控制流水灯
cc2530的第三次实验:按键中断控制流水灯 效果为按一次按键,流水灯亮一次 实验相关电路图: 实验相关寄存器: 初始化函数 //初始化LED灯 //设置P1SEL,通用为0,外设为1 1111110 ...
- cc2530的第二次实验,用按键控制流水灯
按键控制流水灯 具体想要实现按一下按键,然后单片机的三个灯会以流水灯的形式都亮一遍 实验相关寄存器 实验相关电路 宏定义 #define uint unsigned int #define uchar ...
- JQuery如何实现双击事件时不触发单击事件,解决鼠标单双击冲突问题
在jQuery的事件绑定中,如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblcli ...
- WinForm中DataGridView的使用(四) - 区分单双击事件
虽然DataGridView单双击事件都有,但双击事件其实也会触发单击事件的处理,所以如果双击事件和单击事件的行为不同,或者双击时不想触发单击事件,或者单击事件会阻塞双击事件的处理时(比如单击后会有弹 ...
- jQuery解决鼠标单双击问题
html代码如下: <button>点击</button> JQ代码如下: <script> $(function () { // 编写相关jQuery代码 // ...
- JQuery解决鼠标单双击冲突问题
转自链接:https://www.shuzhiduo.com/A/xl560MKrzr/ 在jQuery的事件绑定中,如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单 ...
- Python使用进程间共享变量来控制两个进程(监听键盘和相机录制)的交互
我有个简单的应用需求: 1. 该应用随时会监听键盘的输入: 2. 当输入指定键时会控制相机录制的启动和关闭. 监听键盘是一个事件循环,相机录制也是一个循环录制的过程.我试着用 Python 启动两个进 ...
- C#的提交表单方式主要有两种WebClient与HttpWebRequest
根据黄聪:C#模拟网站页面POST数据提交表单(转) using System; using System.Collections.Generic; using System.IO; using Sy ...
- 单节点nginx为两台apache服务器提供负载均衡
需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 [root@host101 ~]# vim /etc/hosts 19 ...
- iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)
一.推荐关注模块(一个控制器控制两个tableView) -- 数据的显示 刚开始加载数据值得注意的有以下几点 导航控制器会自动调整scrollView的contentInset,最好是取消系统的设置 ...
随机推荐
- Google Ads – 大杂烩
广告相互竞争, 自己打自己? About similar keywords in a Google Ads account 如果用户的搜索能匹配到广告 Campaign 中多个广告的话, 会怎么样? ...
- sign与unsigned的原理、数据存储与硬件的关系
目录 关键字unsigned和signed 数据在计算机中的存储 原码 与 补码的转化与硬件关系 原,反,补的原理: 整型存储的本质 变量存取的过程 类型目前的作用 十进制与二进制快速转换 大小端字节 ...
- 生理性喜欢(把我吃掉&病态饥饿)
alloverzyt 转载好文章 https://www.zhihu.com/question/627599874/answer/3494578704 什么是生理性喜欢? 是吃掉. 这不是什么夸张的写 ...
- 《Vue.js 设计与实现》读书笔记 - 第10章、双端 Diff 算法
第10章.双端 Diff 算法 10.1 双端比较的原理 上一章的移动算法并不是最优的,比如我们把 ABC 移动为 CAB,如下 A C B --> A C B 按照上一章的算法,我们遍历新的数 ...
- vue本地项目启动时遇到coreJs相关报错问题处理
启动项目的时候报错 : 是因为core.js这个包丢失,需要大家重新下载即可 : yarn add core-js
- 将数组数据转化成树形结构 tranListToTreeData
export function tranListToTreeData(list, rootValue) { // list是最完整的数组 let arr = []; // 记录儿子 list.forE ...
- js中 操作符new 的作用和含义
作用:通过构造函数创建实例对象 :通过 new 出来的实例可以访问构造函数的属性和方法 :
- 18 Transformer 的动态流程
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- 强大灵活的文件上传库:FilePond 详解
文件上传是 Web 开发中常见的功能,尤其是对于图片.视频.文档等大文件的处理,如何既保证用户体验,又兼顾安全和性能,是每位开发者关心的问题.在这样的背景下,FilePond 作为一款灵活强大的文件上 ...
- 01 Eclipse使用Maven慢的问题解决
1. Eclipse 使用的是内置的 Maven Eclipse 有可能使用了内置的 Maven,而不是独立安装的 Maven.如果使用 Eclipse 内置的 Maven,默认的 settings. ...