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

📄 at2402.lst

📁 基于C51实现多功能钟,一键多功能,友好的液晶显示,人机界面,同时能播放音乐.绝对原创!
💻 LST
字号:
C51 COMPILER V8.02   AT2402                                                                01/22/2008 14:37:12 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE AT2402
OBJECT MODULE PLACED IN AT2402.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE AT2402.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /* Name:AT24C02*/ 
   2              #include "reg52.h"
   3              #include "at2402.h"
   4             // #include "common.h"
   5            
   6             
   7          
   8          /********** Function Definition  ************/ 
   9          
  10              void DELAY0(unsigned int t) 
  11              { 
  12   1              while(t!=0) 
  13   1                  t--; 
  14   1          } 
  15          
  16              void I2C_Start(void) 
  17              { 
  18   1            
  19   1              SDA=1; 
  20   1              SCL=1; 
  21   1              DELAY0(DELAY_TIME); 
  22   1              SDA=0; 
  23   1              DELAY0(DELAY_TIME); 
  24   1              SCL=0; 
  25   1              DELAY0(DELAY_TIME); 
  26   1          } 
  27          
  28              void I2C_Stop(void) 
  29              { 
  30   1              /*I2C,SCL,SDA*/ 
  31   1              SDA=0; 
  32   1              SCL=1; 
  33   1              DELAY0(DELAY_TIME); 
  34   1              SDA=1; 
  35   1              DELAY0(DELAY_TIME); 
  36   1              SCL=0; 
  37   1              DELAY0(DELAY_TIME); 
  38   1          } 
  39          
  40              void SEND_0(void)   /* SEND ACK */ 
  41              { 
  42   1          
  43   1              SDA=0; 
  44   1              SCL=1; 
  45   1              DELAY0(DELAY_TIME); 
  46   1              SCL=0; 
  47   1              DELAY0(DELAY_TIME); 
  48   1          } 
  49          
  50              void SEND_1(void) 
  51              { 
  52   1         
  53   1              SDA=1; 
  54   1              SCL=1; 
  55   1              DELAY0(DELAY_TIME); 
C51 COMPILER V8.02   AT2402                                                                01/22/2008 14:37:12 PAGE 2   

  56   1              SCL=0; 
  57   1              DELAY0(DELAY_TIME); 
  58   1          } 
  59          
  60              bit Check_Acknowledge(void) 
  61              { 
  62   1            
  63   1              SDA=1; 
  64   1              SCL=1; 
  65   1              DELAY0(DELAY_TIME/2); 
  66   1              F0=SDA; 
  67   1              DELAY0(DELAY_TIME/2); 
  68   1              SCL=0; 
  69   1              DELAY0(DELAY_TIME); 
  70   1              if(F0==1) 
  71   1                  return FALSE; 
  72   1              return TRUE; 
  73   1          } 
  74          
  75              void WriteI2CByte(char b)reentrant 
  76              { 
  77   1             
  78   1              char i; 
  79   1              for(i=0;i<8;i++) 
  80   1                  if((b<<i)&0x80) SEND_1(); 
  81   1                  else 
  82   1                      SEND_0(); 
  83   1          } 
  84          
  85           
  86          
  87              char ReadI2CByte(void)reentrant 
  88              { 
  89   1             
  90   1              char b=0,i; 
  91   1              for(i=0;i<8;i++) 
  92   1              { 
  93   2                  SDA=1;   
  94   2                  SCL=1;    
  95   2                  DELAY0(10); 
  96   2                  F0=SDA; 
  97   2                  DELAY0(10); 
  98   2                  SCL=0; 
  99   2                  if(F0==1) 
 100   2                      { 
 101   3                          b=b<<1; 
 102   3                          b=b|0x01; 
 103   3                       } 
 104   2                  else 
 105   2                      b=b<<1; 
 106   2              } 
 107   1              return b; 
 108   1          } 
 109          
 110          
 111          /**********24c0**********/ 
 112          void Write_One_Byte(char addr,char thedata) 
 113          { 
 114   1                bit acktemp=1; 
 115   1                /*write a byte to mem*/ 
 116   1                I2C_Start(); 
 117   1                WriteI2CByte(0xa0); // 0xa0
C51 COMPILER V8.02   AT2402                                                                01/22/2008 14:37:12 PAGE 3   

 118   1                acktemp=Check_Acknowledge(); 
 119   1                WriteI2CByte(addr);/*address*/ 
 120   1                acktemp=Check_Acknowledge(); 
 121   1                WriteI2CByte(thedata);/*thedata*/ 
 122   1                acktemp=Check_Acknowledge(); 
 123   1                I2C_Stop(); 
 124   1      
 125   1      } 
 126          /*
 127          void Write_A_Page(char *buffer,char addr) 
 128          { 
 129                    bit acktemp=1; 
 130                  //  bit wrtmp; 
 131                    int i; 
 132                    //write a page to at24c02 
 133                    I2C_Start(); 
 134                    WriteI2CByte(0xa0);    //0xa0
 135                    acktemp=Check_Acknowledge(); 
 136                    WriteI2CByte(addr);   //address 
 137                    acktemp=Check_Acknowledge(); 
 138                    for(i=0;i<7;i++) 
 139                    { 
 140                      WriteI2CByte(buffer[i]); 
 141                      if(!Check_Acknowledge()) 
 142                          { 
 143                              I2C_Stop(); 
 144                          } 
 145                     } 
 146                    I2C_Stop(); 
 147          }       
 148           */
 149          
 150          char Read_One_Byte(char addr) 
 151          {         bit acktemp=1; 
 152   1                char mydata; 
 153   1                 /*read a byte from mem*/ 
 154   1                I2C_Start(); 
 155   1                WriteI2CByte(0xa0); //0xa0
 156   1                acktemp=Check_Acknowledge(); 
 157   1                WriteI2CByte(addr);/*address*/ 
 158   1                acktemp=Check_Acknowledge(); 
 159   1                I2C_Start(); 
 160   1                WriteI2CByte(0xa1);  //0xa1
 161   1                acktemp=Check_Acknowledge(); 
 162   1      
 163   1      
 164   1                mydata=ReadI2CByte(); 
 165   1                acktemp=Check_Acknowledge(); 
 166   1                I2C_Stop(); 
 167   1                return mydata; 
 168   1                
 169   1      } 
 170          /*
 171          void Read_N_Bytes(char *buffer,char n,char addr) 
 172          { 
 173                    bit acktemp=1; 
 174          
 175                    int i=0; 
 176                     //read 8 bytes from mem 
 177                    I2C_Start(); 
 178                    WriteI2CByte(0xa0); //0xa0
 179                    acktemp=Check_Acknowledge(); 
C51 COMPILER V8.02   AT2402                                                                01/22/2008 14:37:12 PAGE 4   

 180                    WriteI2CByte(addr);//address 
 181                    acktemp=Check_Acknowledge(); 
 182                    I2C_Start(); 
 183                    WriteI2CByte(0xa1); //0xa1
 184          
 185                    acktemp=Check_Acknowledge(); 
 186          
 187           
 188          
 189          
 190                    for(i=0;i<n;i++)
 191                     { 
 192                          buffer[i]=ReadI2CByte(); 
 193                          if(i!=n-1) 
 194                              SEND_0(); 
 195                          else 
 196                              SEND_1();   
 197                    } 
 198          
 199             I2C_Stop(); 
 200          
 201          } 
 202          
 203          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    365    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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