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

📄 process.lst

📁 用于GPRS远程电力抄表系统中采集器端的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 487   2                              if((delay_25ms>=28)&&(delay_25ms<=32))
 488   2                              {
C51 COMPILER V7.50   PROCESS                                                               07/19/2006 10:05:14 PAGE 9   

 489   3                                      if(maskdisp==0x00)
 490   3                                      {
 491   4                                      P0=0;
 492   4                                              state=1;
 493   4                                              maskdisp=1;
 494   4                                          break;      
 495   4                                      }
 496   3      
 497   3                                      delay_25ms=33;
 498   3                                      if (bwary[0]&maskdisp)  P0 =maskdisp;
 499   3                                      else P0=0;
 500   3                                          
 501   3                                      maskdisp <<=1;
 502   3      
 503   3                              }
 504   2                 else  if(delay_25ms>=100)    P0=0;     ////////zjs added on 20060711
 505   2                              
 506   2                                                              
 507   2                              break;
 508   2      
 509   2      
 510   2      
 511   2                      case  1:
 512   2                              if((delay_25ms>=28)&&(delay_25ms<=32))
 513   2                              {
 514   3                                      if(maskdisp==0x00)
 515   3                                      {
 516   4                                      P2=0;
 517   4                                              state=0;
 518   4                                              maskdisp=1;
 519   4                                              break;  
 520   4                                      }
 521   3      
 522   3                                      delay_25ms=33;
 523   3                                      if (bwary[1]&maskdisp)  P2 =maskdisp;
 524   3                                      else P2=0;
 525   3                                          
 526   3                                      maskdisp <<=1;
 527   3                              
 528   3                              }
 529   2                              else  if(delay_25ms>=100)       P2=0;     ////////zjs added on 20060711
 530   2      
 531   2                          break;
 532   2                      }       
 533   1      }
 534          /*******************************************************************
 535                               写端口函数               
 536          函数原型: void Wr_port()
 537          功  能:       
 538            
 539          ********************************************************************/
 540          
 541          void Wr_port()
 542          { 
 543   1              static uchar wport_flag=0;
 544   1              uchar wport_end;
 545   1      
 546   1              switch(wport_flag)
 547   1          {
 548   2                      case 0: 
 549   2                              W_block(WPAGE0,i2c_addr_io,bwary,2);
 550   2                          wport_end=1;
C51 COMPILER V7.50   PROCESS                                                               07/19/2006 10:05:14 PAGE 10  

 551   2                          W_block(WPAGE0,i2c_addr_portflag,&wport_end,1);  
 552   2                          wport_flag=1;
 553   2                          break;
 554   2               case 1: 
 555   2                  W_block(WPAGE1,i2c_addr_io,bwary,2);
 556   2                          wport_end=0;
 557   2                          W_block(WPAGE0,i2c_addr_portflag,&wport_end,1); 
 558   2                          wport_flag=0; 
 559   2                          break;
 560   2              }
 561   1      
 562   1              SenBuf[5]=(RecBuf[5]|0x80);
 563   1          cs+=SenBuf[5];
 564   1          SenBuf[6]=0;
 565   1          SenBuf[SenBuf[6]+7]=cs;
 566   1              SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
 567   1              Senlen=SenBuf[6]+9;
 568   1      }
 569          
 570          /*******************************************************************
 571                               读端口函数               
 572          函数原型: void  Rd_port(void)
 573          功  能:       
 574            
 575          ********************************************************************/
 576          
 577          void  Rd_port(void)
 578          {
 579   1          register uchar k;
 580   1      
 581   1              brary00=bwary07;
 582   1              brary01=bwary06;
 583   1              brary02=bwary05;
 584   1              brary03=bwary04;
 585   1              brary04=bwary03;
 586   1              brary05=bwary02;
 587   1              brary06=bwary01;
 588   1              brary07=bwary00;
 589   1              brary10=bwary17;
 590   1              brary11=bwary16;
 591   1              brary12=bwary15;
 592   1              brary13=bwary14;
 593   1              brary14=bwary13;
 594   1              brary15=bwary12;
 595   1              brary16=bwary11;
 596   1              brary17=bwary10;
 597   1      
 598   1          SenBuf[7]=brary[0];
 599   1              SenBuf[8]=brary[1];
 600   1          SenBuf[5]=(RecBuf[5]|0x80);
 601   1          cs+=SenBuf[5];
 602   1          SenBuf[6]=2;
 603   1          cs+=SenBuf[6];
 604   1            
 605   1          for(k=0;k<2;k++)
 606   1                      cs+=SenBuf[k+7];
 607   1             
 608   1          SenBuf[SenBuf[6]+7]=cs;
 609   1          SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
 610   1          Senlen=SenBuf[6]+9;
 611   1      }
 612          
