首页 > 其他分享 >2022山东高职Zigbee点对点开发

2022山东高职Zigbee点对点开发

时间:2023-04-13 22:45:56浏览次数:41  
标签:P1 hal Zigbee void 点对点 flag basicRfConfig 2022 include

2022山东高职Zigbee点对点开发

题目

3、ZigBee 设备功能开发
使用两个蓝色 ZigBee 节点盒进行组网通讯,并分别命名为节点端和控制端。
节点端上安装双联继电器模块并外接风扇、照明灯。根据任务要求完成功能开发。
任务要求:

在控制端点击 SW1 键后,板上的 LED1 灯实现间隔 0.5 秒亮灭状态,同时
节点端的风扇转动。再次点击 SW1 键后,板上的 LED1 灯熄灭、风扇停止。
可以反复实现此功能。

在节点端点击 SW1 键后,板上 LED1 灯实现呼吸灯效果,同时照明灯亮起。
再次点击 SW1 键后,板上的 LED1 灯和照明灯都熄灭。可以反复实现此功
能。

控制端

#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_int.h"
#include "hal_mcu.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include "hal_uart.h" 
#include <stdio.h>
#include <string.h>
#include <stdarg.h>



/*****点对点通讯地址设置******/


#define RF_CHANNEL                11         // 频道 11~26
#define PAN_ID                    2201     //网络id 
#define MY_ADDR                   0x0A     //本机模块地址
#define SEND_ADDR                 0x0B     //发送地址

/**************************************************/
static basicRfCfg_t basicRfConfig;
// 无线RF初始化
void ConfigRf_Init(void)
{
  
    basicRfConfig.panId       =   PAN_ID;
    basicRfConfig.channel     =   RF_CHANNEL;
    basicRfConfig.myAddr      =   MY_ADDR;
    basicRfConfig.ackRequest  =   TRUE;
    while(basicRfInit(&basicRfConfig) == FAILED);
    basicRfReceiveOn();
 
}

void init(){
  P1SEL &= ~ 0x1F;
  P1DIR |= 0x1B;
  P1 = 0;
}
unsigned char flag = 0;
void KeyScanner(){

  if(P1_2 == 0){
    while(P1_2 == 0);
    flag = flag ==0?1:0;
              P1_0 = 0;
  }
  
}


/********************MAIN************************/
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
   init();
   unsigned int t = 0;
    while(1)
    {
    /* user code start */
      KeyScanner();
      if(flag == 1){
        t ++;
        halMcuWaitMs(1);
        if(t == 500){
          P1_0 = 1;
        }
        if(t == 1000){t = 0;
          P1_0 = 0;

        }
      }
     basicRfSendPacket(SEND_ADDR,&flag,1);
       
    /* user code end */
    }
}

节点端

#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_int.h"
#include "hal_mcu.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include "hal_uart.h" 
#include <stdio.h>
#include <string.h>
#include <stdarg.h>



/*****点对点通讯地址设置******/


#define RF_CHANNEL                11         // 频道 11~26
#define PAN_ID                    2201     //网络id 
#define MY_ADDR                   0x0B     //本机模块地址
#define SEND_ADDR                 0x0A     //发送地址

/**************************************************/
static basicRfCfg_t basicRfConfig;
// 无线RF初始化
void ConfigRf_Init(void)
{
  
    basicRfConfig.panId       =   PAN_ID;
    basicRfConfig.channel     =   RF_CHANNEL;
    basicRfConfig.myAddr      =   MY_ADDR;
    basicRfConfig.ackRequest  =   TRUE;
    while(basicRfInit(&basicRfConfig) == FAILED);
    basicRfReceiveOn();
 
}
void Read();
unsigned char read = 0;
void init(){
  P1SEL &= ~ 0x1F;
  P1DIR |= 0x1B;
  P1 = 0;
  P1SEL &= ~0x80;
  P1DIR |= 0x80;
  P2SEL &= ~ 0x01;
  P2DIR |= 0x01;
  P2 = 0;
}
unsigned flag = 0;
void KeyScanner(){

  if(P1_2 == 0){
    while(P1_2 == 0);
    flag = flag == 0?1:0;
  }
}
void Led1_HX(){
P1_7 = 1;
  unsigned int time = 300,i,j;
  
  for(i = 0;i < time;i++){
    for(j = 0;j < i;j++){
      P1_0 = 1;
      KeyScanner();Read();
      if(flag != 1)break;
    }
    for(j = 0;j <time - i;j++){
      P1_0 = 0;
      KeyScanner();Read();
      if(flag != 1)break;
    }
  }
  for(i = 0;i < time;i++){
    for(j = 0;j < i;j++){
      P1_0 = 0;
      KeyScanner();Read();
      if(flag != 1)break;
    }
    for(j = 0;j <time - i;j++){
      P1_0 = 1;
      KeyScanner();Read();
      if(flag != 1)break;
    }
  }  
  
}

