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

📄 rw24c02.lst

📁 改程序详细介绍了AT24C02的读写时序
💻 LST
字号:
C51 COMPILER V7.20   RW24C02                                                               04/01/2005 12:14:12 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE RW24C02
OBJECT MODULE PLACED IN rw24c02.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE rw24c02.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************
   2          AT24c02的读写子程序
   3          作者:郑州远博科技     王兴民 
   4          0371-66949037  0371-67256036   13949105551
   5          需要参照24C02的时序图
   6          ****************************************************************/
   7          #include <config.h>
   8          
   9          //AT24C02 接口定义
  10          #define SDA24C02  P3_5
  11          #define SDL24C02  P3_4
  12          #define WriteDeviceAddress 0xa0 // 24c02写命令字
  13          #define ReadDviceAddress 0xa1   // 24c02读命令字
  14          
  15          /************************************************************
  16          24c02演示程序,读这段程序需要参考24C02的读写时序图,配套光盘有
  17          /*************************************************************/
  18          void Start() {
  19   1       SDA24C02=1;
  20   1       SDL24C02=1;
  21   1       SDA24C02=0;
  22   1       SDL24C02=0;
  23   1      }
  24          
  25          /***************************************************************************/
  26          void Stop() {
  27   1       SDL24C02=0;
  28   1       SDA24C02=0;
  29   1       SDL24C02=1;
  30   1       SDA24C02=1;
  31   1      }
  32          
  33          /***************************************************************************/
  34          void Ack() {
  35   1       SDA24C02=0;
  36   1       SDL24C02=1;
  37   1       SDL24C02=0;
  38   1       SDA24C02=1;
  39   1      }
  40          
  41          /***************************************************************************/
  42          void NoAck() {
  43   1       SDA24C02=1;
  44   1       SDL24C02=1;
  45   1       SDL24C02=0;
  46   1      }
  47          
  48          /***************************************************************************/
  49          bit TestAck() {
  50   1       bit ErrorBit;
  51   1       SDA24C02=1;
  52   1       SDL24C02=1;
  53   1       ErrorBit=SDA24C02;
  54   1       SDL24C02=0;
  55   1       return(ErrorBit);
C51 COMPILER V7.20   RW24C02                                                               04/01/2005 12:14:12 PAGE 2   

  56   1      }
  57          
  58          /***************************************************************************/
  59          void Write8Bit(Uchar input) {
  60   1       Uchar temp;
  61   1       for(temp=8;temp!=0;temp--) {
  62   2        SDA24C02=(bit)(input&0x80);
  63   2        SDL24C02=1;
  64   2        SDL24C02=0;
  65   2        input=input<<1;
  66   2       }
  67   1      }
  68          /***************************************************************************/
  69          void Write24c02(Uchar *Wdata,Uchar RomAddress,Uchar number) {
  70   1       Start();
  71   1       Write8Bit(WriteDeviceAddress);
  72   1       TestAck();
  73   1       Write8Bit(RomAddress);
  74   1       TestAck();
  75   1       for(;number!=0;number--) {
  76   2        Write8Bit(*Wdata);
  77   2        TestAck();
  78   2        Wdata++;
  79   2       }
  80   1       Stop();
  81   1       Delayms(10);
  82   1      }
  83          
  84          /***************************************************************************/
  85          Uchar Read8Bit() {
  86   1      Uchar temp,rbyte=0;
  87   1       for(temp=8;temp!=0;temp--) {
  88   2        SDL24C02=1;
  89   2        rbyte=rbyte<<1;
  90   2        rbyte=rbyte|((Uchar)(SDA24C02));
  91   2        SDL24C02=0;
  92   2       }
  93   1       return(rbyte);
  94   1      }
  95          
  96          /***************************************************************************/
  97          void Read24c02(Uchar *RamAddress,Uchar RomAddress,Uchar bytes) {
  98   1      //unsigned char temp, rbyte;
  99   1       Start();
 100   1       Write8Bit(WriteDeviceAddress);
 101   1       TestAck();
 102   1       Write8Bit(RomAddress);
 103   1       TestAck();
 104   1       Start();
 105   1       Write8Bit(ReadDviceAddress);
 106   1       TestAck();
 107   1       while(bytes!=1) {
 108   2       *RamAddress=Read8Bit();
 109   2       Ack();
 110   2       RamAddress++;
 111   2       bytes--;        }
 112   1       *RamAddress=Read8Bit();
 113   1       NoAck();
 114   1       Stop();
 115   1      }


C51 COMPILER V7.20   RW24C02                                                               04/01/2005 12:14:12 PAGE 3   

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