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


#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. PMP——如何区分项目启动会和开踢会?

    在PMP考试中非常强调两个重要会议,一个叫做启动会(Initiating Meeting),另一个叫做开踢会议(Kick-off Meeting),俗称两会. 项目启动会的作用是通过发布项目章程来授权 ...

  2. Task 笔记

    1.计时器类Stopwatch Stopwatch stopwatch=new Stopwatch() stopwatch.Start();//开始计时 stopwatch.Stop();//停止计时 ...

  3. ModbusTCP通信协议分析

    前言 大家好!我是付工.前面给大家介绍了一系列关于RS485与Modbus的知识. 终于有人把RS485说清楚了 终于有人把Modbus说明白了 通透!终于把ModbusRTU弄明白了 今天跟大家聊聊 ...

  4. USB协议详解第9讲(USB描述符-HID描述符)

    1.HID设备概述 USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备.这类设备包括鼠标.键盘.游戏手柄等,主要用于人与计算机进行交互.HID设备可以作 ...

  5. pstore

    简介 pstore文件系统(是的,这是个文件系统)是Persistent Storage的缩写,最早在2010年由 Tony Luck 设计并合入Linux主分支,设计的初衷是在内核Panic/Oop ...

  6. Codeforces 做题记录 2023-10-22

    远古做题记录.大概是 22 年写的. CF1858E1 Rollbacks (Easy Version) Description 给定一个初始为空的数列 \(a\),你需要处理以下操作: + x 将数 ...

  7. Kubernetes 新型容器逃逸漏洞预警

    作者:米开朗基杨,KubeSphere 布道师,云原生重度感染者 2022 年 1 月 18 日,Linux 维护人员和供应商在 Linux 内核(5.1-rc1+)文件系统上下文功能的 legacy ...

  8. KubeSphere v4 全解析:揭秘您最关心的 12 大热点问题

    为了助力大家更顺畅地使用 KubeSphere v4,我们精心汇总了十二个开发者高频关注的热点问题,这些问题全面覆盖了功能特性.性能表现.兼容性考量.安全保障以及升级流程等关键方面.接下来,我们将为大 ...

  9. synchronized锁的内容

    synchronized锁的内容 import java.util.concurrent.TimeUnit; class Test1 { public static void main(String[ ...

  10. 生成文本聚类java实现1

    本章主要的学习是中文分词 和两种统计词频(传统词频和TF-IDF算法 ) 的方法. 学习目的:通过N多的新闻标题 or 新闻摘要 or 新闻标签,生成基本的文本聚类,以便统计当天新闻的热点内容. 扩展 ...