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

📄 24e1.lst

📁 利用NTC电阻实现温度测试,带详细文档和C语言代码,测试温度误差在0.5度.
💻 LST
字号:
C51 COMPILER V7.02a   24E1                                                                 07/10/2006 12:05:33 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          /*=================================================================================================
   3            Copyright (C), 2005, RCG Tech. Co., Ltd.
   4            File name:    24E1.C
   5            Author: Zhangui Duan   Version: v1.3   Date: 2005-3-30
   6          
   7            Description:
   8               此程序文件主要是完成无线数据的基本发送和传输。
   9                          1,nRF24E1的初始化控制 
  10                          2,nRF24E1的数据发射与数据接收
  11                          3,串口数据打印 
  12                          4,延时程序
  13                          5,在主程序main.c中调用这里面的函数
  14                          6,收发速度为250Kbps(最小),发射功率为0dBm(最大),目的是保证发送距离最远
  15            Other Description:
  16                           由 Keil C51 V7.05 编译通过
  17          
  18            Function List:  
  19              1.  对nRF2401子系统进行数据读写操作
  20                          unsigned char SpiReadWrite(unsigned char b);
  21                  2,     配置接收器
  22                          void Init_Receiver(void);
  23                  3,     接收数据块
  24                          void Receiver(unsigned char *rxbuf);
  25                  4,     发送数据块
  26                          void Transmitter(unsigned char txbuf[]);
  27                          
  28            History:          
  29              1. Date: 2005-6-12
  30                 Author:Zhangui Duan 
  31                 Modification: 由于卡号要与普通的IC卡兼容,将卡号设置为4个字节,所以发送的有效数据宽度
  32                     由原来的48位改为56位(1字节前置码+4字节卡号+1字节卡参数值+1字节校验字节)
  33          
  34          ===============================================================================================*/
  35          
  36          #include "24E1.h"
  37          
  38           #define DATAT_W                0x70 //发送有效数据宽度:DATA2_W:112位,DATA1_W:112位
  39           #define DATAR_W                0x80 //接收有效数据宽度:DATA2_W:128位,DATA1_W:128位
  40           #define RATE_POWER     0x4f //收发速度为250Kbps,发射功率为0dBm
  41          unsigned char TxBuf[TNUM];
  42          unsigned char RxBuf[RNUM];
  43          unsigned char TRCOUNT;
  44          unsigned char  TIME;
  45           RFConfig tconf =
  46          {
  47              15,
  48              DATAT_W, DATAT_W,//发送有效数据宽度:DATA2_W:112位,DATA1_W:112位
  49              0x00, 0x00, 0x00, 0x00, 0x00,//ADDR2地址宽度
  50                  0x00,0xaa, 0xbb, 0x12, 0x34, //ADDR1地址宽度 
  51                  0x83, RATE_POWER, //250Kbps,0dBm
  52                  0x04
  53          };
  54           RFConfig rconf =
  55          {
C51 COMPILER V7.02a   24E1                                                                 07/10/2006 12:05:33 PAGE 2   

  56              15,
  57              DATAR_W, DATAR_W, //接收有效数据宽度:DATA2_W:112位,DATA1_W:112位
  58                  0x00, 0x00, 0x00, 0x00, 0x00,//ADDR2地址宽度
  59                  0x00, 0xaa, 0xbb, 0x12, 0x34,//ADDR1地址宽度 
  60                  0x83, RATE_POWER,//250Kbps,0dBm
  61              0x05
  62          };
  63          
  64          /***************************************************************************************
  65            Function:        WriteRTC
  66            Description:     RTC定时时钟初始化
  67            Calls:           
  68            Called By:      
  69                                   void main(void)
  70            Input:        
  71            Output:    
  72            Return:    
  73            Others:    
  74          ***************************************************************************************/
  75          void WriteRTC(unsigned int w)
  76          {
  77   1          while(REGX_CTRL & 0x10)             // Wait for the interface to be ready
  78   1              ;
  79   1          REGX_MSB = w >> 8;
  80   1          REGX_LSB = w & 0xff;
  81   1          REGX_CTRL = 0x0a;
  82   1          while(REGX_CTRL & 0x10)             // Wait for the interface to be ready
  83   1              ;
  84   1      }
  85          
  86          /***************************************************************************************
  87            Function:        SpiReadWrite
  88            Description:     对nRF2401子系统进行数据读写操作
  89            Calls:           
  90            Called By:      
  91                                   void Init_Receiver(void)
  92                                   void Transmitter(unsigned char txbuf[])
  93            Input:     b 
  94                                   发送的时候是要发送的单个数据,接收的时候初始化值   
  95            Output:    
  96            Return:    SPI_DATA
  97                                   接收数据时是接收的数据
  98            Others:    
  99          ***************************************************************************************/
 100          unsigned char SpiReadWrite(unsigned char b)
 101          {
 102   1          EXIF &= ~0x20;                  // Clear SPI interrupt
 103   1          SPI_DATA = b;                   // Move byte to send to SPI data register
 104   1          while((EXIF & 0x20) == 0x00)    // Wait until SPI hs finished transmitting
 105   1              ;
 106   1          return SPI_DATA;
 107   1      }
 108          
 109          /***************************************************************************************
 110            Function:             Transmitter
 111            Description:          发送数据块
 112            Calls:                Delay100us();
 113                                                  SpiReadWrite();
 114            Called By:      
 115                                                  void main(void)
 116            Input:                txbuf[]
 117                                                  要发送的数据串                                                                             
C51 COMPILER V7.02a   24E1                                                                 07/10/2006 12:05:33 PAGE 3   

 118            Output:               
 119            Return:                               
 120            Others:                                                       
 121          ***************************************************************************************/
 122          
 123          void Transmitter(unsigned char *txbuf)
 124          {
 125   1              unsigned char i;
 126   1          CS = 1;      //开配置方式
 127   1              CE = 0;  
 128   1          Delay100us(0);
 129   1          for(i=0;i<tconf.n;i++)
 130   1          {
 131   2              SpiReadWrite(tconf.buf[i]);//发送器配置字
 132   2          }
 133   1          CS = 0;                              //关配置方式
 134   1      
 135   1              CE = 1;  //nRF2401开始工作
 136   1          Delay100us(0);
 137   1          for(i=0;i<ADDR_COUNT;i++)  //发送接收节点地址到nRF2401
 138   1              SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
 139   1      
 140   1              for (i=0;i<TNUM;i++)
 141   1          {
 142   2              EXIF &= ~0x20;                      // Clear SPI interrupt
 143   2              SPI_DATA = txbuf[i];               // Move byte to send to SPI data register       
 144   2              while((EXIF & 0x20) == 0x00)        // Wait until SPI hs finished transmitting
 145   2                  ;  
 146   2              //      PutChar(txbuf[i]);                  //送串口显示      
 147   2          }
 148   1          CE = 0;                      //激活ShockBurst发送
 149   1          //Delay100us(3);   // Wait ~300us
 150   1      }
 151          
 152          /***************************************************************************************
 153            Function:             Init_Receiver
 154            Description:          配置接收器的接收地址,接收数据长度,接收地址,
 155            Calls:                Delay100us();
 156                                                  SpiReadWrite();
 157            Called By:      
 158                                                  void main(void)
 159            Input:                                                           
 160            Output:    
 161            Return:       
 162            Others:    
 163          ***************************************************************************************/
 164          void Init_Receiver(void)
 165          {
 166   1          unsigned char b;
 167   1              CE = 0;
 168   1          CS = 1;      //打开配置方式
 169   1      
 170   1          Delay100us(0);
 171   1          for(b=0;b<rconf.n;b++)
 172   1          {
 173   2              SpiReadWrite(rconf.buf[b]);//发送接收器配置字
 174   2          }
 175   1      
 176   1          CS = 0;      //关配置方式   
 177   1          CE = 1;      //使能收发功能
 178   1      }       
 179          