void Read(){
        basicRfReceive(&read,1,NULL);
      if(read){
        P2_0 = 1;
      }else P2_0 = 0;
}
/********************MAIN************************/
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
   init();
    while(1)
    {
    /* user code start */
      Read();
      KeyScanner();
      if(flag)
      Led1_HX();
       else P1_7 =P1_0= 0;
    /* user code end */
    }
}

标签:P1,hal,Zigbee,void,点对点,flag,basicRfConfig,2022,include
From: https://www.cnblogs.com/Xin-chen/p/16914070.html

相关文章

  • 考虑过网费用分摊的多产消者点对点能源交易分布式优化
    考虑过网费用分摊的多产消者点对点能源交易分布式优化摘要:代码主要做的是配电网中产消者点对点交易相关研究,配网中的卖方和买方通过P2P交易匹配协商来平衡供需,同时重点考虑了P2P交易过程中公共设施的使用以及过网费用的分配问题,并等效将其叠加到P2P交易成本上,从而影响P2P交易的定......
  • CSP2022 游记
    前言本人坐标HN,因为本人太菜了所以这次考得差的一批请见谅……7:30老爸开车送我到SDFZ门口,遇到了@_SunLight_,然后他拼命跟我叫“要寄了”结果我们俩真寄了,于是我们俩在门口说些什么有的没的……话说我们俩都对没看到puck而震惊,估计puck是去CSSYZ考点了罢。8:05进......
  • android: 平台版本对应api及占比统计(android studio 2022.1.1)
    一,查看平台版本对应的api官方文档地址:https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element.html?utm_campaign=adp_series_sdkversion_010616&utm_source=medium&utm_medium=blog&hl=zh-cn#ApiLevels如图: 二,查看各版本的支持比率:启动androi......
  • P8816 [CSP-J 2022] 上升点列
    P8816[CSP-J2022]上升点列欧几里得距离\(h=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\) 。横坐标、纵坐标值均单调不减,A点可向上和向右。①不连接,用上所有点,序列长度为\(j+1\)。②从A点向前枚举(1)判断点是否合法(2)所用点\(j\leK\).01背包与最长子序列结合:\(f[i][j]\)表示......
  • [OpenCV] VS 2022 中的配置
    1、下载windows版本的opencv(默认vs已经下载)下载链接: ReleasesArchive-OpenCV 2.创建一个桌面工程随后打开【视图】-【属性管理器】找到下图   如果没有这个选项,下载链接: MSBuild.zip_免费高速下载|百度网盘-分享无限制(baidu.com) 密码:9527,存放到C:\U......
  • 对Docker容器进行取证 CSAW CTF 2022 DockREleakage
    题目信息这是一道非常简单的题目意思是在构建docker时,有些东西泄露了,需要我们在里面找到flag开始我们下载附件,然后解压压缩包tar-xvfdockREleakage.tar.gzx:提取v:显示所有过程f:指定文件这里有一些json文件,是docker构建时的核心文件,我们打开看看都是一行,读起来很不方便,我们格式化......
  • 漏洞-Oracle MYSQL Server 安全漏洞(CVE-2022-1292)
    https://blog.csdn.net/weixin_45839894/article/details/126158078openssl:relocationerror:openssl:symbolEVP_mdc2versionOPENSSinedinfilelibcrypto.so.1.1withlinktimereference建议先删掉/usr/bin/openssl......
  • YACS2022年10月乙组
    T1:录制节目可以将原题转化成有\(n\)条线段,可以保留若干条线段,并且可以分成两部分,使得每部分的线段互不相交先将所有线段按右端点做升序排序,且按左端点做降序排序然后维护两个变量last1和last2last1:第一个部分的最后的端点last2:第二个部分的最后的端点尽量让\(\min(......
  • 2022年山东省职业院校技能大赛高职组“网络系统管理”赛项答案(非官方)
    省赛样题(一)网络基础信息配置1.根据附录1拓扑图及附录2地址规划表,配置设备接口信息。2.所有交换机和无线控制器开启SSH服务,用户名密码分别为admin、admin1234。密码为明文类型,特权密码为admin。3.S7设备配置SNMP功能,向主机172.16.0.254发送Trap消息版本采用V2C,读写的Community为“T......
  • 2022年中国服务机器人行业研究|报告PDF分享(附原数据表)
    报告链接:http://tecdat.cn/?p=31419随着大量企业的涌入,服务机器人产业化即将到来经过多年的发展,我国已经实现了完整的服务机器人产业生态系统。在常态化疫情防控、人口老龄化、技术进步和政策支持等多种因素的推动下,行业快速度过市场教育阶段。据统计,近三年我国服务机器人相关企......