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

📄 process.lst

📁 湖北水文信息系统水位雨量采集器的C51源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 496   1              {
 497   2                                      cr_cfg[i]=0;
 498   2                                      new_cfg[i]=0;
 499   2              }
 500   1              
 501   1              if((RecBuf[7]>=0x30)&&(RecBuf[7]<=0x39)&&
 502   1                      (RecBuf[8]>=0x30)&&(RecBuf[8]<=0x39)&&
 503   1                      (RecBuf[9]>=0x30)&&(RecBuf[9]<=0x39))
 504   1        {
 505   2      
 506   2                      /*-----------设置最小采集时间---------------*/
 507   2                      if((RecBuf[7]<=0x30)&&(RecBuf[8]<=0x30)&&(RecBuf[9]<0x31))
 508   2                      {
 509   3                                      RecBuf[7]=0x30;
 510   3                                      RecBuf[8]=0x30;
 511   3                                      RecBuf[9]=0x31;
 512   3                      }
 513   2                      else if((RecBuf[7]>=0x37)&&(RecBuf[8]>=0x32)&&(RecBuf[9]>=0x30))        
 514   2                      {
 515   3                                      RecBuf[7]=0x37;
 516   3                                      RecBuf[8]=0x32;
 517   3                                      RecBuf[9]=0x30;
 518   3                      }//-----------设置最大采集时间---------------//         
 519   2              
 520   2                      switch(RecBuf[3])
 521   2                      {
 522   3                               case 1 : 
 523   3                                                                      i2c_addr=i2c_addr_rainconfig;
 524   3                                                                      for(i=0;i<3;i++)
 525   3                                                                      cr_cfg[i]=RecBuf[7+i];  
 526   3                               
 527   3                                                                      /*-----------更改雨量采集时间---------------*/
 528   3                                              rain_cfg=CHAR_TO_INT(cr_cfg,3);                         
 529   3                                                                      break;
 530   3      
 531   3                               case 2 :                                                                               
 532   3                                                                      i2c_addr=i2c_addr_levelconfig;                          
 533   3                                                                      for(i=0;i<3;i++)
 534   3                                                              cr_cfg[i]=RecBuf[7+i];  
 535   3      
 536   3                                                                      /*-----------更改水位采集时间---------------*/
 537   3                                              level_cfg=CHAR_TO_INT(cr_cfg,3);                                                                                
 538   3                                                                      break;  
 539   3                      }       
 540   2      
 541   2         /*-----------查找当前值并写入修改后的值---------------*/
 542   2          R_block(WPAGE0,RPAGE0,i2c_addr,cr_cfg,3);    
 543   2          if((cr_cfg[0]&0x80)==0x80)
 544   2          {
 545   3                      for(i=0;i<3;i++)
 546   3                                      new_cfg[i]=RecBuf[7+i];         
 547   3                      new_cfg[0]|=0x80;       
 548   3                              W_block(WPAGE1,i2c_addr,new_cfg,3);
 549   3                                      wait_1ms();
 550   3      
 551   3                                      cr_cfg[0]&=0x7f;
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 10  

 552   3                                      W_block(WPAGE0,i2c_addr,cr_cfg,3);
 553   3          }
 554   2          else
 555   2          {
 556   3                      for(i=0;i<3;i++)
 557   3                                      new_cfg[i]=RecBuf[7+i]; 
 558   3                      new_cfg[0]|=0x80;       
 559   3                              W_block(WPAGE0,i2c_addr,new_cfg,3);
 560   3                                      wait_1ms();
 561   3      
 562   3                                      R_block(WPAGE1,RPAGE1,i2c_addr,cr_cfg,3);                               
 563   3                                      cr_cfg[0]&=0x7f;
 564   3                                      W_block(WPAGE1,i2c_addr,cr_cfg,3);
 565   3          }
 566   2          cl_ack_ct(RecBuf[5],RecBuf[3],1);
 567   2        }
 568   1              return 1;
 569   1      }
 570          
 571          
 572          
 573          /*******************************************************************
 574                               读配置函数               
 575          函数原型:char Rd_cfg(void)
 576          功  能:       
 577            
 578          ********************************************************************/
 579          char Rd_cfg(void)
 580          {
 581   1              uchar i;
 582   1              uchar cr_cfg[3];
 583   1              cs=0;
 584   1               
 585   1              switch(RecBuf[3])
 586   1              {
 587   2                case 1 : 
 588   2                                      i2c_addr=i2c_addr_rainconfig;
 589   2                                      SenBuf[3]=0x01;                         
 590   2                                      break;
 591   2                case 2 :                              
 592   2                                      i2c_addr=i2c_addr_levelconfig;
 593   2                              SenBuf[3]=0x02;                                                                                         
 594   2                                      break;  
 595   2              }
 596   1      
 597   1              /*-----------查找当前值---------------*/ 
 598   1              R_block(WPAGE0,RPAGE0,i2c_addr,cr_cfg,3);        
 599   1              if((cr_cfg[0]&0x80)!=0x80)
 600   1              {   
 601   2                      R_block(WPAGE1,RPAGE1,i2c_addr,cr_cfg,3);               
 602   2              }        
 603   1              cr_cfg[0]&=0x7f;
 604   1               
 605   1              SenBuf[5]=(RecBuf[5]|0x80);    
 606   1              SenBuf[6]=0x03;
 607   1               
 608   1              strncpy(&SenBuf[7],cr_cfg,3); 
 609   1              
 610   1              for(i=0;i<SenBuf[6]+7;i++)
 611   1                              cs+=SenBuf[i];
 612   1            
 613   1              SenBuf[SenBuf[6]+7]=cs;
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 11  

 614   1              SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
 615   1              Senlen=SenBuf[6]+9;
 616   1               
 617   1              return 1;
 618   1      }
 619          
 620          
 621          /*******************************************************************
 622                               写配置条件函数               
 623          函数原型: char Wr_Conditions(void)
 624          功  能:       
 625            
 626          ********************************************************************/
 627          char Wr_Conditions(void)
 628          {
 629   1              unsigned char i,j;
 630   1              unsigned char xdata cd_cfg[11][10],new_cd[11][10];
 631   1              
 632   1              cs=0;
 633   1      
 634   1              for(i=0;i<11;i++)
 635   1              for(j=0;j<10;j++)
 636   1        {
 637   2                      cd_cfg[i][j]=0x00;
 638   2                              new_cd[i][j]=0x00;
 639   2              }
 640   1      
 641   1              for(i=0;i<RecBuf[6]/10;i++)
 642   1              for(j=0;j<10;j++)
 643   1        {
 644   2                                      new_cd[i][j]=RecBuf[9+j+10*i];
 645   2              }
 646   1      
 647   1              
 648   1              switch(RecBuf[3])
 649   1              {
 650   2                case 1 :                                                      
 651   2                                       i2c_addr=i2c_addr_rnct;
 652   2                                       for(i=0;i<11;i++)
 653   2                               {
 654   3                                                      rain_cd[i].cd_time=0;
 655   3                                                              rain_cd[i].cd_data=0;
 656   3                                       }                               
 657   2                                       //-----------更改雨量门限---------------//
 658   2                                       for(i=0;i<11;i++)
 659   2                                       {
 660   3                                                              rain_cd[i].cd_time=CHAR_TO_LONG(&new_cd[i][0],4);
 661   3                                                              rain_cd[i].cd_data=CHAR_TO_LONG(&new_cd[i][4],6);
 662   3                                       }                              
 663   2                                       new_cfg=1;
 664   2                                       break;                          
 665   2      
 666   2                case 2 :      
 667   2                              i2c_addr=i2c_addr_lvct;
 668   2                                      for(i=0;i<11;i++)
 669   2                              {
 670   3                                              level_cd[i].cd_time=0;
 671   3                                                      level_cd[i].cd_data=0;
 672   3                                      }                                       
 673   2                                  //-----------更改水位门限---------------//
 674   2                                for(i=0;i<11;i++)
 675   2                                      {
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 12  

 676   3                                                              level_cd[i].cd_time=CHAR_TO_LONG(&new_cd[i][0],4);
 677   3                                                              level_cd[i].cd_data=CHAR_TO_LONG(&new_cd[i][4],6);
 678   3                                      }
 679   2                                      new_cfg=2;      
 680   2                                      break;
 681   2                                      
 682   2              }
 683   1               
 684   1               //-----------查找当前值并写入修改后的值---------------//     
 685   1               R_block(WPAGE2,RPAGE2,i2c_addr,&cd_cfg[0][0],110); 
 686   1         if((cd_cfg[0][0]&0x80)==0x80)
 687   1         {                            
 688   2                      new_cd[0][0]|=0x80;
 689   2              
 690   2                              W_block(WPAGE3,i2c_addr,&new_cd[0][0],110);
 691   2                                      wait_1ms();
 692   2                                      cd_cfg[0][0]&=0x7f;
 693   2                                      W_block(WPAGE2,i2c_addr,&cd_cfg[0][0],110);
 694   2         }
 695   1         else
 696   1         {
 697   2                      new_cd[0][0]|=0x80;
 698   2              
 699   2                              W_block(WPAGE2,i2c_addr,&new_cd[0][0],110);
 700   2                                      wait_1ms();
 701   2                                      R_block(WPAGE3,RPAGE3,i2c_addr,&cd_cfg[0][0],110);                              
 702   2                                      cd_cfg[0][0]&=0x7f;
 703   2                                      W_block(WPAGE3,i2c_addr,&cd_cfg[0][0],110);
 704   2         }  
 705   1         cl_ack_ct(RecBuf[5],RecBuf[3],1);
 706   1               return 1;
 707   1      }
 708          
 709          
 710          
 711          /*******************************************************************
 712                               读配置条件函数               
 713          函数原型:char Rd_Conditions(void)
 714          功  能:       
 715            
 716          ********************************************************************/
 717          char Rd_Conditions(void)
 718          {
 719   1              uchar i,j;
 720   1              int k=0;
 721   1              unsigned char xdata cr_cd[11][10];
 722   1               
 723   1              cs=0;
 724   1      
 725   1              for(i=0;i<11;i++)
 726   1              for(j=0;j<10;j++)
 727   1        {
 728   2                              cr_cd[i][j]=0x00;
 729   2              }
 730   1      
 731   1              switch(RecBuf[3])
 732   1              {
 733   2                case 1 : 
 734   2                                              i2c_addr=i2c_addr_rnct;
 735   2                                              SenBuf[3]=0x01;                         
 736   2                                              break;
 737   2                case 2 :                              
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 13  

 738   2                                              i2c_addr=i2c_addr_lvct;
 739   2                                      SenBuf[3]=0x02;                                                                                         
 740   2                                              break;  
 741   2              }
 742   1               
 743   1              R_block(WPAGE2,RPAGE2,i2c_addr,&cr_cd[0][0],110); 
 744   1              wait_1ms();
 745   1      
 746   1              if((cr_cd[0][0]&0x80)!=0x80)
 747   1              {   

⌨️ 快捷键说明

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