CC2540开发板学习笔记(二)——按键

一、实验内容

    用按键S1控制LED1的亮和灭

二、实验过程

1、电路原理:

image

      可以看出,当S按下P0.0和P0.1接地,反之则接高电压。

2、寄存器使用:

依旧应该首先进行3个基本寄存器的设定,对LED和按键S都要进行设定、

3、代码实现(IAR环境下)

#include<ioCC2540.h>



#define LED1 P1_0    //定义LED1,方便查阅代码

#define KEY1 P0_0    //定义按键S1



//函数声明

void Delayms(unsigned int t);    //延时函数,当我们按下S1的时候,开发板会检测到无数个触发沿,对此,在不用中断

                       //的条件下,只能使用延时,过滤掉多余的不必要的触发沿。

void Init();//初始化函数



unsigned char KeyScan();  //按键扫描函数



void Delayms(unsigned int t)   //控制t被的延时周长

{

  unsigned int i,j;

  for(i=t;i>0;i--)

  {

    for(j=1;j<500;j++);

  }

}



void Init()//初始化函数

{

  P1SEL = 0X00;    //实现LED的初始化

  P1DIR = 0X01;

  P1INP = 0X00;

  LED1 = 0;

  

  P0SEL = 0X00;    //按键S1的初始化

  P0DIR = 0X00;

  P0INP = 0X00;

}



unsigned char KeyScan()  //按键扫描函数

{

  if(KEY1==0)

  {

    Delayms(10);

    if(KEY1==0)

    {

      while(!KEY1);   //检验是否松手

      return 1;      //松手使之为1

    }

  }

  return 0;

}





void main(void)

{

  Init();

  while(1)

  {

    if(KeyScan()==1)    //只有检测到按过按键之后,再进行LED1状态的切换

    {

      LED1=~LED1;

    }

  }

}

三、实验成果展示:

image

你可能感兴趣的:(学习笔记)