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

📄 24c02.lst

📁 WAVE6000 编写的AT24C02驱动 用于掉电数据保护
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  24C02                                                                  07/23/2005 19:26:04 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN E:\C51\P1\24C02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\C51\P1\24C02.C DB SB OE

stmt level    source

   1          #include <reg51.h>
   2          
   3          // 对24C02的读、写
   4           void DelayMs(unsigned int);
   5           void delay1ms();
   6           void delay(char k);
   7           void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);
   8           void Write24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);
   9           void Start();
  10           void Stop();
  11           void Ack();
  12           void NoAck();
  13           bit TestAck();
  14           bit Write8Bit(unsigned char input);
  15           unsigned char Read8Bit();
  16          /***************************************************************************/
  17          #define WriteDeviceAddress 0xae
  18          #define ReadDviceAddress 0xaf
  19          
  20          /***************************************************************************/
  21          sbit SCL=P3^4;
  22          sbit SDA=P3^5;
  23          sbit  tt=ACC^5;
  24          //sbit DOG=P3^7;
  25          
  26           /***************************************************************************/
  27          
  28           void main()
  29           {
  30   1         int i;
  31   1         unsigned char  wdata[10],rdata[10],temp,temp1;
  32   1         for( i=0;i<10;i++)
  33   1         {
  34   2      
  35   2            wdata[i]=i+1;
  36   2          }
  37   1      
  38   1         Write24c02(wdata,0x00,10);
  39   1      
  40   1         Read24c02(rdata,0x00,10);
  41   1         temp=rdata[0];
  42   1         temp1=temp;
  43   1         temp=rdata[1];
  44   1         temp=rdata[2];
  45   1         temp=rdata[3];
  46   1         temp=rdata[4];
  47   1         while(1)
  48   1         {
  49   2         temp =10;
  50   2         }
  51   1       }
  52          
  53           /***************************************************************************/
  54          void DelayMs(unsigned int number) {
  55   1          unsigned  int i;
C51 COMPILER V6.12  24C02                                                                  07/23/2005 19:26:04 PAGE 2   

  56   1         for( i=0;i< number;i++)
  57   1          delay1ms();
  58   1      
  59   1      }
  60          
  61          /***************************************************************************/
  62          void Start() {
  63   1      
  64   1       SCL=0;
  65   1      SDA=1;
  66   1      delay(50);
  67   1      
  68   1      tt=1;
  69   1      SCL=1;
  70   1      SCL=tt;
  71   1      delay(50);
  72   1      SDA=0;
  73   1      delay(50);
  74   1      SCL=0;
  75   1      //delay(50);
  76   1      }
  77          
  78          /***************************************************************************/
  79          void Stop() {
  80   1      
  81   1      SCL=0;
  82   1      //delay(50);
  83   1      SDA=0;
  84   1      delay(50);
  85   1      tt=1;
  86   1      SCL=tt;
  87   1      SCL=tt;
  88   1      delay(50);
  89   1      SDA=1;
  90   1      delay(50);
  91   1      }
  92          
  93          /***************************************************************************/
  94          void Ack() {
  95   1      tt=0;
  96   1      SDA=tt;
  97   1      //delay(50);
  98   1      tt=1;
  99   1      SCL=1;
 100   1      
 101   1      delay(50);
 102   1      SCL=0;
 103   1      //delay(50);
 104   1      //SDA=1;
 105   1      }
 106          
 107          /***************************************************************************/
 108          void NoAck() {
 109   1      SDA=1;
 110   1      delay(50);
 111   1      SCL=SDA;
 112   1      delay(50);
 113   1      SCL=0;
 114   1      delay(50);
 115   1      }
 116          
 117          /***************************************************************************/
C51 COMPILER V6.12  24C02                                                                  07/23/2005 19:26:04 PAGE 3   

 118          bit TestAck() {
 119   1         bit ErrorBit;
 120   1          SDA=1;
 121   1          SCL=1;
 122   1          ErrorBit=SDA;
 123   1          SCL=0;
 124   1          return(ErrorBit);
 125   1      }
 126          
 127          /***************************************************************************/
 128          bit Write8Bit(unsigned char input) {
 129   1      unsigned char temp;
 130   1      for(temp=0;temp<8;temp++) {
 131   2      
 132   2      //SDA=(bit)(input&0x80);
 133   2      if( input&0x80)
 134   2        SDA=1;
 135   2      else SDA=0;
 136   2      SCL=1;
 137   2      delay(50);
 138   2      SCL=0;
 139   2      input=0xc0;
 140   2      input=input<<1;
 141   2      }
 142   1      }
*** WARNING C173 IN LINE 142 OF E:\C51\P1\24C02.C: missing return-expression
 143          
 144          /***************************************************************************/
 145          void Write24c02(unsigned char *Wdata,unsigned char RomAddress,unsigned char number) {
 146   1        int  k;
 147   1        k=0;
 148   1        Start();
 149   1        Write8Bit(WriteDeviceAddress);
 150   1         tt=1;
 151   1        tt=TestAck();
 152   1      Write8Bit(RomAddress);
 153   1        tt=TestAck();
 154   1      for(;number!=0;number--) {
 155   2        Write8Bit(*Wdata);
 156   2        tt=TestAck();
 157   2        Wdata++;
 158   2        }
 159   1      Stop();

⌨️ 快捷键说明

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