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

📄 24c04.lst

📁 应用电子密码锁
💻 LST
字号:
C51 COMPILER V7.50   24C04                                                                 05/03/2009 21:32:15 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 24C04
OBJECT MODULE PLACED IN 24c04.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c04.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "intrins.h"
   2          #include "reg51.h"
   3          
   4          #define  WriteDeviceAddress 0xa0        //写驱动地址指令
   5          #define  ReadDeviceAddress 0xa1         //读驱动地址指令
   6          
   7          sbit AT24C02_SCL = 0xB6;
   8          sbit AT24C02_SDA = 0xB7;
   9          
  10          /*-------------------------------------------------
  11          功能100uS延时子程序
  12          -------------------------------------------------*/
  13          void Delay_xuS(unsigned int x)
  14          {
  15   1          unsigned int i,j;
  16   1          for( i =0;i < x;i++ )
  17   1          {
  18   2              for( j =0;j<50;j++ );
  19   2          }
  20   1      }
  21          
  22          /*-------------------------------------------------
  23          功能:1MS延时子程序
  24          -------------------------------------------------*/
  25          void Delay_xMs(unsigned int x)
  26          {   
  27   1          unsigned int i,j;
  28   1          for( i =0;i < x;i++ )
  29   1          {
  30   2              for( j =0;j<100;j++ );
  31   2          }
  32   1      }
  33          
  34          
  35          
  36          /*-------------------------------------------------------------
  37          功能:发起始信号
  38          ------------------------------------------------------------*/
  39          void Start_Cond()
  40          {
  41   1              AT24C02_SCL = 0;
  42   1          _nop_();
  43   1              AT24C02_SDA = 1;
  44   1          _nop_();
  45   1              AT24C02_SCL = 1;
  46   1          _nop_();
  47   1              AT24C02_SDA = 0;
  48   1              _nop_();
  49   1      }
  50          
  51          /*-------------------------------------------------------------
  52          功能:发停止信号
  53          ------------------------------------------------------------*/
  54          void Stop_Cond()
  55          {
C51 COMPILER V7.50   24C04                                                                 05/03/2009 21:32:15 PAGE 2   

  56   1              AT24C02_SCL = 0;
  57   1              _nop_();
  58   1              AT24C02_SDA = 0;
  59   1              _nop_();
  60   1              AT24C02_SCL = 1;
  61   1              _nop_();
  62   1              AT24C02_SDA = 1;
  63   1              _nop_();
  64   1      }
  65          
  66          /*-------------------------------------------------------------
  67          功能:发确认信号
  68          ------------------------------------------------------------*/
  69          void Ack()
  70          {
  71   1              AT24C02_SCL = 0;
  72   1              _nop_();
  73   1              AT24C02_SDA = 0;
  74   1              AT24C02_SCL = 1;
  75   1              _nop_();
  76   1              AT24C02_SCL = 0;
  77   1              _nop_();
  78   1              AT24C02_SDA = 1;
  79   1      }
  80          
  81          /*-------------------------------------------------------------
  82          功能:发无确认信号
  83          ------------------------------------------------------------*/
  84          void NoAck()
  85          {
  86   1              AT24C02_SCL = 0;
  87   1              _nop_();
  88   1              AT24C02_SDA = 1;
  89   1              _nop_();
  90   1              AT24C02_SCL = 1;
  91   1              _nop_();
  92   1              AT24C02_SCL = 0;
  93   1              _nop_();
  94   1      }
  95          
  96          /*-------------------------------------------------------------
  97          功能:写一个字节数据
  98          ------------------------------------------------------------*/
  99          bit Write8Bit(unsigned char input)
 100          {
 101   1              unsigned char i;
 102   1              for (i=0;i<8;i++)
 103   1              {       
 104   2                      AT24C02_SCL = 0;
 105   2                      input <<= 1;
 106   2                      AT24C02_SDA = CY;
 107   2                      AT24C02_SCL = 1;
 108   2              
 109   2              }
 110   1              AT24C02_SCL = 0;
 111   1          _nop_();
 112   1              AT24C02_SDA = 1;
 113   1              AT24C02_SCL = 1;
 114   1          _nop_();
 115   1              CY = AT24C02_SDA;
 116   1              return(CY) ;
 117   1      }
