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

📄 eeprom.lst

📁 51开发板调试程序
💻 LST
字号:
C51 COMPILER V7.50   EEPROM                                                                03/28/2007 11:36:57 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN EEPROM.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE EEPROM.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include <intrins.h>
   3          #include "Define.h"
   4          #include "Set.h"
   5          
   6          
   7          /*有关全局变量*/
   8          sbit Sda= P1^7; /*串行数据*/
   9          sbit Scl= P1^6; /*串行时钟*/
  10          
  11          //////////////////////////////////////////////////////////////////////////////
  12          void mDelay(UCHARIDATA j)
  13          { 
  14   1          UCHARIDATA i;
  15   1      
  16   1          for(;j>0;j--)
  17   1          { 
  18   2                  for(i=0;i<125;i--)
  19   2              {
  20   3                          ;
  21   3                      }
  22   2          }
  23   1      }
  24          
  25          /*发送起始条件*/
  26          void Start(void) /*起始条件*/
  27          {
  28   1          Sda=1;
  29   1          Scl=1;
  30   1          _nop_ ();
  31   1          _nop_ ();
  32   1          _nop_ ();
  33   1          Sda=0;
  34   1          _nop_ ();
  35   1          _nop_ ();
  36   1          _nop_ ();
  37   1      }
  38          
  39          void Stop(void) /*停止条件*/
  40          {
  41   1          Sda=0;
  42   1          Scl=1;
  43   1          _nop_ ();
  44   1          _nop_ ();
  45   1          _nop_ ();
  46   1          Sda=1;
  47   1          _nop_ ();
  48   1          _nop_ ();
  49   1          _nop_ ();
  50   1      }
  51          
  52          void Ack(void) /*应答位*/
  53          {
  54   1          Sda=0;
  55   1          _nop_ ();
C51 COMPILER V7.50   EEPROM                                                                03/28/2007 11:36:57 PAGE 2   

  56   1          _nop_ ();
  57   1          _nop_ ();
  58   1          Scl=1;
  59   1          _nop_ ();
  60   1          _nop_ ();
  61   1          _nop_ ();
  62   1          Scl=0;
  63   1      }
  64          
  65          void NoAck(void) /*反向应答位*/
  66          {
  67   1          Sda=1;
  68   1          _nop_ ();
  69   1          _nop_ ();
  70   1          _nop_ ();
  71   1          Scl=1;
  72   1          _nop_ ();
  73   1          _nop_ ();
  74   1          _nop_ ();
  75   1          Scl=0;
  76   1      }
  77          
  78          void Send(UCHARIDATA Data) /*发送数据子程序,Data为要求发送的数据*/
  79          {
  80   1          UCHARIDATA BitCounter=8; /*位数控制*/
  81   1          UCHARIDATA temp; /*中间变量控制*/
  82   1      
  83   1              do
  84   1          {
  85   2              temp=Data;
  86   2              Scl=0;
  87   2              _nop_ ();
  88   2              _nop_ ();
  89   2              _nop_ ();
  90   2      
  91   2              if((temp&0x80)==0x80)/* 如果最高位是1*/
  92   2                      {
  93   3                  Sda=1;
  94   3                  }
  95   2              else
  96   2                      {
  97   3                  Sda=0;
  98   3                      }
  99   2      
 100   2              Scl=1;
 101   2              temp=Data<<1; /*RLC*/
 102   2              Data=temp;
 103   2              BitCounter--;
 104   2          }while(BitCounter);
 105   1      
 106   1          Scl=0;
 107   1      }
 108          
 109          
 110          UCHAR Read(void) /*读一个字节的数据,并返回该字节值*/
 111          {
 112   1          UCHARIDATA temp=0;
 113   1          UCHARIDATA temp1=0;
 114   1          UCHARIDATA BitCounter=8;
 115   1      
 116   1          Sda=1;
 117   1          do
C51 COMPILER V7.50   EEPROM                                                                03/28/2007 11:36:57 PAGE 3   

 118   1              {
 119   2              Scl=0;
 120   2              _nop_ ();
 121   2              _nop_ ();                                                                                         
             -       
 122   2              _nop_ ();
 123   2              Scl=1;
 124   2              _nop_ ();
 125   2              _nop_ ();
 126   2              _nop_ ();
 127   2      
 128   2              if(Sda) /*如果Sda=1;*/
 129   2                      {
 130   3                  temp=temp|0x01; /*temp的最低位置1*/
 131   3                      }
 132   2              else
 133   2                      {
 134   3                  temp=temp&0xfe; /*否则temp的最低位清0*/
 135   3              }
 136   2      
 137   2                      if(BitCounter-1)
 138   2              { 
 139   3                          temp1=temp<<1;
 140   3                  temp=temp1;
 141   3              }
 142   2      
 143   2              BitCounter--;
 144   2          }while(BitCounter);
 145   1      
 146   1          return(temp);
 147   1      }
 148          
 149          void ByteWrite(UCHARIDATA Data[],UCHARIDATA Address,UCHARIDATA Num)
 150          {
 151   1          UCHARIDATA i;
 152   1          UCHARIDATA *PData;
 153   1          PData=Data;
 154   1      
 155   1          for(i=0;i<Num;i++)
 156   1          {
 157   2              Start(); /*发送启动信号*/
 158   2      
 159   2              Send(0xa0); /*发送SLA+W*/
 160   2              Ack();
 161   2              Send(Address+i); /*发送地址*/
 162   2              Ack();
 163   2              Send(*(PData+i));
 164   2              Ack();
 165   2      
 166   2              Stop();
 167   2              mDelay(20);
 168   2          }
 169   1      }
 170          
 171          ///////////////////////////PAGE WRITE////////////////////////////////////
 172          void PageWrite(UCHARIDATA Data[],UCHARIDATA Address)
 173          {
 174   1          UCHARIDATA i;
 175   1          UCHARIDATA *PData;
 176   1          PData=Data;
 177   1      
 178   1              Start(); /*发送启动信号*/
C51 COMPILER V7.50   EEPROM                                                                03/28/2007 11:36:57 PAGE 4   

 179   1      
 180   1          Send(0xa0); /*发送SLA+W*/
 181   1          Ack();
 182   1          Send(Address); /*发送地址*/
 183   1          Ack();
 184   1      
 185   1          for(i=0;i<6;i++)
 186   1          {
 187   2              
 188   2              Send(*(PData+i));
 189   2              Ack();
 190   2      
 191   2          }
 192   1      
 193   1              Stop();
 194   1          mDelay(20);
 195   1      }
 196          ///////////////////////////RandomRead////////////////////////////////////
 197          
 198          void RandomRead(UCHARIDATA Data[],UCHARIDATA Address,UCHARIDATA Num)
 199          {
 200   1          UCHARIDATA i;
 201   1          UCHARIDATA *PData;
 202   1          PData=Data;
 203   1      
 204   1          for(i=0;i<Num;i++)
 205   1          {
 206   2              Start();
 207   2      
 208   2              Send(0xa0);
 209   2              Ack();
 210   2              Send(Address+i); 
 211   2              Ack();
 212   2      
 213   2              Start();
 214   2              Send(0xa1);
 215   2              Ack();
 216   2      
 217   2              *(PData+i)=Read();
 218   2              mDelay(20);
 219   2              Scl=0;
 220   2              NoAck();
 221   2      
 222   2              Stop();
 223   2          }
 224   1      
 225   1          mDelay(10);
 226   1          
 227   1      }
 228          
 229          //////////////////////Current Address Read//////////////////////////////////
 230          void CurrentAddressRead(UCHARIDATA *pData)
 231          {
 232   1          UCHARIDATA *pTemp;
 233   1          pTemp=pData;
 234   1      
 235   1              Start();
 236   1          Send(0xa1);
 237   1          Ack();
 238   1      
 239   1         *pTemp=Read();
 240   1          mDelay(20);
C51 COMPILER V7.50   EEPROM                                                                03/28/2007 11:36:57 PAGE 5   

 241   1      
 242   1              Scl=0;
 243   1          NoAck();
 244   1      
 245   1          Stop();
 246   1        
 247   1      }
 248          
 249          
 250          void SequentialRead(UCHARIDATA Data[],UCHARIDATA Num)
 251          {
 252   1          UCHARIDATA i;
 253   1          UCHARIDATA *PData;
 254   1          PData=Data;
 255   1      
 256   1              Start(); /*发送启动信号*/
 257   1          Send(0xa1);
 258   1          Ack();
 259   1      
 260   1          for(i=0;i<Num-1;i++)
 261   1          {
 262   2              *(PData+i)=Read();
 263   2                      mDelay(20);
 264   2              Scl=0;
 265   2              Ack();
 266   2                      
 267   2          }
 268   1      
 269   1              *(PData+Num-1)=Read();
 270   1              mDelay(20);
 271   1          Scl=0;
 272   1          NoAck();
 273   1      
 274   1              Stop();
 275   1          
 276   1      }


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