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

📄 24lc32.lst

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


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

stmt level    source

   1          #include "24LC32.h"
   2          #include "C8051f.h"
   3          
   4          #define WriteDeviceAddress   0xa2
   5          #define ReadDeviceAddress     0xa3
   6          
   7          sbit E2P_SCL = P2^3;
   8          sbit E2P_SDA = P2^2;
   9          sbit E2P_DOG = P3^7;
  10          
  11          static void AT32DelayMs(unsigned int number) 
  12          {
  13   1              unsigned char temp;
  14   1              for( ; number != 0; number--,E2P_DOG =! E2P_DOG)
  15   1              {
  16   2                      for(temp = 112; temp != 0; temp--)
  17   2                      {
  18   3                      }
  19   2              }
  20   1      }
  21          
  22          
  23          static void AT32Start()
  24          {
  25   1              E2P_SDA = 1;
  26   1              E2P_SCL = 1;
  27   1              E2P_SDA = 0;
  28   1              E2P_SCL = 0;
  29   1      }
  30          
  31          /***************************************************************************/
  32          static void AT32Stop()
  33          {
  34   1              E2P_SCL = 0;
  35   1              E2P_SDA = 0;
  36   1              E2P_SCL = 1;
  37   1              E2P_SDA = 1;
  38   1      }
  39          
  40          /***************************************************************************/
  41          static void AT32Ack()
  42          {
  43   1              E2P_SDA = 0;
  44   1              E2P_SCL = 1;
  45   1              E2P_SCL = 0;
  46   1              E2P_SDA = 1;
  47   1      }
  48          
  49          /***************************************************************************/
  50          static void AT32NoAck()
  51          {
  52   1              E2P_SDA = 1;
  53   1              E2P_SCL = 1;
  54   1              E2P_SCL = 0;
  55   1      }
C51 COMPILER V7.06   24LC32                                                                01/02/2000 11:14:26 PAGE 2   

  56          
  57          /***************************************************************************/
  58          static bit AT32TestAck()
  59          {
  60   1              bit ErrorBit;
  61   1      
  62   1              E2P_SDA = 1;
  63   1              E2P_SCL = 1;
  64   1              ErrorBit = E2P_SDA;
  65   1              E2P_SCL = 0;
  66   1              return(ErrorBit);
  67   1      }
  68          
  69          /***************************************************************************/
  70          static void AT32Write8Bit(unsigned char input)
  71          {
  72   1              unsigned char temp;
  73   1      
  74   1              for(temp=8;temp!=0;temp--)
  75   1              {
  76   2                      E2P_SDA = (bit)(input&0x80);
  77   2                      E2P_SCL = 1;
  78   2                      E2P_SCL = 0;
  79   2                      input = input<<1;
  80   2              }
  81   1      }
  82          
  83          static unsigned char AT32Read8Bit()
  84          {
  85   1              unsigned char temp;
  86   1              unsigned char rbyte = 0;
  87   1      
  88   1              for(temp = 8; temp != 0; temp--)
  89   1              {
  90   2                      E2P_SCL = 1;
  91   2                      rbyte = rbyte << 1;
  92   2                      rbyte = rbyte|((unsigned char)(E2P_SDA));
  93   2                      E2P_SCL = 0;
  94   2              }
  95   1              return(rbyte);
  96   1      }
  97          
  98          static void Write24c32(unsigned char *Wdata,unsigned int RomAddress,unsigned char number)
  99          {
 100   1              unsigned char AddrH;
 101   1              unsigned char AddrL;
 102   1      
 103   1              AddrL = (unsigned char)(RomAddress & 0x00ff);
 104   1              AddrH = (unsigned char)((RomAddress & 0x0f00) >> 8);
 105   1      
 106   1              AT32Start();
 107   1              AT32Write8Bit(WriteDeviceAddress);
 108   1              AT32TestAck();
 109   1              AT32Write8Bit(AddrH);
 110   1              AT32TestAck();
 111   1              AT32Write8Bit(AddrL);
 112   1              AT32TestAck();
 113   1              for( ; number != 0; number--)
 114   1              {
 115   2                      AT32Write8Bit(*Wdata);
 116   2                      AT32TestAck();
 117   2                      Wdata++;
C51 COMPILER V7.06   24LC32                                                                01/02/2000 11:14:26 PAGE 3   

 118   2              }
 119   1              AT32Stop();
 120   1              AT32DelayMs(10);
 121   1      }
 122          
 123          static void Read24c32(unsigned char *RamAddress,unsigned int RomAddress,unsigned char bytes)
 124          {
 125   1              unsigned char AddrH;
 126   1              unsigned char AddrL;
 127   1      
 128   1              AddrL = (unsigned char)(RomAddress & 0x00ff);
 129   1              AddrH = (unsigned char)((RomAddress & 0x0f00) >> 8);
 130   1      
 131   1              AT32Start();
 132   1              AT32Write8Bit(WriteDeviceAddress);
 133   1              AT32TestAck();
 134   1              AT32Write8Bit(AddrH);
 135   1              AT32TestAck();
 136   1              AT32Write8Bit(AddrL);
 137   1              AT32TestAck();
 138   1              AT32Start();
 139   1              AT32Write8Bit(ReadDeviceAddress);
 140   1              AT32TestAck();
 141   1              while(bytes != 1)
 142   1              {
 143   2                      *RamAddress = AT32Read8Bit();
 144   2                      AT32Ack();
 145   2                      RamAddress++;
 146   2                      bytes--;
 147   2              }
 148   1              *RamAddress = AT32Read8Bit();
 149   1              AT32NoAck();
 150   1              AT32Stop();
 151   1      }
 152          
 153          void E2PWrite32(unsigned int Addr,unsigned char Val)
 154          {
 155   1              Write24c32(&Val,Addr,1);
 156   1      }
 157          
 158          unsigned char E2PRead32(unsigned int Addr)
 159          {
 160   1              unsigned char Temp;
 161   1              Read24c32(&Temp,Addr,1);
 162   1              return(Temp);
 163   1      }


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


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

⌨️ 快捷键说明

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