zigbee的入门日记5

zigbee的入门日记5

昨天那个果然是个辣鸡,保险公司终究还是保险公司,耽误时间……

然后还是言归正传,看一下今天的程序。

/**************************************************
功能描述  : 利用中断的方式完成按键亮灯,按下S5时,
LED2与LED3改变亮灭状态,不同于之前的查询方式
***************************************************/

#include<iocc2530.h>                    //日常定义
#define uint unsigned int
#define uchar unsigned char
#define LED2 P0_1
#define LED3 P0_4
#define S5 P0_5

void delay()                             //延时
{
  int i,j;
    for(i=0;i<1000;i++)
      for(j=0;j<20;j++);
}

void io()                               //初始化
{
  P0DIR |=0XFF;                         //选择输出
  //P0INP &=0xDF;                       // 1101 1111 开关P0_5 上下拉模式↓ 没用,等下试试!!!的确不影响……
  P2INP &=0xDF;
  LED2=1;                               //熄灭两灯
  LED3=1;
}

void sw()
{
  EA=1;                                 //总开关
  P0IE=1;                               //组开关
  P0IEN|=0X20;                          //0010 0000 设置3个中断使能标志位,让相应的中断开关合上,不配置就是0,等下试试……emmm,0是中断禁用这个会影响的(脑子抽了吧……)
  PICTL|=0x01;                          //把P0这一组配置成下降沿触发
  P0IE=1;
 }

#pragma vector=P0INT_VECTOR             //中断格式:#pragma vector = 中断向量
__interrupt void zhongduan()            //接着是中断处理程序(函数名可以任意取)
{
  if(P0IFG&0X20)                        //换成S5==0,一样的
  {
    delay();                            //延时去抖动
    if(S5==0)                           //if条件句
    {
      LED2=~LED2;                       //两灯改变状态
      LED3=~LED3;
    }
  }
  P0IFG=0;                              //清零中断标志位,中断后会变1
  P0IF=0;
}

void main()                             //主程序
{
  delay();
  io();
  sw();

  while(1);
}

这算是两天把中断这边给弄了一下吧……明天开始把时钟那边看一下,试着把动态扫描的倒计时整出来~~

2018.3.20

Zigbee入门开发 Zigbee是一种新型的短距离无线通信技术。其特点是低功耗,低成本,组网灵活。Zigbee协议由zigbee联盟指定,包括应用层,和网络层,其下层采用IEEE802.15.4协议。 无论是学习zigbee技术,还是利用zigbee技术开发产品,都需要较好的掌握zigbee协议,并比较深入的了解IEEE802.15.4协议.然而仅zigbee协议就接近400页,而IEEE802.15.4协议多达600页,全部是英文。如果从来没有接触过无线通信的开发,要迅速掌握这么多内容确实有一些难度,笔者考虑到广大急切进入zigbee的同仁者,结合自己开发总结出的理解协议的特定方法,从开发的角度,阐述协议内容,以达到抛砖引玉的效果,同时和广大同仁交流,共同提高,并希望zigbee技术能够在国发扬光大。 协议从功能实现来讲,ZigBee协议层共包括物理层(又称实体层)、MAC层、数据链接层、网络层和应用支持层五个主要层次。在标准制定的分工上,ZigBee协议层是由ZigBee联盟和IEEE802.15.4的任务小组共同完成的。其,物理层(又称实体层)、MAC层、数据链接层,以及传输过程的资料加密机制等都是由IEEE所主导的。网络层和应用支持层则由ZigBee联盟来完成。IEEE802.15.4小组与ZigBee联盟共同针对ZigBee协议栈的发展进行研究,而未来还能依据系统客户的要求来修正其所需的应用界面。如图1所示: Zigbee协议整体架构 作为理解协议,从开发者的角度来讲,这样学习协议是比较费时间的,也较难掌握。笔者从自己长期开发的经验来看,对无线通信,最重要的就是在发送端根据用户的要求,把数据能够扔出去,并且是扔到指定的设备,在接收端,能够把发送到该设备的数据捡起来。并根据用户要求的作特定的处理。如果考虑在一个无线网路的话,就得首先建立网络,其他得设备加入网络。最后是才是一些其他的问题,如设备离开网络,设备重新加入网络,等等。 这样从通信过程去理解协议,将会使得协议的内容非常明了,也可以很好的知道利用协议开发产品,达到事半功倍的效果。 本人将根据这样的思路,分五期具体讲述协议内容: 第一期:设备建立网络过程 第二期:设备加入网络过程 第三期:数据发送过程 第四期:数据接收过程 第五期:其他的问题 zigbee设备建立网络过程 在一个zigbee网络,只有协调器(coordinator)设备可以建立网络,在建立网络过程,所有的实现过程都是通过原语实现的(具体在程序,如用c语言,就是调用一个一个函数,或者是一个一个任务来实现(不要刻意最求这句话的准确性,本来好的协议就是只要达到这样的结果,不管具体实现)),首先协调器设备的应用层调用NLME_NETWORK_FORMATION.request原语,发出建立网络请求,网络层收到这个原语,就要求MAC层执行信道能量扫描(在IEEEE802.15.4协议规定,在2.4G频段,共有16个信道,每个信道的带宽为5M,深入理解,可以看协议和通信原理的相关资料)。这调用MLME_SCAN.request,主要找到信道能量低于设定能量值的信道,并且标注这些信道是可用信道,下 一步就在可用信道执行活动情况扫描(active scan),就是在可接受的信道
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值