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

📄 eeprom.lst

📁 C8051F120 _AD开发过程中的一些代码和文档
💻 LST
字号:
C51 COMPILER V7.06   EEPROM                                                                01/02/2000 11:14:26 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN EEPROM.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE EEPROM.c LARGE OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<intrins.h>
   2          #include "EEPROM.h"
   3          #include "C8051f.h"
   4          
   5          extern unsigned char EEPROMTime;
   6          
   7          sbit EEPROM_SDA = P2^2;
   8          sbit EEPROM_SCL = P2^3;
   9          
  10          sbit a0 = ACC^0;                 
  11          sbit a1 = ACC^1;
  12          sbit a2 = ACC^2;
  13          sbit a3 = ACC^3;
  14          sbit a4 = ACC^4;
  15          sbit a5 = ACC^5;
  16          sbit a6 = ACC^6;
  17          sbit a7 = ACC^7;
  18          
  19          void s24(void)                 //起始函数
  20          {
  21   1              EEPROM_SCL = 0;
  22   1              EEPROM_SDA = 0;
  23   1              _nop_();
  24   1          EEPROM_SCL = 1; 
  25   1          EEPROM_SDA = 1;
  26   1          _nop_();
  27   1          EEPROM_SDA = 0;
  28   1          _nop_();
  29   1          EEPROM_SCL = 0;
  30   1      }
  31          
  32          void p24(void)                 //停止函数
  33          {
  34   1              EEPROM_SCL = 0;
  35   1              EEPROM_SDA = 0;
  36   1              _nop_();
  37   1          EEPROM_SCL = 1;
  38   1          _nop_();
  39   1          EEPROM_SDA = 1;
  40   1              _nop_();
  41   1              EEPROM_SCL = 0;
  42   1              EEPROM_SDA = 0;
  43   1      }
  44          
  45          unsigned char rd24(void)                //从24c16读一字节数据
  46          {       
  47   1              ACC = 0x00;
  48   1              EEPROM_SDA = 0;
  49   1              EEPROM_SCL = 0;
  50   1              EEPROM_SCL = 1; a7 = EEPROM_SDA; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  51   1              EEPROM_SCL = 1; a6 = EEPROM_SDA; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  52   1              EEPROM_SCL = 1; a5 = EEPROM_SDA; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  53   1              EEPROM_SCL = 1; a4 = EEPROM_SDA; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  54   1              EEPROM_SCL = 1; a3 = EEPROM_SDA; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  55   1              EEPROM_SCL = 1; a2 = EEPROM_SDA; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
C51 COMPILER V7.06   EEPROM                                                                01/02/2000 11:14:26 PAGE 2   

  56   1              EEPROM_SCL = 1; a1 = EEPROM_SDA; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  57   1              EEPROM_SCL = 1; a0 = EEPROM_SDA; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  58   1              EEPROM_SDA = 0;
  59   1              EEPROM_SCL = 1; _nop_();_nop_();_nop_();_nop_();
  60   1              EEPROM_SCL = 0; //24c16的一位回答位。
  61   1              return(ACC);
  62   1      }
  63          
  64          void wd24(unsigned char dd)                     //向24c16写一字节数据
  65          {      
  66   1              ACC = dd;
  67   1              EEPROM_SDA = a7; EEPROM_SCL = 1; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  68   1              EEPROM_SDA = a6; EEPROM_SCL = 1; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  69   1              EEPROM_SDA = a5; EEPROM_SCL = 1; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  70   1              EEPROM_SDA = a4; EEPROM_SCL = 1; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  71   1              EEPROM_SDA = a3; EEPROM_SCL = 1; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  72   1              EEPROM_SDA = a2; EEPROM_SCL = 1; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  73   1              EEPROM_SDA = a1; EEPROM_SCL = 1; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  74   1              EEPROM_SDA = a0; EEPROM_SCL = 1; _nop_(); _nop_(); _nop_(); _nop_(); EEPROM_SCL = 0;
  75   1              EEPROM_SCL = 1;
  76   1              EEPROM_SCL = 0;
  77   1      }
  78          /*
  79          unsigned char EEPROM_Read(unsigned int address)
  80          {
  81                  unsigned char dd;
  82          
  83              s24();                                      
  84              wd24(0xa0);                                         
  85                  _nop_();_nop_();_nop_();_nop_(); 
  86                  EEPROM_SCL = 0;                                 
  87              wd24(address);                                      
  88              _nop_();_nop_();_nop_();_nop_();
  89              EEPROM_SCL = 0;
  90                  s24();                                          
  91              wd24(0xa1);                                 
  92              EEPROM_SCL = 0;
  93              dd = rd24();                                        
  94              p24();                              
  95              return(dd);
  96          }
  97          
  98          void EEPROM_Write(unsigned int address,unsigned char dd)
  99          {
 100                  s24();                  
 101              wd24(0xa0);            
 102              EEPROM_SCL = 0; 
 103              wd24(address);           
 104              EEPROM_SCL = 0;
 105              wd24(dd);               
 106              EEPROM_SCL = 0;
 107              p24();
 108          }
 109          */
 110          
 111          unsigned char EEPROM_Read(unsigned int address)
 112          {
 113   1              unsigned char dd;
 114   1      
 115   1              dd = ((address&0x7ff)/256) << 1;
 116   1              s24();
 117   1              wd24(0xa0|dd);
C51 COMPILER V7.06   EEPROM                                                                01/02/2000 11:14:26 PAGE 3   

 118   1              EEPROM_SCL = 0;
 119   1              wd24(address);
 120   1              EEPROM_SCL = 0;
 121   1              s24();
 122   1              wd24(0xa1|dd);
 123   1              EEPROM_SCL = 0;
 124   1              dd = rd24();
 125   1              p24();
 126   1              return(dd);
 127   1      }
 128          
 129          void EEPROM_Write(unsigned int address,unsigned char dd)
 130          {
 131   1              unsigned char ddd;
 132   1              ddd = ((address & 0x7ff)/256) << 1;
 133   1              s24();
 134   1              wd24(0xa0|ddd);
 135   1              EEPROM_SCL = 0;
 136   1              wd24(address);
 137   1              EEPROM_SCL = 0;
 138   1              wd24(dd);
 139   1              EEPROM_SCL = 0;
 140   1              p24();
 141   1              EEPROMTime = 0;     //time为定时器时间参考,time增加1代表1ms,如果没有用定时器,取消该行
 142   1              while (1) 
 143   1              {
 144   2                      s24();
 145   2                      wd24(0xa0|ddd);
 146   2                      EEPROM_SDA = 1;
 147   2                      if (EEPROM_SDA == 0) break;
 148   2                      if (EEPROMTime > 10) break; //此行防止由于eeprom器件损坏后的死循环
 149   2                      EEPROM_SCL = 0;
 150   2              }
 151   1      }
 152          
 153          
 154          
 155          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    477    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      8    ----
   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 + -