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

📄 eeprom.lst

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


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

stmt level    source

   1          /*= eeprom.c ===================================================================
   2           *
   3           * Copyright (C) 2004 Nordic Semiconductor
   4           *
   5           * This file is distributed in the hope that it will be useful, but WITHOUT
   6           * WARRANTY OF ANY KIND.
   7           *
   8           * Author(s): Ole Saether
   9           *
  10           * COMPILER:
  11           *
  12           *   This program has been tested with Keil C51 V7.09
  13           *
  14           * $Revision: 3 $
  15           *
  16           *==============================================================================
  17          */
  18          //#include "nrfexx.h"
  19          //#include "util.h"
  20          #include "eeprom.h"
  21          
  22          #define EE_WRSR     0x01
  23          #define EE_WRITE    0x02
  24          #define EE_READ     0x03
  25          #define EE_WRDI     0x04
  26          #define EE_RDSR     0x05
  27          #define EE_WREN     0x06
  28          
  29          void EEInit(void)
  30          {
  31   1      
  32   1          P0_DIR &= ~0x01;                        // EECSN is output
  33   1          SPICLK = 2;                             // CLK/32 SPI clock
  34   1          EECSN = 1;
  35   1          SPI_CTRL = 0x01;                        // Connect internal SPI to P1
  36   1      }
  37          
  38          unsigned char EEStatus(void)
  39          {
  40   1          unsigned char b;
  41   1      
  42   1          EECSN = 0;
  43   1          SpiReadWrite(EE_RDSR);
  44   1          b = SpiReadWrite(0);
  45   1          EECSN = 1;
  46   1          return b;
  47   1      }
  48          /***************************************************************************************
  49            Function:             EERead
  50            Description:          从eeprom中读出一个数据
  51            Calls:            SpiReadWrite();
  52            Called By:      
  53                                                  void EERxbyte(unsigned int addr_str,unsigned char *a)
  54            Input:                        
  55                                   addr: 要读出数据的地址                                                            
C51 COMPILER V7.02a   EEPROM                                                               01/19/2006 15:39:37 PAGE 2   

  56            Output:    
  57            Return:               
  58                       b:读出的数据      
  59            Others:    
  60          ***************************************************************************************/
  61          unsigned char EERead(unsigned int addr)
  62          {
  63   1          unsigned char b;
  64   1      
  65   1          while ((EEStatus() & 0x01) != 0x00)     // Wait if busy
  66   1              ;
  67   1          EECSN = 0;
  68   1          SpiReadWrite(EE_READ);
  69   1          SpiReadWrite(addr >> 8);
  70   1          SpiReadWrite(addr & 0xff);
  71   1          b = SpiReadWrite(0);
  72   1          EECSN = 1;
  73   1          return b;
  74   1      }
  75          /***************************************************************************************
  76            Function:             EEWrite
  77            Description:          写一个数据到eeprom中,
  78            Calls:            SpiReadWrite();
  79            Called By:      
  80                                                  vvoid EEWxbyte(unsigned int addr_str,unsigned char *a)
  81            Input:                        
  82                                   addr: 要写入的地址  b,要写入的数据                                                       
  83            Output:    
  84            Return:       
  85            Others:    
  86          ***************************************************************************************/
  87          void EEWrite(unsigned int addr, unsigned char b)
  88          {
  89   1          while((EEStatus() & 0x01) != 0x00)      // Wait if busy
  90   1              ;
  91   1          EECSN = 0;
  92   1          SpiReadWrite(EE_WREN);
  93   1          EECSN = 1;
  94   1          EECSN = 0;
  95   1          SpiReadWrite(EE_WRITE);
  96   1          SpiReadWrite(addr >> 8);
  97   1          SpiReadWrite(addr & 0x00ff);
  98   1          SpiReadWrite(b);
  99   1          EECSN = 1;
 100   1      }
 101          
 102          /***************************************************************************************
 103            Function:             EEWxbyte
 104            Description:          连续的写四个数到eeprom中
 105            Calls:            EEWrite(unsigned int addr, unsigned char b)
 106            Called By:      
 107                                                  void main(void)
 108            Input:                        
 109                                   addr: 写数据的开始地址  a:写入数据的开始地址 I:写入数据的个数                                                            
 110            Output:    a[0]-a[I-1]; 
 111            Return:                               
 112            Others:    
 113          ***************************************************************************************
 114          void EEWxbyte(unsigned int addr_str,unsigned char *a,unsigned char I)
 115          {
 116             unsigned char i;
 117             unsigned char *snr;
C51 COMPILER V7.02a   EEPROM                                                               01/19/2006 15:39:37 PAGE 3   

 118             memcpy(snr,a,I);
 119             for(i=0;i++;i<I)
 120             {
 121              EEWrite(addr_str, snr[i]);
 122                  //EEWrite(addr_str, 0x23);
 123                  addr_str++;
 124             }
 125             memcpy(a,snr,I); 
 126          }   
 127          
 128          ***************************************************************************************
 129            Function:             EERxbyte
 130            Description:          连续的写四个数到eeprom中
 131            Calls:            EERrite(unsigned int addr, unsigned char b)
 132            Called By:      
 133                                                  void main(void)
 134            Input:                        
 135                                   addr: 读数据的开始地址  a:读数据的开始地址 I:写入数据的个数                                                      
 136            Output:    a[0]-a[i]; 
 137            Return:                               
 138            Others:    
 139          ***************************************************************************************
 140          void EERxbyte(unsigned int addr_str,unsigned char *a,unsigned char I)
 141          {
 142             unsigned char i;
 143             unsigned char *snr;
 144             memcpy(snr,a,I);
 145             for(i=0;i++;i<I)
 146             {
 147              snr[i] = EERead(addr_str);
 148                  addr_str++;
 149             } 
 150             memcpy(a,snr,I) ;
 151          }   
 152          */


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