一.在编辑程序之前搭建其基本框架,如下所示


#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按键长按短按分别控制亮灯亮灭(详细版)的更多相关文章

  1. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

  2. CC2530学习路线-基础实验-定时器控制LED灯亮灭(3)

    目录 1. 前期预备知识 1.1 定时器中断触发 1.2 相关寄存器 1.3 寄存器相关问题 1.4 T1.T3定时器初始化流程 2 程序及代码 THE END 1. 前期预备知识 1.1 定时器中断 ...

  3. CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)

    目录 1.前期预备知识 1.1 新大陆ZigBee模块LED灯电路 1.2 CC2530相关寄存器 1.3 寄存器操作技巧 1.4 CPU空转延时 1.4 操作流程图 2.程序代码 The End 1 ...

  4. cc2530的第三次实验,按键中断控制流水灯

    cc2530的第三次实验:按键中断控制流水灯 效果为按一次按键,流水灯亮一次 实验相关电路图: 实验相关寄存器: 初始化函数 //初始化LED灯 //设置P1SEL,通用为0,外设为1 1111110 ...

  5. 长按短按控制LED灯-ESP32中断处理

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include "freertos ...

  6. 通知短信 API 接入全流程(超详细整理)

    随着移动互联网和智能手机的普及,短信成为了一种便捷.快速且有效的通信方式,尤其在向用户发送重要信息或提醒方面具有很大的优势. 本文将会深入探讨如何在程序中接入通知短信 API 实现短信通知功能,此外, ...

  7. [蓝点ZigBee] Zstack 之按键驱动以及控制LED灯 ZigBee/CC2530 视频资料

    这一节主要演示如何在Zstack 下根据板子的不同修改按键驱动,实际演示的时候代码跳动比较多,建议大家除了看视频资料以外,还需要在网上找一下相关资料进一步学习. 视频总览:http://bphero. ...

  8. 物联网架构成长之路(6)-EMQ权限控制

    1. 前言 EMQTT属于一个比较小众的开源软件,很多资料不全,很麻烦,很多功能都是靠猜测,还有就是看官方提供的那几个插件,了解. 2. 说明 上一小节的插件 emq_plugin_wunaozai ...

  9. 转战物联网·基础篇08-例说MQTT协议各控制报文

      前面讨论了MQTT协议的控制报文的格式,下面分别举例探讨各个控制报文的详细内容. 01.CONNECT – 连接服务端   客户端到服务端的网络连接建立后,客户端发送给服务端的第一个报文必须是CO ...

  10. cc2530的第二次实验,用按键控制流水灯

    按键控制流水灯 具体想要实现按一下按键,然后单片机的三个灯会以流水灯的形式都亮一遍 实验相关寄存器 实验相关电路 宏定义 #define uint unsigned int #define uchar ...

随机推荐

  1. Angular 18+ 高级教程 – Signals

    前言 首先,我必须先说明清楚.Signal 目前不是 Angular 的必备知识. 你的项目不使用 Signal 也不会少了条腿,断了胳膊. Angular 官方维护的 UI 组件库 Angular ...

  2. ASP.NET Core – Minimal API

    介绍 Minimal API 是 .NET 6 才开始有的功能. 它是一个简化版本的 Web API. 我还没有认真的去学习它, 感觉它走的是 Node.js Express 的路线. 目前用它来写小 ...

  3. 《Spring Data JPA从入门到精通》内容简介、前言

    内容简介 本书以Spring Boot为技术基础,从入门到精通,由浅入深地介绍Spring Data JPA的使用.有语法,有实践,有原理剖析. 本书分为12章,内容包括整体认识JPA.JPA基础查询 ...

  4. 【解决方案】基于数据库驱动的自定义 TypeHandler 处理器

    目录 前言 一.TypeHandler 简介 1.1转换步骤 1.2转换规则 二.JSON 转换 三.枚举转换 四.文章小结 前言 笔者在最近的项目开发中,频繁地遇到了 Java 类型与 JDBC 类 ...

  5. iOS中UIlabel多行文本展示使用小结

    最近在项目开发中遇到了一个新的需求,就是菜单标题最多两行展示,一行展示的标签顶部和两行展示的标签顶部对齐.看到要求后,第一反应是这是什么奇葩的设计,但是没办法谁让别人是产品经理呢.细细思索后,代码如下 ...

  6. 009 Pycharm的使用(各种骚操作和快捷键)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  7. KubeSphere 3.1.0 GA:混合多云走向边缘,让应用无处不在

    2021 年 4 月 29 日,KubeSphere 开源社区激动地向大家宣布,KubeSphere 3.1.0 正式发布!为了帮助企业最大化资源利用效率,KubeSphere 打造了一个以 Kube ...

  8. Redis的发布订阅Pub/Sub

    发布订阅 Redis 发布订阅(publish/subscribe)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 ...

  9. mini-web框架 添加log日志

    阅读目录: 1.mini-web框架-路由支持正则 2.mini-web框架-mysql-增 3.mini-web框架-mysql-删 4.mini-web框架-mysql-改 5.mini-web框 ...

  10. 使用BackgroundService创建Windows 服务

    使用管理员权限启动cmd.exe 安装服务 sc.exe create ".NET Joke Service" binpath="C:\Path\To\App.Windo ...