1.2 zigbee基础(按键点led)

这个实验是使用按键控制LED的亮灭。其实和上个实验很像,就是判断按键什么状态,然后根据按键状态来改变led状态。

 先上两个 电路图

这里我们只使用KEY1去控制LED3.

主要是要设置按键和灯对应的IO口输出。其他用默认即可

LED1初始化:(其他雷同)

P1SEL &=~0×01; //作为普通IO口

P1DIR |= 0×01; //P1_0定义为输出

P1INP &=~0X01; //打开上拉

按键KEY1初始化:

P0SEL &= ~0X10; //设置P04为普通IO口

P0DIR &= ~0X10; //按键在P04 口,设置为输入模式

P0INP &= ~0×10; //打开P04上拉电阻,不影响

#include 
#define uint unsigned int 
#define uchar unsigned char
//定义三个led灯
#define LED1 P0_0
#define LED2 P0_1
#define LED3 P1_4
//定义按键key1
#define KEY1 P0_4
//函数的声明
void Delay(uint);
void Init(void);
uchar KeyScan();
//主函数
void main(void)
{
  Init();//初始化按键和灯
  while(1)
  {
    if(KeyScan())//判断按键状态
      LED3=~LED3;//灯的状态取反
  }
}
void Delayms(uint xms)//延迟函数,
{
  uint i,j;
  for(i=xms;i>0;i−−)
    for(j=1000;j>0;j−−);
}
void Init(void)
{
  P0DIR |=0x03;
  P1DIR |=0x10;
  //关闭所有的灯,默认是上拉的,根据电路图灯会亮
  LED1 =0;
  LED2 =0;
  LED3 =0;
  //设置按键相关寄存器
  P0SEL &=~0x10;
  P0DIR &=~0x10;
  P0INP &=~0x10;
}
uchar KeyScan(void)
{
  if(KEY1==0)
  {
    Delayms(10);//防抖动
    if(KEY1==0)
    {
      while(!KEY1);
      return 1;
    }
  }
  return 0;
}


注意: 在图中在默认情况下,led灯是亮的(上拉),所以在初始化中需要灭掉。有的板子上拉是灭的。
效果图如下:按一下会亮,再按一下会灭,很简单

你可能感兴趣的:(zigbee)