zigbee串口发收
单片机源程序如下:
- /************发送数据格式:命令+数据长度+ID+传感器数据+校验*****************/
- #include <reg52.h>
- #include "uart.h" // 串行通信函数头文件
- #define errorState 0x01//异常命令
- #define open_LED 0x02//开灯命令
- #define close_LED 0x03//关灯命令
- sbit key1=P2^0;
- sbit key2=P2^1;
- sbit key3=P2^7;
- typedef struct zigbee //整个数据结构为14字节
- {
- uint8_t Order;//命令类型
- uint8_t ValidDataLen;//有效数据长度
- uint8_t wdata[10];//数据
- uint8_t crc;//校验和
- }zigbeeCmd_t;
- zigbeeCmd_t zigbeeCmd;
- /*
- 函数用途:数据发送函数
- 输入数据:
- 输出数据:0 成功 1失败
- */
- uint8_t zigbeeSendCmd(void)
- {
- uint8_t i,ax=8,ay=9;
-
- zigbeeCmd.Order = errorState;
- zigbeeCmd.ValidDataLen = 2;
- zigbeeCmd.wdata[0] = ax;
- zigbeeCmd.wdata[1] = ay;
-
- //打包命令头
- U1SendData(zigbeeCmd.Order);//1
- U1SendData(zigbeeCmd.ValidDataLen);//2
-
- //打包有效数据
- zigbeeCmd.crc = 0;
- for(i=0;i<10;i++)
- {
- U1SendData(zigbeeCmd.wdata[i]);//8,9,0,0,0,0,0,0,0,0
- zigbeeCmd.crc += zigbeeCmd.wdata[i];
- }
- //CRC校验
- U1SendData(zigbeeCmd.crc);//11
-
- return 0;
- }
- uint8_t OPEN_LED(void)
- {
- uint8_t i,ax=8,ay=9;
- zigbeeCmd.Order = open_LED;
- zigbeeCmd.ValidDataLen = 2;
- zigbeeCmd.wdata[0] = 1;
- zigbeeCmd.wdata[1] = 2;
-
- //打包命令头
- U1SendData(zigbeeCmd.Order);//2
- U1SendData(zigbeeCmd.ValidDataLen);//2
-
- //打包有效数据
- zigbeeCmd.crc = 0;
- for(i=0;i<10;i++)
- {
- U1SendData(zigbeeCmd.wdata[i]);//1,2,0,0,0,0,0,0,0,0
- zigbeeCmd.crc += zigbeeCmd.wdata[i];
- }
- //CRC校验
- U1SendData(zigbeeCmd.crc);//0
-
- return 0;
- }
- uint8_t CLOSE_LED(void)
- {
- uint8_t i;
- zigbeeCmd.Order = close_LED;
- zigbeeCmd.ValidDataLen = 2;
- zigbeeCmd.wdata[0] = 3;
- zigbeeCmd.wdata[1] = 4;
-
- //打包命令头
- U1SendData(zigbeeCmd.Order);//1
- U1SendData(zigbeeCmd.ValidDataLen);//2
-
- //打包有效数据
- zigbeeCmd.crc = 0;
- for(i=0;i<10;i++)
- {
- U1SendData(zigbeeCmd.wdata[i]);//3,4,0,0,0,0,0,0,0,0
- zigbeeCmd.crc += zigbeeCmd.wdata[i];
- }
- //CRC校验
- U1SendData(zigbeeCmd.crc);//
- return 0;
- }
- void main() // 主函数
- {
- UartInit();
- while(1)
- {
- if(key1==0)
- {
- DelayMS(5);
- if(key1==0)
- {
- while(!key1);
- zigbeeSendCmd();
- }
- }
- if(key2==0)
- {
- DelayMS(5);
- if(key2==0)
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
zigbee串口发收.rar
(92.54 KB, 下载次数: 59)
|