Zigbee协议栈无线通信系统使用两块ZigbeCC2530黑色板
实现的功能如下:
<1> Zigbee网络号PAN ID、信道号Channel ID请参考纸质附件给定的值。
<2> 程序开始运行Zigbee节点盒LED1、LED2灯亮,Zigbee模块D4、D3、D6、D5灯亮;
<3> 单击Zigbee节点盒SW1后,板上的LED1、LED2灯进入交替亮灭状态(如LED1亮则LED2灭,LED2亮则LED1灭);同时发送一个信息给Zigbee模块,当Zigbee模块收到这个信息后Zigbee模块板上的D4、D3、D6、D5灯进入流水灯状态。
<4> 单击Zigbee模块上的SW1后,板上的D5、D6、D3、D4灯进入流水状态;同时发送一个信息给Zigbee节点盒,当Zigbee节点盒收到这个信息后Zigbee节点盒板上的LED1、LED2进入呼吸灯状态;
<5> 单击Zigbee模块上的SW2后,重置两个Zigbee板上的灯,Zigbee模块D4、D3、D6、D5灯亮;Zigbee节点盒LED1、LED2灯亮。
<6> 能重复实现以上步骤。
首先根据要求写出等会要使用的函数
//延时函数
void Delay(unsigned int t)
{
while(t--);
}
灯光交替闪烁
{
switch(led)
{
case 0:D3=1;D4=0;break;
case 1:D4=1;D3=0;break;
}
}
按键扫描函数
void Scan_KeySW1A()
{
if(SW1==0)
{
Delay(100);
if(SW1==0)
{
while(SW1==0);
sys_stat=1;
basicRfSendPacket(0x1015,"1",1);
}
}
}
流水灯
void liusuiA(int led)
{
switch(led)
{
case 0:setled(0x02);
break;
case 1: setled(0x01);
break;
case 2: setled(0x08);
break;
case 3: setled(0x04);
break;
}
halMcuWaitMs(500);
}
呼吸灯
void huxiLed()
{
for(PWM_LOW=1;PWM_LOW<PWM_CYCLE;PWM_LOW++)
{
D3=0;
D4=0;
Delay(PWM_LOW);
D3=1;
D4=1;
Delay(PWM_CYCLE-PWM_LOW);
}
for(PWM_LOW=PWM_CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
D3=0;
D4=0;
Delay(PWM_LOW);
D3=1;
D4=1;
Delay(PWM_CYCLE-PWM_LOW);
}
}
无线通信接收函数
void Basi_RecvA()
{
if(basicRfPacketIsReady())
{
rlen=basicRfReceive(rbuff,1,NULL);
if(rlen>0)
{
if(rbuff[0]=='1')
{
sys_stat=2;
}else if(rbuff[0]=='2')
{
sys_stat=0;
}
}
}
}
代码源工程下载:资源上传中…