CC2530按键控制第一次按下4个LED灯全亮,第二次按下所以LED等熄灭
时间: 2024-05-15 13:15:14 浏览: 18
可以通过以下代码实现:
```
#include <ioCC2530.h>
#define LED1 P1_0
#define LED2 P1_1
#define LED3 P1_2
#define LED4 P1_3
#define KEY P0_1
void delay(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<500;j++);
}
void init()
{
P1SEL &= ~(BIT0 | BIT1 | BIT2 | BIT3); // 设置P1.0-P1.3为普通IO口
P1DIR |= BIT0 | BIT1 | BIT2 | BIT3; // 设置P1.0-P1.3为输出口
P1 = 0x00; // 初始状态所有LED灯熄灭
P0SEL &= ~BIT1; // 设置P0.1为普通IO口
P0DIR &= ~BIT1; // 设置P0.1为输入口
}
void main()
{
init();
int flag = 0; // 标志位,初始值为0
while(1)
{
if(KEY == 0) // 按键按下
{
delay(10); // 延时去抖动
if(KEY == 0) // 按键仍然按下
{
while(KEY == 0); // 等待按键释放
flag = !flag; // 取反标志位
if(flag) // 第一次按下
{
LED1 = 1;
LED2 = 1;
LED3 = 1;
LED4 = 1;
}
else // 第二次按下
{
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
}
}
}
}
}
```
其中,`flag` 为标志位,初始值为0,表示LED灯都熄灭。当按下按键时,先进行去抖动处理,然后判断按键是否仍然按下。如果按键仍然按下,则等待按键释放,并将标志位取反。如果标志位为1,表示第一次按下,将所有LED灯点亮;如果标志位为0,表示第二次按下,将所有LED灯熄灭。