basicRF双向灯光控制
题目:
实现基于BasicRF无线点对点通信的双向灯光控制,具体要求如下:
1> 节点A 和节点B 的PANID设置为0x1234,通道号设置为17,节点地址自定义。
<2> 按下节点A的SW1按键,松开后,向节点B发送1个字节的无线数据。节点B接收到新的无线数据后,判断该数据如果为0xa2,则切换节点B中D4灯的开关状态。
<3> 按下节点B的SW1按键,松开后,向节点A发送1个字节的无线数据。节点A接收到新的无线数据后,判断该数据如果为0xa2,则切换节点A中D4灯的开关状态。
注:<1> D4灯,连接到CC2530的P1_1引脚。
<2> SW1按键;连接到CC2530的P1_2引脚。
配置点对点无线通信的基本参数
#define RF_CHANNEL 17 // 频道 11~26
#define PAN_ID 0x1234 //网络id
配置节点信息
//节点A的地址信息
#define MY_ADDR 0x000a //本机模块地址
#define SEND_ADDR 0x000b //发送地址 //节点B的地址信息
//#define MY_ADDR 0x000b //本机模块地址
//#define SEND_ADDR 0x000a //发送地址
变量定义与函数声明
#define D4 P1_1
#define SW1 P1_2 unsigned char cmd = 0xa2; //无线发送的命令字
unsigned char dat = ; //无线接收的数据 void Init_Port(); //初始化D4灯与SW1按键
void Delay(unsigned char t); //普通延时函数
void Scan_Keys(); //按键扫描处理函数
void Recv_RF_Data(); //无线数据接收处理函数
端口初始化函数的实现
void Init_Port()
{
//初始化D4灯和D5灯的端口P1_1
P1SEL &= ~0x02; //P1_1为通用I/O端口
P1DIR |= 0x02; //P1_1端为输出口
//初始化SW1按键的端口P1_2
P1SEL &= ~0x04; //P1_2为通用I/O端口
P1DIR &= ~0x04; //P1_2端为输出口
P1INP &= ~0x04; //P1_2设置为上拉/下拉模式
P2INP &= ~0x40; //P1_2设置为上拉 D4 = ;
}
延时函数
void Delay(unsigned char t)
{
while(t--);
}
按键扫描函数
void Scan_Keys()
{
if(SW1 == )
{
Delay();
if(SW1 == ) //确定SW1按键按下
{
while(SW1 == ); //等待SW1按键松开
basicRfSendPacket(SEND_ADDR, &cmd, );
}
}
}
无线数据接收处理函数的实现
void Recv_RF_Data()
{
if(TRUE == basicRfPacketIsReady()) //接收到新的无线数据
{
basicRfReceive(&dat, , NULL); //读出1个字节数据到dat变量
if(dat == 0xa2) //判断接收数据是否为0xa5
{
D4 = ~D4; //切换D4灯的开关状态
dat = 0x00;
}
}
}
主函数的实现
void main(void)
{
halBoardInit();//选手不得在此函数内添加代码
ConfigRf_Init();//选手不得在此函数内添加代码 Init_Port(); //初始化D4灯和SW1按键的端口 while()
{
/* user code start */
Scan_Keys(); //扫描处理按键
Recv_RF_Data(); //接收处理无线数据
/* user code end */
}
}
basicRF双向灯光控制的更多相关文章
- 基于W5500+Yeelink的远程灯光控制设计
概述 工具:物联网云平台Yeelink DHT11温湿度传感器 W5500EVB 编译环境:Keil4 目的:通过以太网实时监控远程某个位置的温度和湿度 在W5500EVB端连接LED灯.通过W ...
- SPI、I2C、UART、I2S、GPIO、SDIO、CAN 简介
转自http://sanwen.net/a/fmxnjoo.html SPI.I2C.UART.I2S.GPIO.SDIO.CAN,看这篇就够了 总线 总线,总要陷进里面.这世界上的信号都一样,但是总 ...
- SPI、I2C、UART、I2S、GPIO、SDIO、CAN
总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...
- 基于Unity 5的次世代卡通渲染技术 -- Unite 2017 米哈游总监贺甲分享实录
在5月12日Unite2017开发者大会上,米哈游技术总监兼美术指导贺甲进行了主题为次世代卡通渲染的演讲.一下为详细分享内容: 大家好,首先自我介绍一下,我叫贺甲,在米哈游担任技术总监和美术指导工作, ...
- 对SPI、IIC、IIS、UART、CAN、SDIO、GPIO的解释
SPI SPI(Serial Peripheral Interface:串行外设接口); SPI总线由三条信号线组成:串行时钟(SCLK).串行数据输出(SDO).串行数据输入(SDI).SPI总线可 ...
- SPI、I2C、I2S、UART、GPIO、SDIO、CAN、JTAG的区别及使用方法。
SPI 全称及由来:SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的. ...
- include的用法例子,以及include+merge的用法例子
[include+LinearLayout]的使用例子 AndroidIncludeLayout.java package com.AndroidIncludeLayout; import andro ...
- 软件产品案例分析----K米app
第一部分 调研.评测 1.1评测 1.1.1 第一次上手体验 1.1.2 bug 1.1.2.1 bug定义 1.1.2.2 栗子 1.1.2.2.1 A级 1.1.2.2.2 B级 1.1.2.2. ...
- USB Keyboard Recorder
catalogue . 引言 . Device Class Definition for Human Interface Devices (HID) . USB HID Report Descript ...
随机推荐
- java web之Filter详解
java web之Filter详解 2012-10-20 0 个评论 作者:chenshufei2 收藏 我要投稿 .概念: Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,W ...
- 数据结构和算法(Golang实现)(5)简单入门Golang-接口
接口 在Golang世界中,有一种叫interface的东西,很是神奇. 一.数据类型 interface{} 如果你事前并不知道变量是哪种数据类型,不知道它是整数还是字符串,但是你还是想要使用它. ...
- Centos7_搭建暗网网站
Tor运行原理 请求方需要使用:洋葱浏览器(Tor Browser)来对暗网网站进行访问 响应放需要使用:Tor协议的的Hidden_service 搭建步骤 更新YUM源: rpm -Uvh htt ...
- 07-rem
一.什么是rem rem(font size of the root element)是指相对于根元素`的字体大小的单位.它就是一个相对单位. px:一个绝对单位 em:一个相对单位,根据的是当前盒子 ...
- 关于MIME类型问题,浏览器请求到的资源是乱码
简介 我想很多同学都可能会遇到这样的问题,调用后台提共的静态资源服务api时,用浏览器打开发现却是一堆乱码.需要的是 JSON, 拿到的却是 xml,访问一个mp4的文件,浏览器直接下载.这一切的来源 ...
- 总结:js世界中的特殊符号
常用符号:+ ++ - -- || / /' && 等 这些基本上每天都能用到,但是 js 世界中有些特殊符号是不常用的,我也是偶然在阅读大神代码的时候发现的,一番查找之后得出了以下结 ...
- BareTail 观看文件增加的工具
- MySQL系列(二)
查看\创建\使用\删除 数据库 用户管理及授权实战 局域网远程连接法 查看\创建\使用\删除\清空\修改 数据库表(是否可空,默认值,主键,自增,外键) 表内容的增删改查 where条件.通配符_%. ...
- JDK11的重要新特性
文章目录 JDK11发布啦 Oracle不再提供JRE和Server JRE下载 删除部署工具 JavaFX不再包含在JDK中 删除Java EE和CORBA模块 JDK11发布啦 JDK11 在20 ...
- C# 基础知识系列- 14 IO篇 文件的操作
0. 前言 本章节是IO篇的第二集,我们在上一篇中介绍了C#中IO的基本概念和一些基本方法,接下来我们介绍一下操作文件的方法.在编程的世界中,操作文件是一个很重要的技能. 1. 文件.目录和路径 在开 ...