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

📄 rf24e1.lst

📁 基于无线单片机24e1的组网程序。在无线传感器之类的应用中的成功案例。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   RF24E1                                                                08/17/2006 14:22:14 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE RF24E1
OBJECT MODULE PLACED IN .\output\RF24E1.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RF24E1.c OMF2 BROWSE DEBUG OBJECT(.\output\RF24E1.obj)

line level    source

   1          //========================================================
   2          //深圳奥特迅电力设备有限公司
   3          //电池监控系统用无线传输模块
   4          //文件名:RF24E1.C
   5          //描述:无线收发模块处理,无线子系统的初始化配置;spi操作;
   6          //      无线收发操作;子系统工作在shockburst接收模式下
   7          //      收到无线数据,LED指示
   8          //      喂狗操作
   9          //By:Andylee 2006-6-13
  10          //anssett@163.com
  11          //=========================================================
  12          #include <BATTERY.H>
  13          void SendCh(char);
  14          unsigned int OneSCnt;
  15          bit OneSecondGain=1;
  16          sbit P04=P0^4;                                  //备用
  17          sbit led=P0^3;
  18          sbit Clr_Dog=P0^5;                              //喂狗用
  19          sbit Led_Show=P0^6;                     //LED点灯
  20          unsigned char code RxTxConfig[] = {
  21              RF_DATA_LENGTH * 8, RF_DATA_LENGTH * 8,     //信道2和1的数据长(单位为位)
  22                  0x00, 0x00, 0x00, 0x00, 0x00,                   //信道2的地址(如没有5字节长,则较低的位为有效位,下同)
  23                  0xaa, 0xbb, 0x12, 0x34, 0x83,                   //信道1的地址
  24                                                                  //地址的位数(B0100_00xx),
  25                                                                  //CRC位数(16位Bxxxx_xx1x,8位Bxxxx_xx0x,CRC允许(Bxxxx_xxx0,0禁止,1允许)
  26                  B1000_0001,//--------------------------------------------------------------------------------------------
             -----------------
  27          
  28                                                                  //位7,RX2_EN,为0只有信道1接收,为1允许2个信道同时接收
  29                                                                  //位6,CM,通讯方式,0:direct mode,1:ShockBurst mode,24e1只能为1
  30                                                                  //位5,RF DATA RATE,0:250Kbps,1:1Mbps,250Kbps时可提高接收灵敏度10dbm,1Mbps时要求16M晶体
  31                                                                  //位4,3,2,晶体频率,为该值+1再*4,如为2,则为12M晶体,3 ,16M
  32                                                                  //位1,0:发射功率:00:-20,        01:-10 10:-5 11:0dbm     
  33                  B0100_1111,//--------------------------------------------------------------------------------------------
             -----------------                                      
  34                                                                  //B0110_1111,1信道接收,shockBurst方式 ,1Mbps,16Mhz,0 DBm
  35                                                                  //B1111_111x,表示频率, 实际频率为2400+(B1111_111x >> 1)
  36                                                                  //位0,RX_EN,为0发送,为1接收
  37                  B0000_0101,                             //2402Mhz,接收方式       (最后一位 RX_EN 为1表接收方式)
  38          };
  39          unsigned int xdata RxMsg_list[4];
  40          struct RFConfig
  41          {
  42              unsigned char n;
  43              unsigned char buf[15];
  44          };
  45          
  46          typedef struct RFConfig RFConfig;
  47          
  48          #define ADDR_INDEX  8   // Index to address bytes in RFConfig.buf 
  49          #define ADDR_COUNT  4   // Number of address bytes
  50          
  51          const RFConfig tconf =
  52          {
  53              15,
C51 COMPILER V7.08   RF24E1                                                                08/17/2006 14:22:14 PAGE 2   

  54              RF_DATA_LENGTH * 8, RF_DATA_LENGTH * 8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  55              0xaa, 0xbb, 0x12, 0x34, 0x81, 0x4f, 0x04
  56          };
  57          
  58          const RFConfig rconf =
  59          {
  60              15,
  61              RF_DATA_LENGTH * 8, RF_DATA_LENGTH * 8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  62              0xaa, 0xbb, 0x12, 0x34, 0x81, 0x4f, 0x05
  63          };
  64          
  65          //================================================================
  66          //函数功能:100us软件延时程序
  67          //filename:Delay100us()
  68          //input:
  69          //output:none
  70          //================================================================
  71          void Delay100us(unsigned char n)
  72          {
  73   1              unsigned char i;
  74   1              while(n--)
  75   1              for(i=0;i<35;i++)
  76   1                  ;
  77   1      }
  78          //================================================================
  79          //函数功能:毫秒软件延时程序
  80          //filename:Delay100us()
  81          //input:
  82          //output:none
  83          //================================================================
  84          
  85          void Delayms(volatile unsigned char n)
  86          {
  87   1          unsigned char j;
  88   1          while(n--)
  89   1              for(j=0;j<10;j++)
  90   1                      Delay100us(10);
  91   1      
  92   1      }
  93          //================================================================
  94          //函数功能:片内SPI接口操作
  95          //filename:fSpiRdWr()
  96          //input:char 读操作,输入参数0
  97          //output:none
  98          //================================================================
  99          uchar SpiReadWrite(uchar dat){
 100   1              EXIF &= ~0x20;                                          // Clear SPI interrupt
 101   1              SPI_DATA = dat;                                         // Move byte to send to SPI data register
 102   1              while((EXIF & 0x20) == 0x00);                   // Wait until SPI hs finished transmitting
 103   1              return SPI_DATA;
 104   1      }
 105          
 106          //================================================================
 107          //函数功能:将无线子系统初始化
 108          //filename:SetRxMode()
 109          //input:none
 110          //output:none
 111          //================================================================
 112          void fRfInit(void){
 113   1              uchar b;
 114   1              PWR_UP = 1;                             // Turn on Radio
 115   1          Delay100us(30);                     // Wait > 3ms 
C51 COMPILER V7.08   RF24E1                                                                08/17/2006 14:22:14 PAGE 3   

 116   1          SPICLK = 0;                         // Max SPI clock (XTAL/8)
 117   1          SPI_CTRL = 0x02;                    // Connect internal SPI controller to Radio
 118   1              CS = 1;                             // RF SPI CS = 1,进行配置
 119   1              Delay100us(0);
 120   1          for(b=0;b<rconf.n;b++)
 121   1          {
 122   2              SpiReadWrite(rconf.buf[b]);
 123   2          }
 124   1          CS = 0;                                                                     //退出配置状态
 125   1              Delay100us(0);
 126   1              CE = 1;                                                                 //启动接收
 127   1      }
 128          /*****************************************************************************************
 129          //函数名:RxPacket()
 130          //输入:none
 131          //输出:无
 132          //功能描述:接收一组数据包
 133          /*****************************************************************************************/
 134          unsigned char RxPack(void)
 135          {
 136   1          unsigned char b,jj=0;
 137   1          CE = 1;
 138   1          while(DR1 == 0);
 139   1              while(DR1)
 140   1              {
 141   2          b = SpiReadWrite(0);
 142   2              RxMsg_list[jj]=(unsigned int)b<<8;
 143   2              b=SpiReadWrite(0);
 144   2              RxMsg_list[jj++] +=b;
 145   2              }
 146   1          CE = 0;
 147   1          return jj;
 148   1      }
 149          //================================================================
 150          //函数功能:端口初始化
 151          //filename:IO_Init()

⌨️ 快捷键说明

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