公布CC1110最简单的收发程序
/**********************************************************************
*文件: wxl_radio.c
*功能: RF发送和接收(非DMA),初版,还可能有BUG
*作者: emot
*版本: v1.0
*说明:宏来源于TI的hal.h
*修订记录
----------------------------------------------------------------------
|时间 原因 修订人
|2009年4月05日 初写 emot
|
|
**********************************************************************/
/**********************************************************************
*头文件
*/
#include "includes.h"
#define
//----------------------------------------------------------------------
//发送函数
//----------------------------------------------------------------------
BYTE Transmit(BYTE __xdata *buff,BYTE bytes) //发送
{
BYTE i,BytesToSend; //
RFIF = 0;
RFTXRXIF = 0;
BytesToSend = bytes ;// 数据包长度就是byte,为方便实际应用中增加其他字节,定义了bytestosend变量
if(BytesToSend <= 64)
{
SIDLE(); // Exit RX / TX, turn off frequency synthesizer and exit
STX(); // Switch radio to TX
while(RFTXRXIF == 0); // 等待发送结束
RFTXRXIF = 0; // 清除发送标志
RFD = BytesToSend;
while(RFTXRXIF == 0); // 等待发送结束
RFTXRXIF = 0; // 清除发送标志
for(i=0;i<( BytesToSend-1);i++)
{
RFD = buff; // 发送数据
while(RFTXRXIF == 0); // 等待发送结束
RFTXRXIF = 0; // 清除发送标志
}
RFD = buff; // 发送最后一BYTE
while(RFIF&IRQ_DONE == 0); // 等待发送结束
RFIF &= ~IRQ_DONE; //清结束标志
RFIF &= ~IRQ_DONE; // Tx/Rx completed, clear interrupt flag
S1CON &= ~0x03; // Clear the general RFIF interrupt registers
return TRUE;
}
else
{
return FALSE;
}
}
//----------------------------------------------------------------------
//接收函数,不使用DMA的接收
//----------------------------------------------------------------------
# define WAIT_TIME 80 //unit ms
BYTE Receive(BYTE __xdata *buff,BYTE *bytes) //接收
{
BYTE BytesToReceive = 0;
BYTE address;
BYTE i;
RFIF = 0;
RFTXRXIF = 0;
SIDLE();
SRX();
resetTimer(APP_TIMER0);
while(RFTXRXIF == 0){if(readTimer(APP_TIMER0)>WAIT_TIME)return FALSE;}; // 等待接收结束,如超时则强退
BytesToReceive = RFD; // 读取数据包总长度
RFTXRXIF = 0; // 清除发送标志
while(RFTXRXIF == 0){if(readTimer(APP_TIMER0)>WAIT_TIME)return FALSE;}; // 等待接收结束
address = RFD; // 读取匹配地址
RFTXRXIF = 0; // 清除发送标志
if((BytesToReceive >= 64)||(BytesToReceive <= 0))
{
return FALSE;
}
if(address)address = address; //没用的语句,只是用来消除warning
for(i=0;i<(BytesToReceive - 1);i++)
{
while(RFTXRXIF == 0){if(readTimer(APP_TIMER0)>WAIT_TIME)return FALSE;}; // 等待接收结束
buff = RFD; // 读取数据包长度
RFTXRXIF = 0; // 清除发送标志
}
*bytes = (BytesToReceive);
SIDLE();
return TRUE;
}
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
About Real-Time Innovations ScopeTools 4.0c?
交流电源工作状态指示电路
60W 壁挂式 AC-DC 适配器(IP42 防护),满足 DOE Level VII 能效要求,面向医疗、家庭医疗保健与工业应用
蓝牙技术联盟看好哪些新标准,将在哪些技术领域拓展
无线RF解决方案 - 结合 ZigBee, RF4CE, 智能能源及IP
逻辑电平测试电路
多机种飞机管道供油自动监控与计量系统
还要有一段时间缺席,大家原谅!祝新年好!
三星4nm制程良率突破80%
电源工作状态指示电路
超低功耗微控制器模块为工程师带来新的机遇——第2部分:配置Eclipse
还要有一段时间缺席,大家原谅!
多通道抗凝血药物筛选检测仪的研制
Infobip 推出 AgentOS:告别手动编排,AI 驱动客户旅程
沐曦股份发布一季报,营收大涨75.37%
改进的双向启发式搜索算法及其在车载导航仪中的应用
英国海军在研主战装备
新一代舰艇隐身技术研制特点
继电器状态指示电路
飞行器全静压检测系统的设计与实现
纳芯微携汽车电子一站式解决方案亮相2026北京车展
保险丝熔断指示电路
提供多功能编程器电路图和PCB,请排队
印度准备接收俄“阿库拉”级核潜艇
非接触式IC卡预收费电度表的设计
涨价40%!PCB价格急剧上涨
无刷电机控制详解(第四篇):电流控制
英海军45型驱逐舰首舰“果敢”号下水
三星电子或分拆半导体部门,应对罢工危机
大家说说自己正在使用的单片机吧