专栏中心

EEPW首页 > 专栏 > 公布CC1110最简单的收发程序

公布CC1110最简单的收发程序

发布人:0750long 时间:2009-07-15 来源:工程师 发布文章
公布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;
}

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

60W 壁挂式 AC-DC 适配器(IP42 防护),满足 DOE Level VII 能效要求,面向医疗、家庭医疗保健与工业应用

蓝牙技术联盟看好哪些新标准,将在哪些技术领域拓展

无线RF解决方案 - 结合 ZigBee, RF4CE, 智能能源及IP

视频 2010-01-14

三星4nm制程良率突破80%

EDA/PCB 2026-04-30

超低功耗微控制器模块为工程师带来新的机遇——第2部分:配置Eclipse

Infobip 推出 AgentOS:告别手动编排,AI 驱动客户旅程

2026-04-30

沐曦股份发布一季报,营收大涨75.37%

智能计算 2026-04-30

英国海军在研主战装备

视频 2010-01-14

新一代舰艇隐身技术研制特点

视频 2010-01-14

纳芯微携汽车电子一站式解决方案亮相2026北京车展

2026-04-30

印度准备接收俄“阿库拉”级核潜艇

视频 2010-01-14

涨价40%!PCB价格急剧上涨

2026-04-30

无刷电机控制详解(第四篇):电流控制

英海军45型驱逐舰首舰“果敢”号下水

视频 2010-01-14

三星电子或分拆半导体部门,应对罢工危机

更多 培训课堂
更多 焦点
更多 视频

技术专区