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

📄 stc_control_24c02.lst

📁 单片机通过I2C总线控制24c02 其中包括 24C02初始化 24C02读写等 STC单片机初始化 读写等
💻 LST
字号:
C51 COMPILER V8.02   STC_CONTROL_24C02                                                     12/29/2007 12:56:55 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE STC_CONTROL_24C02
OBJECT MODULE PLACED IN stc_control_24c02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE stc_control_24c02.c COMPACT BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*************************版权信息**************************  
   2            *文件名称:     i2c.h  
   3            *当前版本:     v1.0  
   4            *作者:         吕坤修改  
   5            *完成日期:     2007-12-29  
   6            *摘要:         24c02外存操作声明文件  
   7            ************************************************************/ 
   8          
   9          #include <reg52.h>
  10          extern void Delay(long int time);
  11          
  12          sbit scl=P2^3;  /*24c02时钟控制线*/
  13          sbit sda=P2^4;  /*24c02数据传输线*/
  14          
  15          char x24c02_read(char address);                   /*从24c02的address地址读取一个数据并返回*/
  16          void x24c02_write(char address,char info);/*向24c02的address地址写入字符info*/
  17          void x24c02_init();                                               /*24c02初始化*/
  18          
  19          void flash();                                                   /*数据写入时控制发光二极管闪烁*/
  20          void start();                                                   /*I2C总线协议,数据开始*/
  21          void stop();                                                    /*I2C总线协议,数据结束*/
  22          void writex(char j);                                    /*向I2C总线写入一个数据*/       
  23          char readx();                                                   /*从I2C总线读出一个数据*/
  24          void clock();                                                   /*等待周期*/    
  25          
  26          /*调用写入与读出程序库*/
  27          void write_uint_to_24c02(char address,unsigned int date);               /*向address写入一个无符号整形*/
  28          void write_int_to_24c02(char address,int date);                                 /*向address写入一个整形*/
  29          void write_string_to_24c02(char address,char *date,char lens);  /*向address写入一个字符串*/
  30          
  31          unsigned int read_uint_form_24c02(char address);                                /*从address读出一个无符号整形*/
  32          int read_int_form_24c02(char address);                                                  /*从address读出一个无符号整形*/
  33          void read_string_form_24c02(char address,char *date,char lens); /*从address读出一个无符号整形*/
  34          
  35          void flash()
  36          {
  37   1              /*等待闪烁
  38   1              DOG=~DOG;
  39   1              */
  40   1      }
  41          /*24c02初始化程序*/
  42          void x24c02_init()
  43          {
  44   1              scl=1;
  45   1              flash();
  46   1              sda=1;
  47   1              flash();
  48   1      }
  49          
  50          void start()
  51          {
  52   1              sda=1; 
  53   1              flash(); 
  54   1              scl=1; 
  55   1              flash(); 
C51 COMPILER V8.02   STC_CONTROL_24C02                                                     12/29/2007 12:56:55 PAGE 2   

  56   1              sda=0; 
  57   1              flash(); 
  58   1              scl=0; 
  59   1              flash();
  60   1      }
  61          
  62          void stop()
  63          {
  64   1              sda=0; 
  65   1              flash(); 
  66   1              scl=1; 
  67   1              flash(); 
  68   1              sda=1; 
  69   1              flash();
  70   1      }
  71          
  72          void writex(char j)
  73          {
  74   1              char i,temp;
  75   1              temp=j;
  76   1              for (i=0;i<8;i++)/*分拆字节传输*/
  77   1              {
  78   2                      temp=temp<<1; 
  79   2                      scl=0; 
  80   2                      flash(); 
  81   2                      sda=CY; 
  82   2                      flash(); 
  83   2                      scl=1; 
  84   2                      flash();
  85   2              }
  86   1              scl=0; 
  87   1              flash(); 
  88   1              sda=1; 
  89   1              flash();
  90   1      }
  91          char readx()
  92          {
  93   1              char i,j,k=0;
  94   1              scl=0; 
  95   1              flash(); 
  96   1              sda=1;
  97   1              for(i=0;i<8;i++)
  98   1              {
  99   2                      flash(); 
 100   2                      scl=1; 
 101   2                      flash();
 102   2              if (sda==1)
 103   2                      {
 104   3                              j=1;
 105   3                      }
 106   2              else
 107   2                      {
 108   3                              j=0;
 109   3                      }
 110   2              k=(k<<1)|j; 
 111   2                      scl=0;
 112   2              }
 113   1              flash(); 
 114   1              return(k);
 115   1      }
 116          void clock()
 117          {
C51 COMPILER V8.02   STC_CONTROL_24C02                                                     12/29/2007 12:56:55 PAGE 3   

 118   1               char i=0;
 119   1              scl=1; 
 120   1              flash();
 121   1              while((sda==1)&&(i<255))
 122   1              {
 123   2                      i++;
 124   2              }
 125   1              scl=0;
 126   1              flash();
 127   1      }
 128          
 129          char x24c02_read(char address)
 130          {
 131   1              char i;
 132   1              start(); 
 133   1              writex(0xa0);
 134   1              clock(); 
 135   1              writex(address);
 136   1              clock(); 
 137   1              start();
 138   1              writex(0xa1); 
 139   1              clock();
 140   1              i=readx(); 
 141   1              stop();
 142   1              Delay(10);
 143   1              return(i);
 144   1      }
 145          void x24c02_write(char address,char info)
 146          {
 147   1              EA=0;
 148   1              start(); 
 149   1              writex(0xa0);
 150   1              clock(); 
 151   1              writex(address);
 152   1              clock(); 
 153   1              writex(info);
 154   1              clock(); 
 155   1              stop();
 156   1              EA=1;
 157   1              Delay(50);
 158   1      }
 159          
 160          void write_uint_to_24c02(char address,unsigned int date)                /*向address写入一个无符号整形*/
 161          {
 162   1              char byte_to_24c02;
 163   1              byte_to_24c02=date;
 164   1              x24c02_write(address,byte_to_24c02);
 165   1              Delay(30);
 166   1              byte_to_24c02=date>>8;
 167   1              x24c02_write(address+1,byte_to_24c02);  
 168   1      }
 169          
 170          void write_int_to_24c02(char address,int date)                                  /*向address写入一个整形*/
 171          {
 172   1              char byte_to_24c02;
 173   1              byte_to_24c02=date;
 174   1              x24c02_write(address,byte_to_24c02);
 175   1              Delay(30);
 176   1              byte_to_24c02=date>>8;
 177   1              x24c02_write(address+1,byte_to_24c02);
 178   1      }
 179          void write_string_to_24c02(char address,char *date,char lens)   /*向address写入一个字符串*/