C51 COMPILER V7.50   PROCESS                                                               07/19/2006 10:05:14 PAGE 11  

 613          /*******************************************************************
 614                               读累加数据函数               
 615          函数原型: void Radd_data()
 616          功  能:       
 617            
 618          ********************************************************************/
 619          void Radd_data(void)
 620          {
 621   1              register uchar i,j;
 622   1         
 623   1          SenBuf[5]=(RecBuf[5]|0x80);
 624   1          cs+=SenBuf[5];
 625   1      
 626   1              SenBuf[6]=RecBuf[7]*6;
 627   1              for(i=0;i<RecBuf[7];i++)
 628   1                      for(j=0;j<6;j++)
 629   1                              SenBuf[j+7+i*6]=sum[i][j];
 630   1      
 631   1          for(i=0;i<SenBuf[6];i++)
 632   1                      cs+=SenBuf[7+i];               
 633   1              cs+=SenBuf[6];
 634   1              SenBuf[7+SenBuf[6]]=cs;
 635   1              SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
 636   1              Senlen=SenBuf[6]+9;
 637   1             
 638   1      }
 639          
 640          /*******************************************************************
 641                               轮询一周结束函数               
 642          函数原型: void Cyc_end()
 643          功  能:       
 644            
 645          ********************************************************************/
 646          void Cyc_end()
 647          {
 648   1              
 649   1              if(CycleFlag)
 650   1              {
 651   2                      CycleFlag=0;
 652   2                      CheckInFlag=0;  
 653   2              }
 654   1              else
 655   1                      CheckInFlag=1; //注册标志
 656   1      
 657   1              FreezeClass=RecBuf[7];
 658   1      
 659   1      
 660   1                              
 661   1      }
 662          
 663          /*******************************************************************
 664                               设置时段冻结函数               
 665          函数原型: void S_time(void)
 666          功  能:       
 667            
 668          ********************************************************************/
 669          void S_time(void)
 670          {
 671   1              uchar freezetime_end=0;
 672   1              static freezetime_flag;
 673   1      //      for(i=0;i<16;i++)
 674   1      //              for(j=0;j<6;j++)
C51 COMPILER V7.50   PROCESS                                                               07/19/2006 10:05:14 PAGE 12  

 675   1      //                      FreezeData[j+i*6]=freezesum[i][j];
 676   1      
 677   1              switch(freezetime_flag)
 678   1              {
 679   2                      case 0: 
 680   2                              W_block(WPAGE0,i2c_time_freeze,&freezesum[0][0],96);
 681   2                              freezetime_end=1; 
 682   2                              W_block(WPAGE0,i2c_time_flag,&freezetime_end,1);
 683   2                              freezetime_flag=1;
 684   2                              break;
 685   2                      case 1: 
 686   2                              W_block(WPAGE1,i2c_time_freeze,&freezesum[0][0],96);
 687   2                              freezetime_end=0;
 688   2                              W_block(WPAGE0,i2c_time_flag,&freezetime_end,1);
 689   2                              freezetime_flag=0; 
 690   2                              break;
 691   2              }
 692   1      
 693   1      }
 694          /*******************************************************************
 695                               抄收时段冻结数据函数               
 696          函数原型: void R_time(void)
 697          功  能:       
 698            
 699          ********************************************************************/
 700          void R_time()
 701          {
 702   1              register uchar i,j;
 703   1         
 704   1          SenBuf[5]=(RecBuf[5]|0x80);
 705   1          cs+=SenBuf[5];
 706   1      
 707   1              SenBuf[6]=RecBuf[7]*6;
 708   1              for(i=0;i<RecBuf[7];i++)
 709   1                      for(j=0;j<6;j++)
 710   1                              SenBuf[j+7+i*6]=freezesum[i][j];
 711   1      /*
 712   1              SenBuf[6]=RecBuf[7]*6;
 713   1              for(i=0;i<SenBuf[6];i++)
 714   1              {
 715   1                              SenBuf[7+i]=FreezeData[i];
 716   1                              cs+=SenBuf[7+i];
 717   1              } 
 718   1      */  
 719   1              for(i=0;i<SenBuf[6];i++)
 720   1                      cs+=SenBuf[7+i];            
 721   1              cs+=SenBuf[6];
 722   1              SenBuf[7+SenBuf[6]]=cs;
 723   1              SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
 724   1              Senlen=SenBuf[6]+9;
 725   1      }
 726          
 727          /*******************************************************************
 728                               设置日冻结函数               
 729          函数原型: void S_day(void)
 730          功  能:       
 731            
 732          ********************************************************************/
 733          void S_day(void)

⌨️ 快捷键说明

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