物联网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();
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库