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

📄 rf24e1.lst

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


C51 COMPILER V8.02, COMPILATION OF MODULE RF24E1
OBJECT MODULE PLACED IN .\output\RF24E1.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RF24E1.c OMF2 BROWSE MODDP2 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          //程序编译时,必须设置好XRAM的起始地址和大小,否则有可能程序不可运行!!!
  12          //2006-6-26开始
  13          //2006-8-14修改完善
  14          //=========================================================
  15          #include "Main.h"
  16          #include "Setting.h"
  17          #include "crc.h"
  18          
  19          #include <BATTERY.H>
  20          
  21          extern bit jz_req;
  22          extern bit jz_over;
  23          extern bit adc_monitor;
  24          extern bit addrSet;
  25          extern bit addrEcho;
  26          
  27          extern unsigned  char idata inCnt;
  28          extern unsigned  char xdata inBuf[17];
  29          
  30          
  31          
  32          //#define addr_jz 0xf0;                         //保存校正参数的首地址0xff0
  33          //#define addrRfaddr 0xe7;                      //保存无线通讯地址的e2rom地址(fe7~fea:本机地址;feb~fee:主站地址)
  34          //unsigned int OneSCnt;                         //每个通道采样16次,做平滑均值滤波处理
  35          /*unsigned int xdata  ADC_LIST[4][32]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  36                                                                                  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  37                                                                                  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  38                                                                                  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};*/
  39          unsigned int xdata ch1_v[50];
  40          unsigned int xdata ch2_v[50];
  41          unsigned long idata ADC_SUM[4]={0,0,0,0};               //四个通道的16次采样值的累加和
  42          
  43          unsigned int idata adcResult_list[4]={0,0,0,0};//保存最终采样值
  44          unsigned int idata adc_temp[4]={0,0,0,0};
  45          unsigned int idata rFtxBuf[4]={0,0,0,0};
  46          unsigned int idata Vcc;
  47          unsigned long idata Vcc_Sum;
  48          unsigned int idata Y_pre1,Y_pre2;//通道1、2的上一次有效采样值
  49          unsigned char idata Y1_plus,Y2_plus,Y1_minus,Y2_minus;//本次采样值超调、欠调计数器。
  50          //unsigned int data Vcc_list[32];
  51          sbit P04=P0^4;                                          //备用
  52          sbit WP=P0^3;
  53          sbit Clr_Dog=P0^5;                                      //喂狗用
  54          sbit Led_Show=P0^6;                             //LED点灯
  55          sbit e2rom_cs=P0^0;                                     //外部e2rom的偏选
C51 COMPILER V8.02   RF24E1                                                                10/05/2006 09:38:17 PAGE 2   

  56          Set idata Setting;
  57          /*unsigned char code RxTxConfig[] = {
  58              RF_DATA_LENGTH * 8, RF_DATA_LENGTH * 8,             //信道2和1的数据长(单位为位)
  59                  0x00, 0x00, 0x00, 0x00, 0x00,                           //信道2的地址(如没有5字节长,则较低的位为有效位,下同)
  60                  0xaa, 0xbb, 0x12, 0x34, 0x83,                           //信道1的地址
  61                                                                                                          //地址的位数(B0100_00xx),
  62                                                                                                          //CRC位数(16位Bxxxx_xx1x,8位Bxxxx_xx0x,CRC允许(Bxxxx_xxx0,0禁止,1允许)
  63                  B1000_0001,//--------------------------------------------------------------------------------------------
             -----------------
  64          
  65                                                                  //位7,RX2_EN,为0只有信道1接收,为1允许2个信道同时接收
  66                                                                  //位6,CM,通讯方式,0:direct mode,1:ShockBurst mode,24e1只能为1
  67                                                                  //位5,RF DATA RATE,0:250Kbps,1:1Mbps,250Kbps时可提高接收灵敏度10dbm,1Mbps时要求16M晶体
  68                                                                  //位4,3,2,晶体频率,为该值+1再*4,如为2,则为12M晶体,3 ,16M
  69                                                                  //位1,0:发射功率:00:-20,        01:-10 10:-5 11:0dbm     
  70                  B0100_1111,//--------------------------------------------------------------------------------------------
             -----------------                                      
  71                                                                  //B0110_1111,1信道接收,shockBurst方式 ,1Mbps,16Mhz,0 DBm
  72                                                                  //B1111_111x,表示频率, 实际频率为2400+(B1111_111x >> 1)
  73                                                                  //位0,RX_EN,为0发送,为1接收
  74                  B0000_0100,                             //2402Mhz,接收方式       (最后一位 RX_EN 为1表接收方式)
  75          };                                                      //这里设定为发射模式
  76          */
  77          struct RFConfig
  78          {
  79              unsigned char n;
  80              unsigned char buf[15];
  81          };
  82          
  83          typedef struct RFConfig RFConfig;
  84          
  85          #define ADDR_INDEX  8   // Index to address bytes in RFConfig.buf 
  86          #define ADDR_COUNT  4   // Number of address bytes
  87          
  88          RFConfig idata tconf =  //定义在xram是因为buf[15]中的地址段可能要动态修改。
  89          {
  90              15,
  91              8, 8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  92              0xaa, 0xbb, 0x12, 0x34, 0x81, 0x4f, 0x04
  93          };
  94          
  95          RFConfig idata rconf =  //定义在xram是因为buf[15]中的地址段可能要动态修改。
  96          {
  97              15,
  98              8, 8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  99              0xaa, 0xbb, 0x12, 0x34, 0x81, 0x4f, 0x05
 100          };
 101          
 102          //================================================================
 103          //函数功能:100us软件延时程序
 104          //filename:Delay100us()
 105          //input:
 106          //output:none
 107          //================================================================
 108          void Delay100us(unsigned char n)
 109          {
 110   1              unsigned char i;
 111   1              while(n--)
 112   1              for(i=0;i<35;i++)
 113   1                  ;
 114   1      }
 115          //================================================================
C51 COMPILER V8.02   RF24E1                                                                10/05/2006 09:38:17 PAGE 3   

 116          //函数功能:毫秒软件延时程序
 117          //filename:Delay100us()
 118          //input:
 119          //output:none
 120          //================================================================
 121          /*
 122          void Delayms(unsigned char n)
 123          {
 124              unsigned char j;
 125              while(n--)
 126                  for(j=0;j<10;j++)
 127                          Delay100us(10);
 128          
 129          }*/
 130          //================================================================
 131          //函数功能:片内SPI接口操作
 132          //filename:fSpiRdWr()
 133          //input:char 读操作,输入参数0
 134          //output:none
 135          //================================================================
 136          uchar SpiReadWrite(uchar dat){
 137   1              EXIF &= ~0x20;                                          // Clear SPI interrupt
 138   1              SPI_DATA = dat;                                         // Move byte to send to SPI data register
 139   1              while((EXIF & 0x20) == 0x00);                   // Wait until SPI hs finished transmitting

⌨️ 快捷键说明

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