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

📄 drv_at24c64.lst

📁 基于EEPROM AT24C64的数据存储
💻 LST
字号:
C51 COMPILER V7.06   DRV_AT24C64                                                           10/29/2006 14:34:14 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DRV_AT24C64
OBJECT MODULE PLACED IN Drv_At24c64.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Drv_At24c64.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <./Atmel/at89x52.h>
   2          #include    "source.h"
   3          #define DEVICEID(A)  (A&0XF0)
   4          #define DEVICE_AT24C64 0xA0 //A1A2A1=0
   5          #define DEVICE_SDA2000 0x60
   6          extern TMDEV_OPS   Opsgp;
   7          unsigned int  eeprom_last=0;
   8          unsigned int  eeprom_grid=0;
   9          //*-----------------------------------------------------------------------------
  10          //* 函数名称  : At24c64_WriteAgain (I2Cdesc *I2C_pt, u_short loadAddress, u_char nbByte)
  11          //* Object    : I2C
  12          //* 输入参数  : <I2C_pt> =   为I2C的描述指针,其结构定义在source.h中
  13          //* 输出变量  : 无
  14          //* 功能       :如果写到AT2C64的数据长度大于一个页,那么下次操作的要等5MS后在进行下次写操作
  15          //*-----------------------------------------------------------------------------
  16          void At24c64_WriteAgain (I2Cdesc *I2C_pt){
  17   1              unsigned int temp,adr;
  18   1              if(eeprom_grid<eeprom_last){
  19   2                      adr=eeprom_grid;
  20   2                      eeprom_grid +=EEPROM_PAGE_LEN;
  21   2                      temp=eeprom_last>eeprom_grid?eeprom_grid:eeprom_last;
  22   2                      I2CWrite (&I2c,adr,temp-adr);
  23   2              }
  24   1              else{
  25   2                      Opsgp.eeprom_write_over=1;/*写操作完毕*/
  26   2                      Opsgp.eeprom_read_ok=1;/*可以进行读操作了*/
  27   2                      Opsgp.dealing=0;
  28   2                      Stop_I2c_Timer();       //Cnt Stop
  29   2              }
  30   1      }
*** WARNING C280 IN LINE 16 OF DRV_AT24C64.C: 'I2C_pt': unreferenced local variable
  31          void At24c64_Finish (I2Cdesc *I2C_pt){
  32   1              if(I2C_pt->operate==WRITE_BIT){//Call WriteAgain Wait for 5ms
  33   2                      Start_I2c_Timer(5000); //Modify the duration 5ms
  34   2                      I2C_pt->I2CTCHandler=At24c64_WriteAgain;
  35   2              }
  36   1              else{ //Read Finish Post Message
  37   2                      Opsgp.eeprom_read_over=1;/*读操作完毕*/
  38   2                      Opsgp.dealing=0;
  39   2                      Stop_I2c_Timer();       //Cnt Stop
  40   2              }
  41   1      }
  42          void no_handler_tc(I2Cdesc *I2C_pt) {
  43   1      }
*** WARNING C280 IN LINE 42 OF DRV_AT24C64.C: 'I2C_pt': unreferenced local variable
  44          void I2CError(I2Cdesc *I2C_pt) {
  45   1              I2C_pt->Error=1;
  46   1              if(I2c.operate==READ_BIT){
  47   2                      Opsgp.eeprom_read_over=2;
  48   2                      Opsgp.dealing=0;
  49   2                      Stop_I2c_Timer();       //Cnt Stop
  50   2              }
  51   1              else if(I2c.operate==WRITE_BIT){
  52   2                      Opsgp.eeprom_write_over=2;
  53   2                      Opsgp.dealing=0;
C51 COMPILER V7.06   DRV_AT24C64                                                           10/29/2006 14:34:14 PAGE 2   

  54   2                      Stop_I2c_Timer();       //Cnt Stop
  55   2              }
  56   1      
  57   1      }
  58          /****At24c64 EEProm Driver ***/
  59          void At24c64_Init(void){
  60   1              I2c.Timer_Gap_ms=5000; //Gap 5 ms for Write Biger Than Page
  61   1              I2C_lineOpen (&I2c,100);//100k clk
  62   1              I2c.I2cFinish=At24c64_Finish;
  63   1      }
  64          void At24c64_Read(unsigned char *buf,unsigned int adr,unsigned int len){
  65   1              I2c.deviceAddress=DEVICE_AT24C64;
  66   1              I2c.RxEnd=buf;  
  67   1              I2CRead (&I2c,adr,len);
  68   1      }
  69          void At24c64_Write(unsigned char *buf,unsigned int adr,unsigned int len){
  70   1              unsigned int temp;
  71   1              eeprom_last=adr+len;    
  72   1              temp=adr/EEPROM_PAGE_LEN;
  73   1              eeprom_grid=(temp+1)*EEPROM_PAGE_LEN;
  74   1              temp=eeprom_last>eeprom_grid?eeprom_grid:eeprom_last;
  75   1      
  76   1              I2c.deviceAddress=DEVICE_AT24C64;
  77   1              I2c.TxEnd=buf;
  78   1              I2CWrite (&I2c,adr,temp-adr);
  79   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    545    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      4      29
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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