在物联网中职竞赛中,关于CC2530单击控制流水灯的暂停与启动,对问题进行分析,逐步对问题做出解释,其间已标出具体初始,以下是具体代码(IAR软件编辑),初学者如有错误之处请指出

#include <iocc2530.h>

unsigned int chushi = 0;
unsigned int ZTQD = 0;//对效果的启动和暂停做个标志位

void delay(unsigned int T)//写一个简单的延时函数
{
  while(T--);
}

void Init_port()//相应引脚初始化
{
  P1SEL &= ~0x03;
  P1DIR |= 0X03;
}

void Scan_SW1()//对按键进行扫描
{
  if(P1_2 == 0)
  {
    delay(200);
    if(P1_2 == 0)//如果按键被按下,执行以下代码
    {
      while(P1_2 == 0);
      if(AJ == 0)//按一下,如果初始为启动那就暂停
      {
        ZTQD = 1;
      }
      else if(AJ == 1)//反之如果初始值为暂停那就启动
      {
        ZTQD = 0;
      }
    }
  }
}

void liushui()
{
  delay(20);//每次执行效果时做个延时
  if(ZTQD == 0)//效果启动时初始值自增
  {
    chushi++;
  }
  if(chushi < 3000)//初始自增至3000前做一灯亮一灯不亮
  {
    P1_0 = 1;
    P1_1 = 0;
  }
  else if(chushi < 6000)//初始自增至6000前做一灯亮一灯不亮
  {
    P1_0 = 0;
    P1_1 = 1;
  }
  else//反之初始值为零
  {
    chushi = 0;
  }
}  

void main()
{
    Init_port();//引脚初始
    while(1)
    {
      Scan_SW1();//按键扫描
      liushui();//流水效果
    }
}

Logo

宁波官方开源宣传和活动阵地,欢迎各位和我们共建开源生态体系!

更多推荐