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

📄 24c02.lst

📁 E2rom程序 ~~~~~~~~~~~~~~~
💻 LST
字号:
C51 COMPILER V7.06   24C02                                                                 12/03/2008 15:21:47 PAGE 1   


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

stmt level    source

   1             
   2          /*copyright 2007,ShangHai  HaoTun Electronic Technology co.,Ltd
   3           *
   4           *This sample is used for EEPROM 24C02 Read and Write.
   5           *
   6           *write by Shifang 2007-4-29
   7           *
   8           *V1.1
   9           */
  10          
  11          
  12           #include <reg52.h>
  13           #include <intrins.h>
  14          
  15           #define AddWr 0xae //Write Address
  16           #define AddRd 0xaf //Read Address
  17          
  18           //全局变量
  19           sbit Sda=P1^2; //定义总线连接端口
  20           sbit Scl=P1^1;
  21           sbit WP=P1^0;//No connect here
  22          
  23           void mDelay(unsigned char j)//A normal delay
  24           {
  25   1        unsigned int i;
  26   1        for(;j>0;j--)
  27   1           {
  28   2                for(i=0;i<125;i++)
  29   2                   {;}
  30   2                }
  31   1        }
  32          
  33            //启动 IIC总线
  34            void Start(void)
  35            {
  36   1         Sda=1;
  37   1         _nop_();_nop_();
  38   1         Scl=1;
  39   1         _nop_();_nop_();_nop_();_nop_();_nop_();
  40   1         Sda=0;
  41   1         _nop_();_nop_();_nop_();_nop_();_nop_();
  42   1         Scl=0;
  43   1        }
  44          
  45            //停止 IIC总线
  46            void Stop(void)
  47            {
  48   1         Sda=0;
  49   1         _nop_();
  50   1         Scl=1;
  51   1         _nop_();_nop_();_nop_();_nop_();_nop_();
  52   1         Sda=1;
  53   1         _nop_();_nop_();_nop_();_nop_();_nop_();
  54   1         Scl=0;
  55   1         }
C51 COMPILER V7.06   24C02                                                                 12/03/2008 15:21:47 PAGE 2   

  56          
  57             //应答 IIC总线
  58             void Ack(void)
  59             {
  60   1          Sda=0;
  61   1              _nop_();_nop_();_nop_();
  62   1              Scl=1;
  63   1              _nop_();_nop_();_nop_();_nop_();_nop_();
  64   1              Scl=0;
  65   1              _nop_();_nop_();
  66   1              }
  67          
  68                  //非应答 IIC总线
  69                  void NoAck(void)
  70                  {
  71   1               Sda=1;
  72   1               _nop_();_nop_();_nop_();
  73   1               Scl=1;
  74   1               _nop_();_nop_();_nop_();_nop_();_nop_();
  75   1               Scl=0;
  76   1               _nop_();_nop_();
  77   1               }
  78          
  79                   //发送一个字节
  80                   void Send(unsigned char Data)
  81                   { 
  82   1                unsigned char BitCounter=8;
  83   1                unsigned char temp;
  84   1      
  85   1                do
  86   1                  {
  87   2                       temp=Data;
  88   2                       Scl=0;
  89   2                       _nop_();_nop_();_nop_();_nop_();_nop_();
  90   2                       if((temp&0x80)==0x80)
  91   2                          Sda=1;
  92   2                       else
  93   2                          Sda=0;
  94   2      
  95   2      
  96   2                              Scl=1;
  97   2                              temp=Data<<1;
  98   2                              Data=temp;
  99   2                              BitCounter--;
 100   2                        }
 101   1                while(BitCounter);
 102   1                    Scl=0;
 103   1                }
 104          
 105                    //读一个字节并返回变量
 106                    unsigned char Read(void)
 107                    {
 108   1                 unsigned char temp=0;
 109   1                 unsigned char temp1=0;
 110   1                 unsigned char BitCounter=8;
 111   1      
 112   1                 Sda=1;
 113   1                 do
 114   1                   {
 115   2                        Scl=0;
 116   2                _nop_();_nop_();_nop_();_nop_();_nop_();
 117   2                        Scl=1;
C51 COMPILER V7.06   24C02                                                                 12/03/2008 15:21:47 PAGE 3   

 118   2                        _nop_();_nop_();_nop_();_nop_();_nop_();
 119   2                        if(Sda)
 120   2                           temp=temp|0x01;
 121   2                        else
 122   2                           temp=temp&0xfe;
 123   2      
 124   2                        if(BitCounter-1)
 125   2                           {
 126   3                                temp1=temp<<1;
 127   3                                temp=temp1;
 128   3                                }
 129   2                                BitCounter--;
 130   2                               }
 131   1                      while(BitCounter);
 132   1                      return(temp);
 133   1                }
 134              //write to ROM
 135                    void WrToROM(unsigned char Data[],unsigned char Address,unsigned char Num)
 136                    {
 137   1                 unsigned char i;
 138   1                 unsigned char *PData;
 139   1                 PData=Data;
 140   1                 for(i=0;i<Num;i++)
 141   1                    {
 142   2                         Start();
 143   2                         Send(AddWr);//Write Address
 144   2                         Ack();
 145   2                         Send(Address+i);//Write sub Address
 146   2                         Ack();
 147   2                         Send(*(PData+i));//Write Data
 148   2                         Ack();
 149   2                         Stop();
 150   2                         mDelay(20);
 151   2                         }
 152   1                 }
 153             //read from ROM
 154                    void RdFromROM(unsigned char Data[],unsigned char Address,unsigned char Num)
 155                    {
 156   1                 unsigned char i;
 157   1                 unsigned char *PData;
 158   1                 PData=Data;
 159   1             for(i=0;i<Num;i++)
 160   1                    {
 161   2                         Start();
 162   2                         Send(AddWr);//Write Address
 163   2                         Ack();
 164   2                         Send(Address+i);//Write sub Address
 165   2                         Ack();
 166   2                         Start();
 167   2                         Send(AddRd);//Read Address
 168   2                         Ack();
 169   2                         *(PData+i)=Read();//Read Data
 170   2                         Scl=0;
 171   2                         NoAck();
 172   2                         Stop();
 173   2                         }
 174   1                }
 175          
 176                  void main()
 177                  {
 178   1               unsigned char Number[4]={0x06,0x5b,0x4f,0x66};// 显示码值 1234
 179   1               unsigned char i;
C51 COMPILER V7.06   24C02                                                                 12/03/2008 15:21:47 PAGE 4   

 180   1               WP=0;//写保护关掉
 181   1               P2=0x00;
 182   1               
 183   1               WrToROM(Number,4,4);//写入24c02
 184   1               mDelay(200);
 185   1               Number[0]=0;//清除当前数据
 186   1               Number[1]=0;
 187   1               Number[2]=0;
 188   1               Number[3]=0;
 189   1               RdFromROM(Number,4,4);//调用存储数据
 190   1               
 191   1               while(1)
 192   1                    { 
 193   2                 
 194   2                     P0=Number[i];//显示存储数据
 195   2                         mDelay(200);
 196   2                         mDelay(200);
 197   2                         i++;
 198   2                         if(i==4)
 199   2                            i=0;
 200   2                        }
 201   1              }
 202          
 203          


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