C51 COMPILER V8.02   STC_CONTROL_24C02                                                     12/29/2007 12:56:55 PAGE 4   

 180          {
 181   1              char i,byte_to_24c02;
 182   1              for(i=0;i<lens;i++)
 183   1              {
 184   2                      byte_to_24c02=*date;
 185   2                      x24c02_write(address+i,byte_to_24c02);
 186   2                      date++; 
 187   2              }       
 188   1      }
 189          
 190          unsigned int read_uint_form_24c02(char address)                                 /*从address读出一个无符号整形*/
 191          {
 192   1              unsigned int return_value;
 193   1              char byte_from_24c02;
 194   1              byte_from_24c02=x24c02_read(address+1);
 195   1              return_value=byte_from_24c02;
 196   1              byte_from_24c02=x24c02_read(address);
 197   1              return_value<<=8;
 198   1              return_value+=byte_from_24c02;
 199   1              return return_value;
 200   1      }
 201          int read_int_form_24c02(char address)                                                   /*从address读出一个无符号整形*/
 202          {
 203   1              int return_value;
 204   1              char byte_from_24c02;
 205   1              byte_from_24c02=x24c02_read(address+1);
 206   1              return_value=byte_from_24c02;
 207   1              byte_from_24c02=x24c02_read(address);
 208   1              return_value<<=8;
 209   1              return_value+=byte_from_24c02;
 210   1              return return_value;    
 211   1      }
 212          void read_string_form_24c02(char address,char *date,char lens)  /*从address读出一个无符号整形*/
 213          {
 214   1              char i;
 215   1              for(i=0;i<lens;i++)
 216   1              {
 217   2                      *date=x24c02_read(address+i);
 218   2                      date++; 
 219   2              }
 220   1      }


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