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

📄 cmdparse.lst

📁 个人学习参考!禁止使用到产品上! 任何人不得公开发布!
💻 LST
📖 第 1 页 / 共 2 页
字号:
 238   5                    else
C51 COMPILER V7.10   CMDPARSE                                                              02/03/2005 10:45:39 PAGE 5   

 239   5                    {
 240   6                      IdRight=0x00;
 241   6                      break;
 242   6                    }
 243   5                    j++;
 244   5                  }
 245   4                  //地址如果正确(非广播命令)开始解析命令
 246   4                  if(IdRight==0x55)
 247   4                  {                           
 248   5                                      switch(ComDataBuf[8])
 249   5                      {
 250   6                        case 0x01 : 
 251   6                                    switch(ComDataBuf[11])
 252   6                                    {
 253   7                                      case 0x90:
 254   7                                                  switch(ComDataBuf[10])
 255   7                                                  {
 256   8                                                    case 0x1f:  //读当前有功电量集合  
 257   8                                                                for(i=0;i<4;i++)
 258   8                                                                {
 259   9                                                                  IIcBuf[i]=SumPulseData[i];
 260   9                                                                }
 261   8                                                                for(i=4;i<8;i++)
 262   8                                                                {
 263   9                                                                  IIcBuf[i]=FengPulseData[i-4];
 264   9                                                                }
 265   8                                                                for(i=8;i<12;i++)
 266   8                                                                {
 267   9                                                                  IIcBuf[i]=PingPulseData[i-8];
 268   9                                                                }
 269   8                                                                for(i=12;i<16;i++)
 270   8                                                                {
 271   9                                                                  IIcBuf[i]=GuPulseData[i-12];
 272   9                                                                }
 273   8                                                                CmdPick(0,0,0,0,IIcBuf,16,0,1);
 274   8                                                    break;
 275   8                                                    case 0x20:  //读反向总电量
 276   8                                                                CmdPick(0x00,0x00,0x00,0,ReversePulseData,4,0,1)
             -;
 277   8                                                    break;
 278   8                                                  }
 279   7                                      break;
 280   7                                      case 0xb0:
 281   7                                                  switch(ComDataBuf[10])
 282   7                                                  {
 283   8                                                    case 0x20:  //读最后一次反向启始时间
 284   8                                                                CmdPick(0xa0,0x38,4,0,0,0,1,0);
 285   8                                                    break;
 286   8                                                    case 0x21:  //读反向累积总时间
 287   8                                                                CmdPick(0x00,0x00,0x00,0,ReverseTime,3,0,0);
 288   8                                                    break;
 289   8                                                  }
 290   7                                      break; 
 291   7                                      case 0xb2:
 292   7                                                  switch(ComDataBuf[10])
 293   7                                                  {
 294   8                                                    case 0x10:  //读最近一次编程时间
 295   8                                                                CmdPick(0xa0,0x3c,4,0,0,0,1,0);
 296   8                                                    break;
 297   8                                                    case 0x12:  //读编程次数
 298   8                                                                CmdPick(0xa0,0x68,2,0,0,0,1,0);
 299   8                                                    break;
C51 COMPILER V7.10   CMDPARSE                                                              02/03/2005 10:45:39 PAGE 6   

 300   8                                                  }
 301   7                                      break;  
 302   7                                      case 0xc0:
 303   7                                                  switch(ComDataBuf[10])
 304   7                                                  {
 305   8                                                    case 0x10:  //读当前日期
 306   8                                                                CmdPick(0,0,0,0,DaysBuf,4,0,0);
 307   8                                                    break;
 308   8                                                    case 0x11:  //读当前时间
 309   8                                                                CmdPick(0,0,0,0,TimeBuf,3,0,0);
 310   8                                                    break;
 311   8                                                    case 0x20:  //读电表运行状态字
 312   8                                                                CmdPick(0xa0,0x65,1,0,0,0,1,0);
 313   8                                                    break;
 314   8                                                    case 0x30:  //读电表脉冲常数
 315   8                                                                CmdPick(0xa0,0x6d,3,0,0,0,1,0);
 316   8                                                    break; 
 317   8                                                    case 0x32:  //读电表表号
 318   8                                                                CmdPick(0xa0,0x46,0x06,0,0,0,1,0);
 319   8                                                    break;  
 320   8                                                    case 0x33:  //读电表地址
 321   8                                                                CmdPick(0xa0,0x40,0x06,0,0,0,1,0);
 322   8                                                    break;   
 323   8                                                  }
 324   7                                      break;
 325   7                                      case 0xc1:
 326   7                                                  switch(ComDataBuf[10])
 327   7                                                  {
 328   8                                                      case 0x17://读自动抄表日期
 329   8                                                                CmdPick(0xa0,0x60,0x02,0,0,0,1,0);
 330   8                                                      break;
 331   8                                                  }
 332   7                                      case 0xc3:
 333   7                                                  switch(ComDataBuf[10])
 334   7                                                  {
 335   8                                                      case 0x17://读电表时段
 336   8                                                                CmdPick(0xa0,0x60,0x02,0,0,0,1,0);
 337   8                                                      break;
 338   8                                                  }
 339   7                                      break;  
 340   7                                      case 0xD1:  //读取12个月历史累积电量
 341   7                                                  for(i=0x20;i<0x2c;i++)
 342   7                                                  {
 343   8                                                      if(ComDataBuf[10]==i)
 344   8                                                      {
 345   9                                                          ToDay(ComDataBuf[10]);
 346   9                                                                                                              CmdPick(0xa2,IIcByteStar,16,0,0,0,1,0);
 347   9                                                      }                                               
 348   8                                                  } 
 349   7                                    }
 350   6                        break;
 351   6                        case 0x04:  //写操作
 352   6                                  if(KeyFg1)
 353   6                                  {
 354   7                                    switch(ComDataBuf[10])
 355   7                                    {
 356   8                                        case  0x10: //写日期
 357   8                                                    //
 358   8                                                    CmdSave(0x64,16,0x03,4,1);
 359   8                                        break;
 360   8                                        case  0x11: //写时间
 361   8                                                    CmdSave(0x64,16,0x00,3,1);                                  
C51 COMPILER V7.10   CMDPARSE                                                              02/03/2005 10:45:39 PAGE 7   

             -             
 362   8                                        break;
 363   8                                        case  0x15: //显示设置
 364   8                                                    CmdSave(0xa0,16,0x62,3,0);                                  
             -              
 365   8                                        break;
 366   8                                        case  0x17: //写自动抄表日
 367   8                                                    CmdSave(0xa0,16,0x60,2,0);  
 368   8                                        break;
 369   8                                        case  0x19: //设置底度
 370   8                                                    //电度清零
 371   8                                                    CmdSave(0xa0,16,0x00,16,0);//总电量清零            
 372   8                                        break;
 373   8                                        case  0x32: //设置表编号
 374   8                                                    CmdSave(0xa0,16,0x46,6,0);//
 375   8                                        break;
 376   8                                                                        case  0x33: //设置表地址
 377   8                                                    CmdSave(0xa0,16,0x40,6,0);//
 378   8                                        break; 
 379   8                                        case  0x3f: //设置时段
 380   8                                                    CmdSave(0xa0,16,0x80,ComDataBuf[9]-6,0);//
 381   8                                        break; 
 382   8                                        default:
 383   8                                                   
 384   8                                        break;
 385   8                                    }  
 386   7                                  }
 387   6                                  else
 388   6                                  {
 389   7                                      switch(ComDataBuf[10])
 390   7                                    {
 391   8                                        case  0x11: //写时间
 392   8                                                    TimeChk(ComDataBuf[16],ComDataBuf[17]);
 393   8                                                    if(TimeOk);
 394   8                                                    {
 395   9                                                        CmdSave(0x64,16,0x00,3,1);
 396   9                                                        TimeOk=0;
 397   9                                                    }                                                      
 398   8                                        break;
 399   8                                    } 
 400   7                                  }                                         
 401   6                        break;
 402   6                        case 0x0f:  //修改编程密码
 403   6                                                                if(ComDataBuf[14]==0x01)
 404   6                                                                {
 405   7                                                                        CmdSave(0xa0,15,0x4c,4,0);//修改编程密码
 406   7                                                                }
 407   6                                                                else if(ComDataBuf[14]==0x00)
 408   6                                                                {
 409   7                                                                        CmdSave(0xa0,15,0x50,4,0);//修改清令密码
 410   7                                                                }
 411   6                        break;
 412   6                                        case 0x1f:  //电表总清零
 413   6                                                                if(ComDataBuf[9]==0x04)
 414   6                                                                {
 415   7                                                                        ClerData();
 416   7                                                                }
 417   6                        break;
 418   6                      } 
 419   5                      TimeSendFg=1;
 420   5                  }
 421   4                  //否则判断是否是广播命令
