原创
公布CC1110最简单的收发程序
2009-12-20 16:45
4639
7
24
分类:
软件与OS
/**********************************************************************
*文件: 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;
}
//2009年5月25日
用户1602567 2013-3-28 16:56
zigbee_904218839 2013-3-25 00:14
用户1602567 2013-3-22 11:42
zigbee_904218839 2013-1-5 08:44
用户377235 2012-12-27 17:36
能给我一份IAR源文件么我的邮箱407687255@qq.com
用户426838 2012-10-26 17:37
zigbee_904218839 2011-2-11 13:05
用户1610321 2011-2-8 11:10
用户1610321 2011-2-8 09:12
zigbee_904218839 2009-12-20 16:42