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

📄 24c02srtest.lst

📁 AT24C02页写模式存取源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   24C02SRTEST                                                           02/28/2008 14:19:16 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 24C02SRTEST
OBJECT MODULE PLACED IN 24C02SRTest.OBJ
COMPILER INVOKED BY: d:\Keil3\C51\BIN\C51.EXE 24C02SRTest.C ROM(COMPACT) OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /***  引用yajou整理的I2C万能驱动程序  **************************************/
   2          /***  整理:yajou 2008-01-07 || http://hi.baidu.com/yajou/  ****************/
   3          /*-------------------------------------------------------------------------*/
   4          
   5          #include "reg51.h"
   6          #include "intrins.h"
   7          #include "24C02SRTest.h"
   8          
   9          
  10          /********************************************************
  11          * Main                                                                                      *
  12          ********************************************************/
  13          main(void)
  14          {
  15   1              uint i;
  16   1              uchar j;
  17   1              
  18   1              
  19   1              SDA = 1;
  20   1              SCL = 1;
  21   1      
  22   1      //      data_shengyu = 12345678;
  23   1      //      data_leiji   = 87654321;
  24   1      //      data_zongji  = 99999999;
  25   1      //      data_baojing = 3058;
  26   1      //      data_guanfa  = 30;
  27   1      //      data_ciganrao= 8;
  28   1      //      data_kaigai  = 5;
  29   1      
  30   1      
  31   1      
  32   1              if(ReadAllData())  //从AT24C02读出数据
  33   1              {
  34   2                      data_shengyu = 111;
  35   2              }
  36   1      
  37   1              data_shengyu = data_shengyu - 1;
  38   1              data_leiji   = data_leiji + 1;
  39   1              data_zongji  = data_shengyu +data_leiji;
  40   1              data_baojing = data_baojing + 1;
  41   1              data_guanfa  = data_guanfa + 1;
  42   1              data_ciganrao= data_ciganrao + 1;
  43   1              data_kaigai  = data_kaigai + 1;
  44   1      
  45   1      
  46   1              if(SaveAllData())   //写入数据到AT24C02
  47   1              {
  48   2                      data_shengyu = 222;
  49   2              }
  50   1      
  51   1      
  52   1              temp1 = data_shengyu;
  53   1              datasw();   
  54   1              while(1)
  55   1              {
C51 COMPILER V8.08   24C02SRTEST                                                           02/28/2008 14:19:16 PAGE 2   

  56   2                      i++;
  57   2                      if(i > 100)
  58   2                      {
  59   3                              i = 0;
  60   3                              j++;
  61   3                              if(j == 7) j = 0;
  62   3                              switch(j)
  63   3                              {
  64   4                                      case 0:{temp1 = data_shengyu;break;}
  65   4                                      case 1:{temp1 = data_leiji;break;}
  66   4                                      case 2:{temp1 = data_zongji;break;}
  67   4                                      case 3:{temp1 = data_baojing;break;}
  68   4                                      case 4:{temp1 = data_guanfa;break;}
  69   4                                      case 5:{temp1 = data_ciganrao;break;}
  70   4                                      case 6:{temp1 = data_kaigai;break;}
  71   4                                      default:{temp1 = data_shengyu;break;}
  72   4                              }
  73   3                              datasw();   
  74   3                      }
  75   2                      ledplay();
  76   2              }
  77   1      }
  78          
  79          
  80          
  81          
  82          
  83          /********************************************************
  84          * 读取剩余量、运行参数、各报警标志及数据校验            *
  85          ********************************************************/
  86          bit ReadAllData(void)
  87          {
  88   1              uchar *ptr_ulint;
  89   1              ulint temp=0;
  90   1              uint data_crc1=0,data_crc2=0;
  91   1      
  92   1              ptr_ulint = &temp;
*** WARNING C182 IN LINE 92 OF 24C02SRTEST.C: pointer to different objects
  93   1                                      
  94   1                                                                                      
  95   1              if(ReadData_ulint(ptr_ulint,0x00,4))    //剩余量
  96   1              {
  97   2                      return 1;
  98   2              }
  99   1              data_shengyu = temp;
 100   1              data_crc1 = CalCRC_ulint(ptr_ulint,4);
 101   1              if(ReadData_ulint(ptr_ulint,0x04,4))
 102   1              {
 103   2                      return 1;
 104   2              }
 105   1              data_crc2 = temp;
 106   1      
 107   1              if(data_crc1 != data_crc2)
 108   1              {
 109   2                      return 1;
 110   2              }
 111   1      
 112   1      
 113   1              if(ReadData_ulint(ptr_ulint,0x08,4))    //累计量
 114   1              {
 115   2                      return 1;
 116   2              }
C51 COMPILER V8.08   24C02SRTEST                                                           02/28/2008 14:19:16 PAGE 3   

 117   1              data_leiji = temp;
 118   1              data_crc1 = CalCRC_ulint(ptr_ulint,4);
 119   1              if(ReadData_ulint(ptr_ulint,0x0c,4))
 120   1              {
 121   2                      return 1;
 122   2              }
 123   1              data_crc2 = temp;
 124   1      
 125   1              if(data_crc1 != data_crc2)
 126   1              {
 127   2                      return 1;
 128   2              }
 129   1      
 130   1      
 131   1              if(ReadData_ulint(ptr_ulint,0x10,4))    //总计量
 132   1              {
 133   2                      return 1;
 134   2              }
 135   1              data_zongji = temp;
 136   1              data_crc1 = CalCRC_ulint(ptr_ulint,4);
 137   1              if(ReadData_ulint(ptr_ulint,0x14,4))
 138   1              {
 139   2                      return 1;
 140   2              }
 141   1              data_crc2 = temp;
 142   1      
 143   1              if(data_crc1 != data_crc2)
 144   1              {
 145   2                      return 1;
 146   2              }
 147   1      
 148   1      
 149   1              if(ReadData_ulint(ptr_ulint,0x20,4))    //报警量
 150   1              {
 151   2                      return 1;
 152   2              }
 153   1              data_baojing = temp;
 154   1              data_crc1 = CalCRC_ulint(ptr_ulint,4);
 155   1              if(ReadData_ulint(ptr_ulint,0x24,4))
 156   1              {
 157   2                      return 1;
 158   2              }
 159   1              data_crc2 = temp;
 160   1      
 161   1              if(data_crc1 != data_crc2)
 162   1              {
 163   2                      return 1;
 164   2              }
 165   1      
 166   1      
 167   1              if(ReadData_ulint(ptr_ulint,0x28,4))    //关阀量
 168   1              {
 169   2                      return 1;
 170   2              }
 171   1              data_guanfa = temp;
 172   1              data_crc1 = CalCRC_ulint(ptr_ulint,4);
 173   1              if(ReadData_ulint(ptr_ulint,0x2c,4))
 174   1              {
 175   2                      return 1;
 176   2              }
 177   1              data_crc2 = temp;
 178   1      
C51 COMPILER V8.08   24C02SRTEST                                                           02/28/2008 14:19:16 PAGE 4   

 179   1              if(data_crc1 != data_crc2)
 180   1              {
 181   2                      return 1;
 182   2              }
 183   1      
 184   1              if(ReadData_ulint(ptr_ulint,0x30,4))    //磁扰数
 185   1              {
 186   2                      return 1;
 187   2              }
 188   1              data_ciganrao = temp;
 189   1              data_crc1 = CalCRC_ulint(ptr_ulint,4);
 190   1              if(ReadData_ulint(ptr_ulint,0x34,4))
 191   1              {
 192   2                      return 1;
 193   2              }
 194   1              data_crc2 = temp;
 195   1      
 196   1              if(data_crc1 != data_crc2)
 197   1              {
 198   2                      return 1;
 199   2              }
 200   1      
 201   1                                                              
 202   1              if(ReadData_ulint(ptr_ulint,0x38,4))      //开盖次数
 203   1              {
 204   2                      return 1;
 205   2              }
 206   1              data_kaigai = temp;
 207   1              data_crc1 = CalCRC_ulint(ptr_ulint,4);
 208   1              if(ReadData_ulint(ptr_ulint,0x3c,4))
 209   1              {
 210   2                      return 1;
 211   2              }
 212   1              data_crc2 = temp;
 213   1      
 214   1              if(data_crc1 != data_crc2)
 215   1              {
 216   2                      return 1;
 217   2              }
 218   1      
 219   1              return(0);
 220   1      }
 221          
 222          
 223          
 224          /********************************************************
 225          *  保存计量数据                                                                     *
 226          ********************************************************/
 227          bit  SaveJiliangData(void)
 228          {
 229   1              uchar *ptr_ulint;
 230   1              ulint temp;
 231   1      
 232   1              ptr_ulint = &temp;
*** WARNING C182 IN LINE 232 OF 24C02SRTEST.C: pointer to different objects
 233   1                              
 234   1              temp = data_shengyu;                    //剩余量
 235   1              if(WriteData_ulint(ptr_ulint,0x00,4))
 236   1              {
 237   2                      return 1;
 238   2              }
 239   1              temp = CalCRC_ulint(ptr_ulint,4);
C51 COMPILER V8.08   24C02SRTEST                                                           02/28/2008 14:19:16 PAGE 5   

 240   1              if(WriteData_ulint(ptr_ulint,0x04,4))
 241   1              {
 242   2                      return 1;
 243   2              }
 244   1      
 245   1              temp = data_leiji;                              //累计量
 246   1              if(WriteData_ulint(ptr_ulint,0x08,4))
 247   1              {
 248   2                      return 1;
 249   2              }
 250   1              temp = CalCRC_ulint(ptr_ulint,4);
 251   1              if(WriteData_ulint(ptr_ulint,0x0c,4))
 252   1              {
 253   2                      return 1;
 254   2              }
 255   1      
 256   1              temp = data_zongji;                             //总计量
 257   1              if(WriteData_ulint(ptr_ulint,0x10,4))
 258   1              {
 259   2                      return 1;
 260   2              }
 261   1              temp = CalCRC_ulint(ptr_ulint,4);
 262   1              if(WriteData_ulint(ptr_ulint,0x14,4))
 263   1              {
 264   2                      return 1;
 265   2              }
 266   1              return(0);
 267   1      }
 268          
 269          /********************************************************
 270          *  保存所有数据                                                                     *
 271          ********************************************************/
 272          bit  SaveAllData(void)                                          
 273          {
 274   1              uchar *ptr_ulint;
 275   1              ulint temp;
 276   1      
 277   1              ptr_ulint = &temp;
*** WARNING C182 IN LINE 277 OF 24C02SRTEST.C: pointer to different objects
 278   1                              
 279   1              temp = data_shengyu;                    //剩余量
 280   1              if(WriteData_ulint(ptr_ulint,0x00,4))
 281   1              {
 282   2                      return 1;
 283   2              }
 284   1              temp = CalCRC_ulint(ptr_ulint,4);
 285   1              if(WriteData_ulint(ptr_ulint,0x04,4))
 286   1              {
 287   2                      return 1;
 288   2              }
 289   1      
 290   1              temp = data_leiji;                              //累计量
 291   1              if(WriteData_ulint(ptr_ulint,0x08,4))
 292   1              {
 293   2                      return 1;
 294   2              }
 295   1              temp = CalCRC_ulint(ptr_ulint,4);
 296   1              if(WriteData_ulint(ptr_ulint,0x0c,4))
 297   1              {
 298   2                      return 1;
 299   2              }
 300   1      
C51 COMPILER V8.08   24C02SRTEST                                                           02/28/2008 14:19:16 PAGE 6   

 301   1              temp = data_zongji;                             //总计量
 302   1              if(WriteData_ulint(ptr_ulint,0x10,4))
 303   1              {
 304   2                      return 1;
 305   2              }
 306   1              temp = CalCRC_ulint(ptr_ulint,4);
 307   1              if(WriteData_ulint(ptr_ulint,0x14,4))
 308   1              {
 309   2                      return 1;
 310   2              }
 311   1      
 312   1              temp = data_baojing;                    //报警量

⌨️ 快捷键说明

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