C51 COMPILER V7.10   CMDPARSE                                                              02/03/2005 10:45:39 PAGE 8   

 422   4                  else
 423   4                  {
 424   5                    IdRight=0;
 425   5                    for(i=0;i<6;i++)
 426   5                    {
 427   6                                   if(ComDataBuf[1+i]==0x99)
 428   6                       {
 429   7                         IdRight=0x55;
 430   7                       }
 431   6                       else
 432   6                       {
 433   7                         IdRight=0x00;
 434   7                         break;
 435   7                       }
 436   6                       j++;
 437   6                    }
 438   5                    //如果是广播命令开始解析
 439   5                    if(IdRight==0x55)
 440   5                    {                         
 441   6                                      switch(ComDataBuf[8])
 442   6                      {
 443   7                          case 0x08:  //广播校时
 444   7                                     CmdSave(0x64,15,0x00,3,1);//设置时间
 445   7                          break;  
 446   7                                              case 0x0a:  //广播地址
 447   7                                     CmdSave(0x64,15,0x00,3,1);//设置时间
 448   7                          break;  
 449   7                      }
 450   6                      TimeSendFg=1;
 451   6                    }
 452   5                                else
 453   5                                {
 454   6                                        ClerBuf();
 455   6                                        SendOverFg=1;
 456   6                                }
 457   5                    CmdParseFg=0;
 458   5                  }
 459   4                }
 460   3                else
 461   3                {
 462   4                  CmdParseFg=0;
 463   4                }
 464   3             }
 465   2              }       
 466   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1964    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      27
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       4
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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