小蜜蜂笔记
嵌入式开发与物联网应用教育践行者

【感知层备赛训练题】CC2530开发基础-按键控制灯光状态变换

任务要求

选择找到一块国赛Zigbee小模块或者XMF09B开发板,由选手独立新建工程并编写、编译代码,实现按键控制灯光闪烁状态的变换,实现以下任务要求:
【1】程序开始运行:D4灯闪烁,D3D5D6灯熄灭。
【2】按下模块上的SW1按键松开后,实现D5、D6灯轮流闪烁。
【3】再次按下SW1按键,D5、D6灯灭。
【4】重复上述两个步骤。

参考源码

#include "ioCC2530.h"

#define D3  P1_0
#define D4  P1_1
#define D5  P1_3
#define D6  P1_4
#define SW1 P1_2

unsigned char stat = 0;   //灯光状态标志
/*=======================简单的延时函数========================*/
void Delay(unsigned int t)
{
  while(t--);
}
/*=======================端口初始化函数========================*/
void Init_Port()
{
  P1SEL &= ~0x1b;       //将P1_0,P1_1,P1_3,P1_4设置为通用I/O端口  
  P1DIR |= 0x1b;        //将P1_0,P1_1,P1_3,P1_4设置为输出方向
  P1 &= ~0x1b;          //关闭4个LED灯
  
  P1SEL &= ~0x04;       //将P1_2设置为通用I/O端口
  P1DIR &= ~0x04;       //将P1_2设置为输入方向
  P1INP &= ~0x04;       //将P1_2设置为上拉/下拉
  P2INP &= ~0x40;       //将P1_2设置为上拉
}
/*=====================D4灯闪烁函数======================*/
void D4_Flicker()
{
  D4 = 1;
  Delay(60000);
  D4 = 0;
  Delay(60000);
}
/*=====================D5D6灯闪烁函数======================*/
void D5D6_Flicker()
{
  D3 = 0;
  D4 = 0;
  D5 = 1;
  Delay(60000);
  D5 = 0;
  Delay(60000);
  D6 = 1;
  Delay(60000);
  D6 = 0;
  Delay(60000);
}
/*=======================按键扫描函数=========================*/
void Scan_Keys()
{
  if(SW1 == 0)            //发现有SW1按键信号
  {
    Delay(100);           //延时片刻,去抖动处理
    if(SW1 == 0)          //确认为SW1按键信号
    {
      if(stat == 0)
      {
        stat = 1;
      }
       else if(stat == 1)
      {
        stat = 2;
      }
      else if(stat == 2)
      {
        stat = 1;
      }
      while(SW1 == 0);
    }
  }       
}
/*==========================主函数============================*/
void main()
{
  Init_Port();            //端口初始化
  while(1)
  {
    Scan_Keys();          //按键扫描
    switch(stat)
    {
      case 0:             //上电状态,D4闪烁
        D4_Flicker();     
      break;
      case 1:             //运行状态1:D5和D6闪烁
        D5D6_Flicker();
      break;
      case 2:             //运行状态2:D3和D6熄灭
        D5 = 0;
        D6 = 0;
      break;
    }
  }
}
赞(30)
未经允许不得转载:小蜜蜂笔记 » 【感知层备赛训练题】CC2530开发基础-按键控制灯光状态变换

小蜜蜂笔记 更专业 更方便 更高效

联系我们精品小店