C51 COMPILER V7.50   24C04                                                                 05/03/2009 21:32:15 PAGE 3   

 118          
 119          /*-------------------------------------------------------------
 120          功能:读一个字节数据
 121          ------------------------------------------------------------*/
 122          unsigned char Read8Bit()
 123           {
 124   1              unsigned char temp,rbyte=0;
 125   1              for (temp = 8;temp != 0;temp--)
 126   1              {
 127   2                      AT24C02_SCL = 0;
 128   2                      _nop_();
 129   2                      rbyte = (rbyte << 1) | AT24C02_SDA;
 130   2                      AT24C02_SCL = 1;
 131   2              _nop_();
 132   2              }
 133   1              return rbyte;
 134   1      }
 135          
 136          /*-------------------------------------------------------------
 137          功能:从EEPROM中给定一个地址连续读NLEN个字节数据存放在以指针
 138          nContent开头的往下内容。
 139          ------------------------------------------------------------*/
 140          bit Read_Flash ( unsigned char *nContent, unsigned char nAddr, unsigned char nLen )
 141          {
 142   1              unsigned char Addr;
 143   1              Addr = nAddr;
 144   1              Start_Cond();                           //写开始信号
 145   1              Write8Bit(WriteDeviceAddress);          //写驱动地址
 146   1              Write8Bit(Addr);                        //写从EEPROM中读的开始地址
 147   1              Start_Cond();                           //写开始信号
 148   1              Write8Bit(ReadDeviceAddress);           //写读数据指令
 149   1              while(--nLen)
 150   1              {
 151   2      
 152   2                      *nContent=Read8Bit();           //读出内容
 153   2                      nContent++;                     //指针加1
 154   2                      Ack();                          //发确认信号
 155   2              }
 156   1              *nContent=Read8Bit();                   //读一字节
 157   1              NoAck();                                //没有确认信号
 158   1              Stop_Cond();                            //发停止信号
 159   1              return(0);                              //返回
 160   1      }
 161          
 162          /*-------------------------------------------------------------
 163          功能:初始化EEPROM子程序内容为FF
 164          ------------------------------------------------------------*/
 165          bit Init_Flash ( unsigned int nPage ) //    8 Byte/1Page init 0xFF 
 166          {
 167   1              unsigned char nLen;
 168   1              unsigned char Addr;
 169   1              nLen=8;
 170   1          Addr=8 *nPage;
 171   1              Start_Cond();
 172   1          Write8Bit(WriteDeviceAddress);
 173   1              Write8Bit(Addr);
 174   1              for(;nLen!=0;nLen--)
 175   1          {
 176   2                     if(Write8Bit(0xff)) break;  //if Write8Bit() Return 1 Write Flase
 177   2              }
 178   1              Stop_Cond();
 179   1          return(CY);
C51 COMPILER V7.50   24C04                                                                 05/03/2009 21:32:15 PAGE 4   

 180   1      }
 181          
 182          /*-------------------------------------------------------------
 183          功能:从EEPROM中给定一个地址连续写NLEN个字节数据存放在以指针
 184          nContent开头的往下内容。
 185          ------------------------------------------------------------*/
 186          bit Write_Flash ( unsigned char *nContent, unsigned char nAddr,unsigned char nLen)
 187          {
 188   1              unsigned char i,temp;
 189   1              unsigned char Addr;
 190   1              Addr = nAddr;
 191   1              Start_Cond();                                   //写开始信号
 192   1              Write8Bit(WriteDeviceAddress);                  //写驱动地址
 193   1              Write8Bit(Addr);                                //写从EEPROM中写的开始地址      
 194   1              for(i = 0;i < nLen;i++)
 195   1              {
 196   2                      if(Addr%8==0)   //每页8字节             //换页
 197   2                      {
 198   3                              Stop_Cond();
 199   3                  _nop_();
 200   3                              Start_Cond();
 201   3                              Write8Bit(WriteDeviceAddress);
 202   3                              Write8Bit(Addr);
 203   3                      }
 204   2                      temp = *nContent;
 205   2                      if(Write8Bit(temp)) break;  //CY
 206   2                      nContent++;
 207   2                      Addr++;
 208   2              }
 209   1              Stop_Cond();                                    //发停止信号
 210   1              return(CY);
 211   1      }


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