ZigBee入门-CC2530-实验(四)-按键的长按与短按控制LED代码

现在很多嵌入式产品的按键不再是仅仅单一的一种功能,而是通过按键按下的时间去实现不同的功能。
/结合之前三个实验中所涉及到的LED、按键、定时器来实现按键的短按和长按对不同LED的控制。/

实验最后:
给小伙伴们补一下上节课被遗忘的关于定时/计数器T3的配置代码~~~

*按键SW1短按,切换LED1灯的亮灭状态;
*按键SW1长按,切换LED2灯的亮灭状态。
话不多说,直接上代码~~~
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char

#define LED1 P1_0      //P1.0口控制LED1
#define LED2 P1_1      //P1.口控制LED2
#define SW1 P0_5       //P0.5口控制SW1

uchar SW1_count = 0;   //定时计数
uchar SW1_flag = 0;    //按键按下标志位

void Init_Led();       //声明初始化LED函数
void Init_Key();       //声明初始化按键函数
void Scan_Key();       //声明按键检测函数
void Init_Timer1();    //声明定时器T1初始化函数
void Delay(uint ms);   //声明延时函数

/*===================主程序入口====================*/
void main()            
{

  Init_Led();           //初始化LED灯
  Init_Key();           //初始化按键

  while(1)
  {
    Scan_Key();        //一直检测按键
  }
}
/*==================中断响应服务子程序===============*/
#pragma vector = T1_VECTOR
__interrupt void Timer1_int()
{
   T1STAT &= ~0x20;     //清除定时器1的溢出中断标志位
   if(SW1_flag != 0)    //是否按键按下
   {
     SW1_count++;       //定时计数值累加
   }
}
/*================声明函数的具体实现================*/
void Init_Led()
{
  P1SEL &=~ 0x03;     //配置P1.0 P1.1为通用I/O口
  P1DIR |=  0x03;     //配置P1.0 P1.1为输出
  LED1 = 0;           //初始LED1为熄灭
  LED2 = 0;           //初始LED2为熄灭
}
void Init_Key()
{
  P0SEL &= ~0x20;     //P0.5设为普通输出口
  P0DIR &= ~0x20;     //按键在P05设为输入 
  P0INP |= 0x20;      //P0.5为三态
}
void Init_Timer1()
{
  T1CTL = 0X0E;      //128分频,模模式
  
  T1CC0L = 0XD4;     //定时初值低8位
  T1CC0H = 0X30;     //定时初值高8位 定时:0.1s
  
  T1CCTL0 |= 0X04;   //开启通道0的输出比较模式
  T1IE = 1;          //开启定时器1中断
  T1OVFIM = 1;       //开启定时器1溢出中断
  EA = 1;            //开启总中断
}
void Scan_Key()
{
  if(SW1 == 0)
  {
    Delay(100);         //去抖动处理
    while(SW1 == 0)     //当是按键按下时 
    {   
      SW1_flag = 1;     //按键按下标志位置1,表示按键按下
      Init_Timer1();    //初始化定时器T1,开始定时
      
      while(SW1 == 0);  //等待按键松开
      SW1_flag = 0;     //按下标志位清0,表示按键已经松开
      
      if(SW1_count > 5) //通过SW1_count判断按键长按
       {    
         LED2 = ~LED2;
       }
      else              //通过SW1_count判断按键短按
       {
         LED1 = ~LED1;
       }
      SW1_count = 0;      //按键计数值清零
    }
  } 
}
void Delay(uint ms)
{
  uint i,j;
  for(i=0; i<ms; i++)
    for(j=0; j<535;j++);
}
定时/计数器T3:是一个8位的定时器,学过51的小伙伴就开心了,8位的想必都快配置吐了吧~
void Init_Timer3()
{
  T3CTL = 0x06;      //模模式,溢出中断禁止,清除计数器
  T3CTL = 0X80;      //时钟16分频
  T3CTL &= ~0X03;    //自动重装00~FF
  T3CTL |= 0X08;     //开T3中断
  
  T3CCTL0 = 0X00;    //通道0初值
  T3CC0 = 0XF0;      //定时器计数字节
  
  EA = 1;			 //开总中断
  T3IE = 1;          //开T3中断
  
  T3CTL = 0X10;      //启动定时器T3
}
/*==================中断响应服务子程序===============*/
#pragma vector = T3_VECTOR
__interrupt void Timer3_int()
{
   ;//这里添加你自己想搞的事情~
}
我会每天更新一篇ZigBee入门-CC2530-的基础实验,让大家学习Zigbee技术不在是从入门到“入土”,而是从入门到巅峰~!!!

欢迎大家的留言和评论我会在看到的第一时间内答复。
看完后感觉得到帮助的小伙伴,要点点赞哦~
给笔者一些动力嘛!谢谢啦 ^ _ ^ ~

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: zstack-cc2530-2.3.0-1.4.0是一个基于CC2530芯片的ZigBee协议栈版本,用于构建低功耗、无线传感网络。它支持ZigBee协议的各种功能,如网络组建、设备发现、数据传输等。同时,它还提供了丰富的API接口和开发工具,方便开发人员进行应用开发和调试。 ### 回答2: zstack-cc2530-2.3.0-1.4.0是一款嵌入式无线协议栈软件,主要应用于物联网领域的传感控制设备等智能硬件,使其能够实现无线通信、数据采集和云端对接。该协议栈基于IEEE 802.15.4标准,采用Zigbee协议,支持网络拓扑结构包括星型、点对点、树状和网状等。 zstack-cc2530-2.3.0-1.4.0的特点是具有高度的可靠性、稳定性和安全性。其采用AES加密算法,能够保证通信数据的隐私安全;同时支持信号质量监测和链路质量反馈,能够实现网络拓扑的优化和故障检测等功能;此外,该协议栈还支持OTA升级和协议栈配置等高级功能,便于对智能硬件进行远程维护和管理。 除此之外,zstack-cc2530-2.3.0-1.4.0还具有易于开发和适配的特点。该协议栈提供了丰富的API接口和开发工具包,支持多种开发环境和硬件平台,方便开发人员进行二次开发和定制化,大大降低了开发成本和周期。同时,该协议栈还通过Zigbee联盟的认证,确保了其在标准兼容性、互操作性和稳定性等方面的表现。 总之,zstack-cc2530-2.3.0-1.4.0是一款功能强大、易于开发和适配、具有高可靠性和安全性的无线协议栈软件,可以广泛应用于物联网领域的智能硬件。 ### 回答3: zstack-cc2530-2.3.0-1.4.0 是一种无线通信模块,它是针对 TI 公司的 CC2530 系统级芯片设计的。该模块运行在 2.4GHz ISM 频段,可以实现高质量的数据传输,并且在无线网络中实现高度的可靠性和安全性。该模块具有协同处理、内存、收发、MAC 和 PHY 等多种功能,可以应用于多种物联网场景。 zstack-cc2530-2.3.0-1.4.0 支持运行 ZigBee 网络协议栈,并提供了丰富的接口和 API,以便用户能够快速、轻松地开发具有丰富功能的 ZigBee 产品。该模块基于 Z-Stack 协议栈,支持 ZDO、ZCL 等多个协议,可以实现灵活、可靠、高效的无线通信。 该模块还支持 OTA(空中升级)功能,可以让用户通过无线网络升级设备固件。同时,该模块还具有低功耗模式,可以使设备的电池寿命更。 总之,zstack-cc2530-2.3.0-1.4.0 是一种高度可靠、灵活、安全性强的无线通信模块,可以为物联网应用提供强有力的支持,并且具有广泛的适用性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dev_XH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值