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

📄 24c512.lst

📁 通过车载终端采集GPS数据
💻 LST
字号:
C51 COMPILER V8.02   24C512                                                                09/22/2008 11:37:51 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 24C512
OBJECT MODULE PLACED IN .\output\bin\24c512.obj
COMPILER INVOKED BY: C:\Keil802\C51\BIN\C51.EXE eeprom\24c512.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gp
                    -s\;inter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\24c512.lst) OBJECT(.\output\bin\24c
                    -512.obj)

line level    source

   1          #include "i2c.h"
   2          
   3          #define READ_CONFIG     0xA1
   4          #define WRITE_CONFIG    0xA0
   5          /**************************************
   6          *配置程序的E2改为128K
   7          ***************************************/
   8          /*前64K字节*/
   9          #define READ_FIRMWARE_FRONT64K 0xA5
  10          #define WRITE_FIRMWARE_FRONT64K 0xA4
  11          /*后64K字节*/
  12          #define READ_FIRMWARE_BACK64K 0xA7
  13          #define WRITE_FIRMWARE_BACK64K 0xA6
  14          
  15          void c512_config_write(unsigned int addr, char *ptr, unsigned char len)
  16          {
  17   1          unsigned char tmp;
  18   1          unsigned char i;
  19   1          char *tmpPtr;
  20   1      
  21   1          i2c_wp(0);
  22   1      
  23   1          i2c_start();
  24   1          i2c_writeByte(WRITE_CONFIG);
  25   1          i2c_get_ack();
  26   1      
  27   1          tmp = addr>>8;
  28   1          i2c_writeByte(tmp);     /*send high address*/
  29   1          i2c_get_ack();
  30   1      
  31   1          tmp = addr;
  32   1          i2c_writeByte(tmp);     /*send low address*/
  33   1          i2c_get_ack();                                                                                                        
  34   1      
  35   1          tmpPtr = ptr;
  36   1          for(i=0; i<len; i++)
  37   1          {
  38   2              tmp = *tmpPtr ++;
  39   2              
  40   2              i2c_writeByte(tmp);
  41   2              i2c_get_ack();
  42   2          }
  43   1      
  44   1          i2c_stop();
  45   1      
  46   1          i2c_wp(1);
  47   1      }
  48          
  49          void c512_config_read(unsigned int addr, char *ptr, unsigned char len)
  50          {
  51   1          unsigned char tmp;
  52   1          unsigned char i;
  53   1          char *tmpPtr;
C51 COMPILER V8.02   24C512                                                                09/22/2008 11:37:51 PAGE 2   

  54   1      
  55   1          i2c_wp(1);
  56   1      
  57   1          i2c_start();    
  58   1          i2c_writeByte(WRITE_CONFIG);   
  59   1          i2c_get_ack();
  60   1      
  61   1          tmp = addr>>8;
  62   1          i2c_writeByte(tmp);     /*send high address*/
  63   1          i2c_get_ack();
  64   1      
  65   1          tmp = addr;
  66   1          i2c_writeByte(tmp);     /*send low address*/
  67   1          i2c_get_ack();
  68   1      
  69   1          i2c_start();
  70   1          i2c_writeByte(READ_CONFIG);
  71   1          i2c_get_ack();
  72   1      
  73   1          tmpPtr = ptr;
  74   1          for(i=0; i<len; i++)
  75   1          {
  76   2              tmp = i2c_readByte();
  77   2              *tmpPtr ++ = tmp;
  78   2      
  79   2              if( i != (len-1) )
  80   2                  i2c_send_ack();
  81   2      
  82   2          }
  83   1      
  84   1          i2c_stop();
  85   1      }
  86          
  87          /****************************************************
  88          *flag:0 前64K,1 后64K//in
  89          ****************************************************/
  90          void c512_firmware_write(unsigned char flag, unsigned int addr, char *ptr, unsigned char len)
  91          {
  92   1          unsigned char tmp;
  93   1          unsigned char i;
  94   1          char *tmpPtr;
  95   1      
  96   1          i2c_wp(0);
  97   1      
  98   1          i2c_start();
  99   1          if (0 == flag)
 100   1              i2c_writeByte(WRITE_FIRMWARE_FRONT64K);
 101   1          else
 102   1              i2c_writeByte(WRITE_FIRMWARE_BACK64K);
 103   1          i2c_get_ack();
 104   1      
 105   1          tmp = addr>>8;
 106   1          i2c_writeByte(tmp);     /*send high address*/
 107   1          i2c_get_ack();
 108   1      
 109   1          tmp = addr;
 110   1          i2c_writeByte(tmp);     /*send low address*/
 111   1          i2c_get_ack();
 112   1      
 113   1          tmpPtr = ptr;
 114   1          for(i=0; i<len; i++)
 115   1          {
C51 COMPILER V8.02   24C512                                                                09/22/2008 11:37:51 PAGE 3   

 116   2              tmp = *tmpPtr ++;
 117   2              
 118   2              i2c_writeByte(tmp);
 119   2              i2c_get_ack();
 120   2          }
 121   1      
 122   1          i2c_stop();
 123   1      
 124   1          i2c_wp(1);
 125   1      }
 126          
 127          void c512_firmware_read(unsigned char flag, unsigned int addr, char *ptr, unsigned char len)
 128          {
 129   1          unsigned char tmp;
 130   1          unsigned char i;
 131   1          char *tmpPtr;
 132   1      
 133   1          i2c_wp(1);
 134   1      
 135   1          i2c_start();    
 136   1          if (0 == flag)
 137   1              i2c_writeByte(WRITE_FIRMWARE_FRONT64K);
 138   1          else
 139   1              i2c_writeByte(WRITE_FIRMWARE_BACK64K);   
 140   1          i2c_get_ack();
 141   1      
 142   1          tmp = addr>>8;
 143   1          i2c_writeByte(tmp);     /*send high address*/
 144   1          i2c_get_ack();
 145   1      
 146   1          tmp = addr;
 147   1          i2c_writeByte(tmp);     /*send low address*/
 148   1          i2c_get_ack();
 149   1      
 150   1          i2c_start();
 151   1          if (0 == flag)
 152   1              i2c_writeByte(READ_FIRMWARE_FRONT64K);
 153   1          else
 154   1              i2c_writeByte(READ_FIRMWARE_BACK64K);
 155   1          i2c_get_ack();
 156   1      
 157   1          tmpPtr = ptr;
 158   1          for(i=0; i<len; i++)
 159   1          {
 160   2              tmp = i2c_readByte();
 161   2              *tmpPtr ++ = tmp;
 162   2      
 163   2              if( i != (len-1) )
 164   2                  i2c_send_ack();
 165   2      
 166   2          }
 167   1      
 168   1          i2c_stop();
 169   1      }
 170          
 171          
 172          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    670    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V8.02   24C512                                                                09/22/2008 11:37:51 PAGE 4   

   XDATA SIZE       =   ----      46
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -