所有课程见此链接:
4.3按键控制LED实验
了解使用按键方法,使用按键切换LED的状态。
首先根据开发板硬件原理图确定LED与CC2530芯片的连接引脚,如图4-3所示。
图4-3开发板LED和按键原理图
可以看到开发板上的D3连接在芯片的P10引脚,按键S3连接在芯片的P04引脚,按照4.1节点亮单个LED的说明,我们分别对P10配置为输出,对按键引脚P04配置为输入,由于外部连接有上拉电阻所以不需要配置引脚的内部上拉。
具体程序如下:
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制LED灯的端口
#define LED1 P1_0 // D3(LED1)为P10口控制
#define KEY1 P0_4 //S3(KEY1)为P04口控制
//函数声明
void Delayms(uint); //延时函数
void InitLed(void); //初始化D3(LED1)
void KeyInit(); //按键初始化
uchar KeyScan(); //按键扫描程序
/****************************
延时函数
*****************************/
void Delayms(uint xms) //i=xms 即延时i毫秒
{
uint i,j;
for(i=xms;i>0;i--)
for(j=587;j>0;j--);
}
/****************************
LED初始化函数
*****************************/
void InitLed(void)
{
P1DIR |= 0x01; //P10定义为输出
LED1 = 1; // D3(LED1)灯熄灭
}
/****************************
按键初始化函数
*****************************/
void InitKey()
{
P0SEL &= ~0X10; //设置P04为普通IO口
P0DIR &= ~0X10; //按键在P04口,设置为输入模式
P0INP &= ~0x10; //打开P04上拉电阻,不影响
}
/****************************
按键检测函数
*****************************/
uchar KeyScan(void)
{
if(KEY1==0)
{
Delayms(10);
if(KEY1==0)
{
while(!KEY1); //松手检测
return 1; //有按键按下
}
}
return 0; //无按键按下
}
/***************************
主函数
***************************/
void main(void)
{
InitLed(); //调用初始化函数
InitKey();
while(1)
{
if(KeyScan()) //按键改变LED状态
{
LED1=~LED1;
}
}
}
按下开发板按键S3(KEY1)控制D3(LED1)的亮和灭。
扫码关注公众号,输入zigbee。即可获得源码 + 全套开发视频