C51 COMPILER V7.02a   24E1                                                                 07/10/2006 12:05:33 PAGE 4   

 180          /***************************************************************************************
 181            Function:             Receiver
 182            Description:          接收数据块
 183            Calls:                Delay100us();
 184                                                  SpiReadWrite();
 185            Called By:      
 186                                                  void main(void)
 187            Input:                *rxbuf
 188                                                  存储接收数据的数组的首地址                                                                                 
 189            Output:               接收的数据存放在数据接收数组中
 190            Return:                               
 191            Others:               在调用此函数之前一定得调用函数Init_Receiver()
 192                                                  进行接收初始化配置
 193                                                  
 194          ***************************************************************************************/
 195          void Receiver(unsigned char *rxbuf)
 196          {
 197   1          unsigned char rnum;
 198   1         // Delay100us(30);
 199   1              while(DR1==1)
 200   1          {   
 201   2                  CS = 0;      //关配置方式   
 202   2              CE = 0;  //关收发功能
 203   2              for(rnum=0;rnum<RNUM;rnum++){
 204   3                      EXIF &= ~0x20;                      // Clear SPI interrupt
 205   3              SPI_DATA = 0;                       // Write dummy byte to SPI data register
 206   3              while((EXIF & 0x20) == 0x00)        // Wait until SPI hs finished receiving
 207   3                  ;
 208   3              rxbuf[TRCOUNT] = SPI_DATA;
 209   3                      //PutChar(rxbuf[TRCOUNT]);
 210   3                      TRCOUNT++;
 211   3                      if(TRCOUNT==RNUM)TRCOUNT=0;
 212   3                      Delay100us(3);
 213   3                      }
 214   2          }
 215   1                  //CS = 0;    //关配置方式   
 216   1          //  CE = 0;  //关收发功能
 217   1      
 218   1      }    
 219          
 220          
 221          /*
 222          char GetChar(void)
 223          {
 224              while(!RI)
 225                  ;
 226              RI = 0;
 227              return SBUF;
 228          }
 229          
 230          */
 231          /*
 232          void PutChar(char c)
 233          {
 234              while(!TI)
 235                  ;
 236              TI = 0;
 237              SBUF = c;
 238          } 
 239          */
 240          void PutChar(char c)
 241          {
C51 COMPILER V7.02a   24E1                                                                 07/10/2006 12:05:33 PAGE 5   

 242   1              SBUF = c;
 243   1              while(TI==0);
 244   1              TI = 0;
 245   1      } 
 246           
 247          void Delayms(volatile unsigned char n)
 248          {
 249   1          unsigned char j;
 250   1          while(n--)
 251   1              for(j=0;j<10;j++)
 252   1                      Delay100us(10);
 253   1      
 254   1      }
 255          
 256          void Delay100us(volatile unsigned int n)
 257          {
 258   1          unsigned char i;
 259   1          while(n--)
 260   1              for(i=0;i<35;i++)
 261   1                  ;
 262   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    295    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     64      11
   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 + -