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

📄 at24c02.lst

📁 这是一个基于PROTUES工作平台
💻 LST
字号:
C51 COMPILER V7.06   AT24C02                                                               10/31/2007 15:44:27 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AT24C02
OBJECT MODULE PLACED IN AT24C02.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE AT24C02.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1           #include <reg52.h>
   2           #include<intrins.h>
   3           #define uchar unsigned char 
   4           #define uint unsigned int
   5           #define AddWr 0xa0           //器件地址选择及写标志
   6           #define AddRd 0xa1               //器件地址选择及读标志
   7          
   8           /*有关全局变量*/
   9           sbit Sda=P3^7;       //at24c08的SDA与P3.7相连
  10           sbit Scl=P3^6;       //at24c08的SCL与P3.6相连
  11           sbit LOAD  = P3^1;       //MAX7219的LOAD与P3.1相连
  12           sbit DIN = P3^0;         //MAX7219的DIN与P3.0相连
  13           sbit CLK = P3^2;         //MAX7219的CLK与P3.2相连
  14          
  15           void mDelay(uint t) //延时
  16           { uchar i;
  17   1         while(t--)
  18   1         {
  19   2         for(i=0;i<125;i++)
  20   2         {;}
  21   2         }
  22   1         }
  23             
  24          
  25           void Nop(void)           //空操作
  26           {
  27   1       _nop_();
  28   1       _nop_();
  29   1       _nop_();
  30   1       _nop_();
  31   1       }
  32          
  33          
  34          /*起始条件*/
  35          
  36           void Start(void)
  37           {
  38   1       Sda=1;
  39   1       Scl=1;
  40   1       Nop();
  41   1       Sda=0;
  42   1       Nop();
  43   1       }
  44          
  45          
  46           /*停止条件*/
  47          
  48           void Stop(void)
  49           {
  50   1       Sda=0;
  51   1       Scl=1;
  52   1       Nop();
  53   1       Sda=1;
  54   1       Nop();
  55   1       }
