zigbee(题型整理2)

zigbeeCC2530的按键触发题型
题目:单片机

  1. 按键按下抬起led灯点亮
  2. 按键按下led灯点亮

按键按下抬起led灯点亮

#include 

#define uint unsigned int
#define uchar unsigned char


#define LED1 P1_0   //LED1为P1.0口控制
#define KEY1 P0_4      //KEY1为P0.1口控制

void Delayms(uint);     //延时函数
void InitLed(void);     //初始化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--);
}

void InitLed(void)
{
    P1DIR |= 0x01;  //P1_0定义为输出
        LED1 = 1;       //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;     

        }
}

按键按下led灯点亮

#include 

#define D1 P1_0
#define SW1 P0_0

#define uint unsigned int
#define uchar unsigned char

void init()
{
  P1SEL &=~0X01;
  P1DIR |=0X01;
  D1=0;

  P0SEL &=~0X01;
  P0DIR &=~0X01;

}
void delay(uint xms)
{
  uint i,j;
  for (i=0;ifor (j=0;j<240;j++)
    {
      asm("NOP");
      asm("NOP");
      asm("NOP");
    }
}

uint keyscan()
{
  if(SW1==0)
  {
    delay(100);
    if(SW1==0){
      while(!SW1);
      return 1;
    }
  }
  return 0;
}

int main(void)
{
  init();
  while(1)
  {
    if(keyscan()==1)
      D1=!D1;
    }
}

由于该博客不涉及到中断操作,使用的是简单的触发方式。

你可能感兴趣的:(zigbee)