物联网cc2530按键长按短按分别控制亮灯亮灭(详细版)
一.在编辑程序之前搭建其基本框架,如下所示
#include <iocc2530.h>
void main(void)
{
halBoardInit();
while(1)
{
}
}
二.确定所使用的引脚后进行宏定义
#include <iocc2530.h>
#define P1_0 LED1
#define P1_1 LED2
#define P1_2 SW1
void main(void)
{
halBoardInit();
while(1)
{
}
}
三.编写端口初始化
#include <iocc2530.h>
#define LED1 P1_0
#define LED2 P1_1
#define SW1 P1_2
void Init_port()
{
P1SEL &= ~0X03;//将P1_0和P1_1设置为通用输入输出
P1DIR |= 0X03;//将P1_0和P1_1设置为输出
}
void main(void)
{
halBoardInit();
while(1)
{
}
四.编辑一个简单的延时函数
#include <iocc2530.h>
#define LED1 P1_0
#define LED2 P1_1
#define SW1 P1_2
#define B 15//宏定义变量
void Init_port()
{
P1SEL &= ~0X03;//将P1_0和P1_1设置为通用输入输出
P1DIR |= 0X03;//将P1_0和P1_1设置为输出
}
void delay(unsigned int time)
{
while(time--);
}
void main()
{
while(1)
{
}
}
五.如何区分按键长按短按,需宏定义变量和计数变量,此处宏定义变量B 30,计数变量int型,再去编辑扫描代码
#include <iocc2530.h>
#define LED1 P1_0
#define LED2 P1_1
#define SW1 P1_2
#define B 15//宏定义变量
void Init_port()
{
P1SEL &= ~0X03;//将P1_0和P1_1设置为通用输入输出
P1DIR |= 0X03;//将P1_0和P1_1设置为输出
}
void delay(unsigned int time)
{
while(time--);
}
unsigned int count = 0;//设置计数变量
void Scan_SW1()
{
if(SW1 == 0)
{
delay(50);//延时消抖
if(SW1 == 0)
{
count = 0;//每次按下扫描重置count值
while(SW1 == 0)
{
delay(10000);//继续延时
count++;//让count值自加计算按下按键的时长
}
if(count < B)//如果比宏定义的值小实现短按效果
{
LED1 = ~LED1;
}
else//反之如果比宏定义的值大实现长按效果
{
LED2 = ~LED2;
}
}
}
}
void main()
{
while(1)
{
}
}
六.最后一步,完成主函数main的编辑(完全代码)
#include <iocc2530.h>
#define LED1 P1_0
#define LED2 P1_1
#define SW1 P1_2
#define B 15//宏定义变量
void Init_port()
{
P1SEL &= ~0X03;//将P1_0和P1_1设置为通用输入输出
P1DIR |= 0X03;//将P1_0和P1_1设置为输出
}
void delay(unsigned int time)
{
while(time--);
}
unsigned int count = 0;//设置计数变量
void Scan_SW1()
{
if(SW1 == 0)
{
delay(50);//延时消抖
if(SW1 == 0)
{
count = 0;//每次按下扫描重置count值
while(SW1 == 0)
{
delay(10000);//继续延时
count++;//让count值自加计算按下按键的时长
}
if(count < B)//如果比宏定义的值小实现短按效果
{
LED1 = ~LED1;
}
else//反之如果比宏定义的值大实现长按效果
{
LED2 = ~LED2;
}
}
}
}
void main(void)
{
Init_port();
while(1)
{
Scan_SW1();
}
}
物联网cc2530按键长按短按分别控制亮灯亮灭(详细版)的更多相关文章
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...
- CC2530学习路线-基础实验-定时器控制LED灯亮灭(3)
目录 1. 前期预备知识 1.1 定时器中断触发 1.2 相关寄存器 1.3 寄存器相关问题 1.4 T1.T3定时器初始化流程 2 程序及代码 THE END 1. 前期预备知识 1.1 定时器中断 ...
- CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)
目录 1.前期预备知识 1.1 新大陆ZigBee模块LED灯电路 1.2 CC2530相关寄存器 1.3 寄存器操作技巧 1.4 CPU空转延时 1.4 操作流程图 2.程序代码 The End 1 ...
- cc2530的第三次实验,按键中断控制流水灯
cc2530的第三次实验:按键中断控制流水灯 效果为按一次按键,流水灯亮一次 实验相关电路图: 实验相关寄存器: 初始化函数 //初始化LED灯 //设置P1SEL,通用为0,外设为1 1111110 ...
- 长按短按控制LED灯-ESP32中断处理
#include <stdio.h> #include <string.h> #include <stdlib.h> #include "freertos ...
- 通知短信 API 接入全流程(超详细整理)
随着移动互联网和智能手机的普及,短信成为了一种便捷.快速且有效的通信方式,尤其在向用户发送重要信息或提醒方面具有很大的优势. 本文将会深入探讨如何在程序中接入通知短信 API 实现短信通知功能,此外, ...
- [蓝点ZigBee] Zstack 之按键驱动以及控制LED灯 ZigBee/CC2530 视频资料
这一节主要演示如何在Zstack 下根据板子的不同修改按键驱动,实际演示的时候代码跳动比较多,建议大家除了看视频资料以外,还需要在网上找一下相关资料进一步学习. 视频总览:http://bphero. ...
- 物联网架构成长之路(6)-EMQ权限控制
1. 前言 EMQTT属于一个比较小众的开源软件,很多资料不全,很麻烦,很多功能都是靠猜测,还有就是看官方提供的那几个插件,了解. 2. 说明 上一小节的插件 emq_plugin_wunaozai ...
- 转战物联网·基础篇08-例说MQTT协议各控制报文
前面讨论了MQTT协议的控制报文的格式,下面分别举例探讨各个控制报文的详细内容. 01.CONNECT – 连接服务端 客户端到服务端的网络连接建立后,客户端发送给服务端的第一个报文必须是CO ...
- cc2530的第二次实验,用按键控制流水灯
按键控制流水灯 具体想要实现按一下按键,然后单片机的三个灯会以流水灯的形式都亮一遍 实验相关寄存器 实验相关电路 宏定义 #define uint unsigned int #define uchar ...
随机推荐
- Angular 18+ 高级教程 – Signals
前言 首先,我必须先说明清楚.Signal 目前不是 Angular 的必备知识. 你的项目不使用 Signal 也不会少了条腿,断了胳膊. Angular 官方维护的 UI 组件库 Angular ...
- ASP.NET Core – Minimal API
介绍 Minimal API 是 .NET 6 才开始有的功能. 它是一个简化版本的 Web API. 我还没有认真的去学习它, 感觉它走的是 Node.js Express 的路线. 目前用它来写小 ...
- 《Spring Data JPA从入门到精通》内容简介、前言
内容简介 本书以Spring Boot为技术基础,从入门到精通,由浅入深地介绍Spring Data JPA的使用.有语法,有实践,有原理剖析. 本书分为12章,内容包括整体认识JPA.JPA基础查询 ...
- 【解决方案】基于数据库驱动的自定义 TypeHandler 处理器
目录 前言 一.TypeHandler 简介 1.1转换步骤 1.2转换规则 二.JSON 转换 三.枚举转换 四.文章小结 前言 笔者在最近的项目开发中,频繁地遇到了 Java 类型与 JDBC 类 ...
- iOS中UIlabel多行文本展示使用小结
最近在项目开发中遇到了一个新的需求,就是菜单标题最多两行展示,一行展示的标签顶部和两行展示的标签顶部对齐.看到要求后,第一反应是这是什么奇葩的设计,但是没办法谁让别人是产品经理呢.细细思索后,代码如下 ...
- 009 Pycharm的使用(各种骚操作和快捷键)
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- KubeSphere 3.1.0 GA:混合多云走向边缘,让应用无处不在
2021 年 4 月 29 日,KubeSphere 开源社区激动地向大家宣布,KubeSphere 3.1.0 正式发布!为了帮助企业最大化资源利用效率,KubeSphere 打造了一个以 Kube ...
- Redis的发布订阅Pub/Sub
发布订阅 Redis 发布订阅(publish/subscribe)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 ...
- mini-web框架 添加log日志
阅读目录: 1.mini-web框架-路由支持正则 2.mini-web框架-mysql-增 3.mini-web框架-mysql-删 4.mini-web框架-mysql-改 5.mini-web框 ...
- 使用BackgroundService创建Windows 服务
使用管理员权限启动cmd.exe 安装服务 sc.exe create ".NET Joke Service" binpath="C:\Path\To\App.Windo ...