C51 COMPILER V7.06   AT24C02                                                               10/31/2007 15:44:27 PAGE 2   

  56          
  57           /*应答位*/
  58          
  59          void Ack(void)
  60          {
  61   1      Sda=0;
  62   1      Nop();
  63   1      Scl=1;
  64   1      Nop();
  65   1      Scl=0;
  66   1      }
  67          
  68          /*反向应答位*/
  69          
  70          void NoAck(void)
  71          {
  72   1       Sda=1;
  73   1       Nop();
  74   1       Scl=1;
  75   1       Nop();
  76   1       Scl=0;
  77   1       }
  78          
  79           /*发送数据子程序,Data为要求发送的数据*/
  80           void Send(uchar Data)
  81           {
  82   1         uchar BitCounter=8;
  83   1         uchar temp;
  84   1         do
  85   1         {
  86   2         temp=Data;
  87   2         Scl=0;
  88   2         Nop();
  89   2         if((temp&0x80)==0x80)
  90   2         Sda=1;
  91   2         else 
  92   2         Sda=0;
  93   2         Scl=1;
  94   2         temp=Data<<1;
  95   2         Data=temp;
  96   2         BitCounter--;
  97   2         }
  98   1         while(BitCounter);
  99   1         Scl=0;
 100   1         }
 101          
 102             /*读一字节的数据,并返回该字节值*/
 103             uchar Read(void)
 104             {
 105   1          uchar temp=0;
 106   1              uchar temp1=0;
 107   1              uchar BitCounter=8;
 108   1              Sda=1;
 109   1              do{
 110   2              Scl=0;
 111   2              Nop();
 112   2              Scl=1;
 113   2              Nop();
 114   2              if(Sda)
 115   2              temp=temp|0x01;
 116   2              else
 117   2              temp=temp&0xfe;
C51 COMPILER V7.06   AT24C02                                                               10/31/2007 15:44:27 PAGE 3   

 118   2              if(BitCounter-1)
 119   2              {
 120   3              temp1=temp<<1;
 121   3              temp=temp1;
 122   3              }
 123   2              BitCounter--;
 124   2              }
 125   1              while(BitCounter);
 126   1              return(temp);
 127   1              }
 128          
 129          void WrToROM(uchar Data[],uchar Address,uchar Num)
 130          {
 131   1        uchar i;
 132   1        uchar *PData;
 133   1        PData=Data;
 134   1        for(i=0;i<Num;i++)
 135   1        {
 136   2        Start();
 137   2        Send(0xa0);
 138   2        Ack();
 139   2        Send(Address+i);
 140   2        Ack();
 141   2        Send(*(PData+i));
 142   2        Ack();
 143   2        Stop();
 144   2        mDelay(20);
 145   2        }
 146   1        }
 147          
 148          
 149            void RdFromROM(uchar Data[],uchar Address,uchar Num)
 150            {
 151   1        uchar i;
 152   1        uchar *PData;
 153   1        PData=Data;
 154   1        for(i=0;i<Num;i++)
 155   1        {
 156   2        Start();
 157   2        Send(0xa0);
 158   2        Ack();
 159   2        Send(Address+i);
 160   2        Ack();
 161   2        Start();
 162   2        Send(0xa1);
 163   2        Ack();
 164   2        *(PData+i)=Read();
 165   2        Scl=0;
 166   2        NoAck();
 167   2        Stop();
 168   2        }
 169   1        }
 170          
 171             /*MAX7219写入*/
 172          void Write(uchar add,uchar dat)
 173          {
 174   1              uchar ADS,i,l;
 175   1              LOAD = 0;
 176   1              i=0;
 177   1              while(i<16)
 178   1              {
 179   2              if(i<8)
C51 COMPILER V7.06   AT24C02                                                               10/31/2007 15:44:27 PAGE 4   

 180   2              {
 181   3              ADS=add;
 182   3              }
 183   2              else
 184   2              {
 185   3              ADS=dat;
 186   3              }
 187   2              for (l=8;l>=1;l--)
 188   2              {
 189   3                      CLK = 0;
 190   3                  DIN =ADS&0x80;
 191   3                      ADS=ADS<<1;
 192   3                       CLK = 1;
 193   3                      CLK=0;
 194   3                      }
 195   2                      i=i+8;
 196   2                      }
 197   1      
 198   1      
 199   1                 LOAD = 1;    
 200   1      }
 201          
 202          /*MAX7219初始化*/
 203          void Initial(void)
 204          {
 205   1              Write(0x0A,0xf5);
 206   1              Write(0x0B,0x07);
 207   1              Write(0x0C,0x01);
 208   1              Write(0x09,0xFF);
 209   1      }
 210          
 211          
 212            void main()
 213            {     uchar i;
 214   1          uchar j;
 215   1              uchar k;
 216   1              uchar Number[24]={1,2,3,4,5,6,7,8,8,7,6,5,4,3,2,1,8,8,8,8,1,1,1,1};
 217   1              uchar Buffer[4]={0};
 218   1          Initial(); //初始化MAX7219
 219   1              mDelay(500);
 220   1       WrToROM(Number,0,24); //将Number中的数据写入24C02中
 221   1       while(1)
 222   1       {
 223   2        k=0;
 224   2       for(i=0;i<6;i++)
 225   2        {
 226   3        RdFromROM(Buffer,k,4);  //将24C02中的数据每次取出4个给Buffer数组
 227   3        k=k+4;
 228   3        for(j=0;j<4;j++)
 229   3        {
 230   4        Write(0x01+j,Buffer[j]); //显示从24C02中读出的数据进行验证
 231   4         
 232   4        }
 233   3        mDelay(1000);
 234   3        }
 235   2        }
 236   1         }
 237          
 238          
 239          
 240          
 241          
C51 COMPILER V7.06   AT24C02                                                               10/31/2007 15:44:27 PAGE 5   

 242          
 243          
 244          
 245          
 246          
 247           


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