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

📄 24e1.lst

📁 RFID模块 RF24E1读卡程序,用Keil C编译成功!
💻 LST
字号:
C51 COMPILER V7.02a   24E1                                                                 01/19/2006 15:39:26 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE 24E1
OBJECT MODULE PLACED IN 24E1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24E1.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*============================================================================================
   2            Copyright (C), 2005, RegalCyber Tech. Co., Ltd.
   3            File name:    24E1.C
   4            Author: Zhangui Duan   Version: v1.2   Date: 2005-3-30
   5          
   6            Description:
   7               此程序文件主要是完成无线数据的基本发送和传输。
   8                          1,nRF24E1的初始化控制 
   9                          2,nRF24E1的数据发射与数据接收
  10                          3,串口数据打印 
  11                          4,延时程序
  12                          5,在主程序main.c中调用这里面的函数
  13                          6,收发速度为1Mbps(最大),发送功率为-20dBm(最小)目的是缩短发送距离
  14            Other Description:
  15                           由 Keil C51 V7.05 编译通过
  16          
  17            Function List:  
  18              1.  对nRF2401子系统进行数据读写操作
  19                          unsigned char SpiReadWrite(unsigned char b);
  20                  2,     配置接收器
  21                          void Init_Receiver(void);
  22                  3,     接收数据块
  23                          void Receiver(unsigned char *rxbuf);
  24                  4,     发送数据块
  25                          void Transmitter(unsigned char txbuf[]);
  26                          
  27            History:          
  28              1. Date: 2005-6-12
  29                 Author:Zhangui Duan 
  30                 Modification: 由于卡号要与普通的IC卡兼容,将卡号设置为4个字节,所以接收的有效数据宽度
  31                     由原来的40位改为48位(1字节前置码+4字节卡号+1字节校验字节)
  32          
  33          ============================================================================================*/
  34          
  35          #include <24e1.h>
  36          #include "delay.h"
  37          // #define FAR   1                  //远距离发射
  38          
  39           #define DATAT_W                0x60 //发送有效数据宽度:DATA2_W:48位,DATA1_W:48位
  40           #define DATAR_W                0x70 //接收有效数据宽度:DATA2_W:48位,DATA1_W:48位
  41          #ifdef FAR
               #define RATE_POWER     0x4f //收发速度为250Kbps,发射功率为0dBm
              #else 
  44           #define RATE_POWER     0x4c //收发速度为250Kbps,发射功率为-20dBm
  45          #endif
  46           unsigned char TxBuf[TNUM];//发送缓冲区
  47           unsigned char RxBuf[RNUM];//接收缓冲区 
  48           unsigned char TRCOUNT;    //发送数据计数器
  49           unsigned char tconfbuf[2],rconfbuf[2];//发送和接收配置字的最后两个字节
  50          //发送数据格式配置
  51           RFConfig code tconf =
  52          {
  53              13,
  54              DATAT_W, DATAT_W,//发送有效数据宽度:DATA2_W:48位,DATA1_W:48位
  55              0x00, 0x00, 0x00, 0x00, 0x00,//ADDR2地址宽度
C51 COMPILER V7.02a   24E1                                                                 01/19/2006 15:39:26 PAGE 2   

  56                  0x00,0xaa, 0xbb, 0x12, 0x34, //ADDR1地址宽度 
  57                  0x83//, RATE_POWER,//250Kbps,0dBm
  58             // 0x04
  59          };
  60          
  61          //接收数据格式配置
  62           RFConfig  code rconf =
  63          {
  64              13,
  65              DATAR_W, DATAR_W, //接收有效数据宽度:DATA2_W:48位,DATA1_W:48位
  66                  0x00, 0x00, 0x00, 0x00, 0x00,//ADDR2地址宽度
  67                  0x00, 0xaa, 0xbb, 0x12, 0x34,//ADDR1地址宽度 
  68                  0x83//, RATE_POWER, //250Kbps,0dBm
  69                  //0x05
  70          };
  71          
  72          
  73          /*********************************************************************************************
  74            Function:        SpiReadWrite
  75            Description:     对nRF2401子系统进行数据读写操作
  76            Calls:           
  77            Called By:      
  78                                   void Init_Receiver(void)
  79                                   void Transmitter(unsigned char txbuf[])
  80            Input:     b 
  81                                   发送的时候是要发送的单个数据,接收的时候初始化值   
  82            Output:    
  83            Return:    SPI_DATA
  84                                   接收数据时是接收的数据
  85            Others:    
  86          *********************************************************************************************/
  87          unsigned char SpiReadWrite(unsigned char b)
  88          {
  89   1          EXIF &= ~0x20;                  // Clear SPI interrupt
  90   1          SPI_DATA = b;                   // Move byte to send to SPI data register
  91   1          while((EXIF & 0x20) == 0x00);    // Wait until SPI hs finished transmitting  
  92   1          return SPI_DATA;
  93   1      }
  94          
  95          
  96          
  97          
  98          
  99          /*********************************************************************************************
 100            Function:             Init_Receiver
 101            Description:          配置接收器的接收地址,接收数据长度,接收地址,
 102            Calls:                Delay100us();
 103                                                  SpiReadWrite();
 104            Called By:      
 105                                                  void main(void)
 106            Input:                                                           
 107            Output:    
 108            Return:       
 109            Others:    
 110          *********************************************************************************************/
 111          
 112          void Init_Receiver(void)
 113          {
 114   1          unsigned char b;
 115   1              CE = 0;
 116   1          CS = 1;      //打开配置方式
 117   1      
C51 COMPILER V7.02a   24E1                                                                 01/19/2006 15:39:26 PAGE 3   

 118   1          Delay100us(0);
 119   1          for(b=0;b<rconf.n;b++)
 120   1          {
 121   2              SpiReadWrite(rconf.buf[b]);//发送接收器配置字
 122   2          }
 123   1               SpiReadWrite(rconfbuf[0]);
 124   1               SpiReadWrite(rconfbuf[1]);
 125   1          CS = 0;      //关配置方式   
 126   1          CE = 1;      //使能收发功能
 127   1      }       
 128          
 129          /*********************************************************************************************
 130            Function:             Receiver
 131            Description:          接收数据块
 132            Calls:                Delay100us();
 133                                                  SpiReadWrite();
 134            Called By:      
 135                                                  void main(void)
 136            Input:                *rxbuf
 137                                                  存储接收数据的数组的首地址                                                                                 
 138            Output:               接收的数据存放在数据接收数组中
 139            Return:                               
 140            Others:               在调用此函数之前一定得调用函数Init_Receiver()
 141                                                  进行接收初始化配置
 142                                                  
 143          *********************************************************************************************/
 144          void Receiver(unsigned char *rxbuf)
 145          {
 146   1          unsigned char rnum;
 147   1              while(DR1==1)
 148   1          {
 149   2                  for(rnum=0;rnum<RNUM;rnum++)
 150   2                      {
 151   3                              EXIF &= ~0x20;                      // Clear SPI interrupt
 152   3                      SPI_DATA = 0;                       // Write dummy byte to SPI data register
 153   3                      while((EXIF & 0x20) == 0x00)        // Wait until SPI hs finished receiving
 154   3                  ;
 155   3                      rxbuf[TRCOUNT] = SPI_DATA;
 156   3                              //PutChar(rxbuf[TRCOUNT]);
 157   3                              TRCOUNT++;
 158   3                              if(TRCOUNT==RNUM)TRCOUNT=0;
 159   3                              Delay100us(3);
 160   3                      }
 161   2          }
 162   1      }
 163          
 164          /*********************************************************************************************
 165            Function:             Transmitter
 166            Description:          发送数据块
 167            Calls:                Delay100us();
 168                                                  SpiReadWrite();
 169            Called By:      
 170                                                  void main(void)
 171            Input:                txbuf[]
 172                                                  要发送的数据串                                                                             
 173            Output:               
 174            Return:                               
 175            Others:                                                       
 176          *********************************************************************************************/
 177          void Transmitter(unsigned char txbuf[])
 178          {
 179   1              unsigned char i;
C51 COMPILER V7.02a   24E1                                                                 01/19/2006 15:39:26 PAGE 4   

 180   1          CS = 1;      //开配置方式
 181   1          Delay100us(0);
 182   1          for(i=0;i<tconf.n;i++)
 183   1          {
 184   2              SpiReadWrite(tconf.buf[i]);//发送发送器配置字
 185   2          }
 186   1           SpiReadWrite(tconfbuf[0]);
 187   1               SpiReadWrite(tconfbuf[1]);
 188   1          CS = 0;                              //关配置方式
 189   1      
 190   1              CE = 1;  //nRF2401开始工作
 191   1          Delay100us(0);
 192   1          for(i=0;i<ADDR_COUNT;i++)  //发送接收节点地址到nRF2401
 193   1              SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
 194   1      
 195   1              for (i=0;i<TNUM;i++)
 196   1          {
 197   2              EXIF &= ~0x20;                      // Clear SPI interrupt
 198   2              SPI_DATA = txbuf[i];               // Move byte to send to SPI data register       
 199   2              while((EXIF & 0x20) == 0x00)        // Wait until SPI has finished transmitting
 200   2                  ;  
 201   2                      //PutChar(txbuf[i]);                //送串口显示      
 202   2          }
 203   1          CE = 0;                      //激活ShockBurst发送
 204   1          Delay100us(3);   // Wait ~300us
 205   1      }
 206          
 207          
 208          void PutChar(char c)
 209          {
 210   1          while(!TI);            
 211   1          SBUF = c;
 212   1              TI = 0;
 213   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    238    ----
   CONSTANT SIZE    =     28    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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