⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rf_test.c

📁 CC1110无线收发FHSS的源程序。使用的开发环境是IAR7.2H
💻 C
字号:
/******************************************************************************
*                                                                             *
*    ****       ******       ****
*     ****     ********     ****
*      ****   ****  ****   ****
*       **** ****    **** ****              wxl
*        *******      *******
*         *****        *****                    成都无线龙通讯科技有限公司
*                                                                             *
*******************************************************************************
Target:       cc1110                          使用芯片:       cc1110
Author:       WXL                             程 序 员:      无线龙
data:         1/12-2007                       日    期:      1/12-2007
******************************************************************************/
/**********************************头文件**************************************/
#include "app_ex.h"
#include "cul.h"
#include "menu.h"
#include "string.h"
  #ifdef CC1110_FHSS_RX
#include "mydefine.h"
#endif
/******************************************************************************/


#define ADDRESS_0 0x01
#define ADDRESS_1 0x02
#define ADDRESS_2 0x03
#define RECEIVE_TIMEOUT               1200

#define PER_RECEIVE_TIMEOUT          10000

void rf_test_main(void);
void receiveMode(void);
void contionuousMode(void);

UINT8 myAddr;
UINT8 remoteAddr;
BOOL myAddressSet = FALSE;
UINT32 frequency;

void Single_More_FHSS(char sell)
{
  if(sell == 0)
  {
#ifdef CC1110_FHSS_TX
    radioInit(frequency, myAddr,0);
    myAddr = ADDRESS_1;
    remoteAddr = ADDRESS_2;
#endif
#ifdef CC1110_FHSS_TX2
    radioInit(frequency, myAddr,0);
    myAddr = ADDRESS_1;
    remoteAddr = ADDRESS_2;
#endif
    INT_GLOBAL_ENABLE(INT_ON);
    contionuousMode();
  }
  else if(sell == 1)
  {
    myAddr = ADDRESS_2;
    remoteAddr = ADDRESS_1;
    halWait(10);
    INT_GLOBAL_ENABLE(INT_ON);
    radioInit(frequency, myAddr,0);
    halWait(10);
    receiveMode();
   }
}

/******************************************************************************
* @fn  contionuousMode
*
* @brief
*      Function for transferring packets until stopped by user.
*
* Parameters:
*
* @param  void
*
* @return void
*
******************************************************************************/

extern INT8U ScanKey(void);

int delay(void)
{
  halWait(200);
  return 0;
}
extern void UartTX_Send_String(char *Data,int len);

void contionuousMode(void)
{
   BYTE sendBuffer1[4];
   BYTE* receiveBuffer;
   BYTE length;
   BYTE res;
   int i,Key = 0;
   BYTE sender;
   int CHANNR_Number = 0;
   BYTE Rx_buffer[5];
   sendBuffer1[0] = 0x40;
   sendBuffer1[1] = 0x02;
#ifdef CC1110_FHSS_TX2
    sendBuffer1[2] = 0x02;
#endif
#ifdef CC1110_FHSS_TX
    sendBuffer1[2] = 0x01;
#endif

   sendBuffer1[3] = 0x0D;
   P1DIR |= 0x02;
      P1INP |= ~0xF3;
   P1DIR &= 0xF3;
   while(1){
     if(P1_2 == 0)
     {
      while((P1_2 == 0));
      Key = 1;
     }
     if(Key != 0)
     {
       Key = 0;
       while(1)
       {
         res = radioSend(sendBuffer1, sizeof(sendBuffer1), remoteAddr, DO_ACK);
         halWait(5);
         res = radioReceive(&receiveBuffer, &length, 10, &sender);
         if(res == TRUE)
         {
              for(i=0;i<5;i++)
              {
                Rx_buffer[i] = *receiveBuffer++;
              }
#ifdef CC1110_FHSS_TX2
              if((Rx_buffer[2] == 0x02) && (Rx_buffer[3] == 'Y'))
#endif
#ifdef CC1110_FHSS_TX
              if((Rx_buffer[2] == 0x01) && (Rx_buffer[3] == 'Y'))
#endif

              {
                YLED = !YLED;
                break;
              }
         }
         else
         {
           if(++CHANNR_Number == 6)CHANNR_Number = 0;
           radioInit(frequency, myAddr,CHANNR_Number);
         }
       }
     }
   }
}


/******************************************************************************
* @fn  receiveMode
*
* @brief
*      Function for receiving data.
*
* Parameters:
*
* @param  void
*
* @return void
*
******************************************************************************/

void receiveMode(void)
{
   BYTE* receiveBuffer;
   BYTE Rx_buffer[4];
   BYTE Tx_buffer[5];
   BYTE res;
   BYTE length;
   unsigned char number[1];
   int i=0;
   #ifdef CC1110_FHSS_RX
   unsigned char temp2[5] = {0x68,0xaa,'U','Y','J'};
#endif
   int CHANNR_Number = 0;
   BYTE sender;
   Tx_buffer[0] = 0x40;
   Tx_buffer[1] = 0x02;
   Tx_buffer[4] = 0x0D;
   Rx_buffer[0] = 0x00;
   while( !stopApplication() )
   {
       if(radioReceive(&receiveBuffer, &length, 10, &sender))
        {
          for(i=0;i<4;i++)
          {
            Rx_buffer[i] = *receiveBuffer++;
          }
          Tx_buffer[2] = Rx_buffer[2];
          Tx_buffer[3] = 'Y';
          res = radioSend(Tx_buffer, sizeof(Tx_buffer), remoteAddr, DO_ACK);
          halWait(1);
          if((Rx_buffer[2] == 0x01) && res)
            {
#ifdef CC1110_FHSS_RX
            number[0] = CHANNR_Number % 10 + 48;
            Print_word(number,6,79,1);
            UartSendWord(temp2,5);
            UartSendWord((void*)di_yz,sizeof(di_yz));
#endif
            }
            else if((Rx_buffer[2] == 0x02) && res)
            {
#ifdef CC1110_FHSS_RX
            number[0] = CHANNR_Number % 10 + 48;
            Print_word(number,6,0,1);
            UartSendWord(temp2,5);
            UartSendWord((void*)di_yz,sizeof(di_yz));
#endif
        }
            if(++CHANNR_Number == 6)CHANNR_Number = 0;
            radioInit(frequency, myAddr,CHANNR_Number);
       }
   }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -