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

📄 process.lst

📁 湖北水文信息系统水位雨量采集器的C51源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 748   2                              R_block(WPAGE3,RPAGE3,i2c_addr,&cr_cd[0][0],110);               
 749   2              } 
 750   1              cr_cd[0][0]&=0x7f;
 751   1               
 752   1              SenBuf[5]=(RecBuf[5]|0x80);  
 753   1               
 754   1              SenBuf[6]=0;
 755   1               
 756   1              for(i=0;i<11;i++)
 757   1              {
 758   2                              if((cr_cd[i][5]==0x00)&&(cr_cd[i][6]==0x00)&&(cr_cd[i][7]==0x00)
 759   2                                                                &&(cr_cd[i][8]==0x00)&&(cr_cd[i][9]==0x00))
 760   2                              {
 761   3                                              continue;
 762   3                              }
 763   2                              else
 764   2                              {
 765   3                                              for(j=0;j<10;j++)
 766   3                              {               
 767   4                                                              SenBuf[9+j+10*k]=cr_cd[i][j];
 768   4                                              }
 769   3                                              k++;
 770   3                                              SenBuf[6]+=10;
 771   3                              }
 772   2              }
 773   1               
 774   1              SenBuf[7]=(char)(k/10)+0x30;
 775   1              SenBuf[8]=(char)(k%10)+0x30;
 776   1              SenBuf[6]+=2;
 777   1      
 778   1              for(i=0;i<SenBuf[6]+7;i++)
 779   1                              cs+=SenBuf[i];
 780   1            
 781   1              SenBuf[SenBuf[6]+7]=cs;
 782   1              SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
 783   1              Senlen=SenBuf[6]+9;
 784   1               
 785   1              return 1;
 786   1      }
 787          
 788          
 789          
 790          
 791          /*******************************************************************
 792                               初始化配置函数               
 793          函数原型: 
 794          功  能:       
 795            
 796          ********************************************************************/
 797          char Wr_i2c(void)
 798          {
 799   1              unsigned char i;
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 14  

 800   1              unsigned char xdata init[128];
 801   1              unsigned char page;
 802   1              
 803   1              for(i=0;i<sizeof(init);i++)
 804   1        {
 805   2                      init[i]=0xff;
 806   2              }       
 807   1        
 808   1        switch(RecBuf[7])
 809   1        {
 810   2              case  0 : page=WPAGE0;break;
 811   2              case  1 : page=WPAGE1;break;
 812   2              case  2 : page=WPAGE2;break;
 813   2              case  3 : page=WPAGE3;break;
 814   2              case  4 : page=WPAGE4;break;
 815   2              case  5 : page=WPAGE5;break;
 816   2              case  6 : page=WPAGE6;break;
 817   2              case  7 : page=WPAGE7;break;
 818   2              
 819   2        }       
 820   1              W_block(page,i2c_addr_rainfall,init,sizeof(init));
 821   1              
 822   1        cl_ack_ct(RecBuf[5],RecBuf[3],1);
 823   1              return 1;
 824   1      }
 825          
 826          
 827          
 828          /*******************************************************************
 829                               读配置函数               
 830          函数原型:
 831          功  能:       
 832            
 833          ********************************************************************/
 834          char Rd_i2c(void)
 835          {
 836   1                      uchar i;
 837   1                      unsigned char wpage,rpage;       
 838   1                      unsigned char xdata init[128];          
 839   1                      
 840   1                      switch(RecBuf[7])
 841   1              {
 842   2                      case  0 : wpage=WPAGE0;rpage=RPAGE0;break;
 843   2                      case  1 : wpage=WPAGE1;rpage=RPAGE1;break;
 844   2                      case  2 : wpage=WPAGE2;rpage=RPAGE2;break;
 845   2                      case  3 : wpage=WPAGE3;rpage=RPAGE3;break;
 846   2                      case  4 : wpage=WPAGE4;rpage=RPAGE4;break;
 847   2                      case  5 : wpage=WPAGE5;rpage=RPAGE5;break;
 848   2                      case  6 : wpage=WPAGE6;rpage=RPAGE6;break;
 849   2                      case  7 : wpage=WPAGE7;rpage=RPAGE7;break;
 850   2              }
 851   1               
 852   1                      R_block(wpage,rpage,i2c_addr_rainfall,init,sizeof(init));               
 853   1      
 854   1                      for(i=0;i<sizeof(init);i++)
 855   1          {           
 856   2                                      SenBuf[i]=init[i];
 857   2                      }
 858   1      
 859   1                      Senlen=sizeof(init);
 860   1               
 861   1                      return 1;
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 15  

 862   1      }
 863          
 864          /*******************************************************************
 865                               时间同步函数               
 866          函数原型: char Set_time(void)
 867          功  能:       
 868            
 869          ********************************************************************/
 870          char Set_time(void)
 871          {
 872   1              unsigned int set_time;
 873   1              unsigned char i;
 874   1              
 875   1              if((RecBuf[7]>=0x30)&&(RecBuf[7]<0x33)&&
 876   1                      (RecBuf[8]>=0x30)&&(RecBuf[8]<=0x39)&&
 877   1                      (RecBuf[9]>=0x30)&&(RecBuf[9]<=0x39))
 878   1        {             
 879   2                              set_time=CHAR_TO_INT(&RecBuf[7],3);
 880   2                      
 881   2                              level_1min=(set_time%60)*50;  //水位采集上报秒间隔定时20ms
 882   2                              rain_1min=(set_time%60)*50;   //雨量采集上报秒间隔
 883   2              
 884   2                              r_time=set_time/60;      //雨量采集上报间隔
 885   2                              l_time=set_time/60;      //水位采集上报间隔
 886   2                              
 887   2                              rfcd_1min=(set_time%60)*1000;   //雨量秒间隔
 888   2                              
 889   2                              save_time=set_time/60;   //雨量存储间隔
 890   2                              
 891   2                              for(i=0;i<11;i++)
 892   2                                      rfcd_time[i]=set_time/60;//雨量采集加报间隔定时1ms
 893   2              
 894   2                              cl_ack_ct(RecBuf[5],RecBuf[3],1);
 895   2              }
 896   1              else
 897   1              {
 898   2                              cl_ack_ct(RecBuf[5],RecBuf[3],0); 
 899   2              }
 900   1              return 1;
 901   1      }
 902          
 903          
 904          /*******************************************************************
 905                               处理函数               
 906          函数原型: void process(void)
 907          功  能:       
 908            
 909          ********************************************************************/
 910          char process(void) 
 911          {       
 912   1              char flag=0;
 913   1              
 914   1              if(r_end)
 915   1        {
 916   2                      cs=0;
 917   2                      SenBuf[0]=FRAME_START_CHAR;
 918   2                      SenBuf[1]=add[0];
 919   2                      SenBuf[2]=add[1];       
 920   2                      SenBuf[4]=FRAME_START_CHAR;
 921   2              
 922   2                      switch(fc_flag)
 923   2                      {
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 16  

 924   3                              case 0x02 : 
 925   3                                                                      flag=Rd_collect();
 926   3                                                                      break;
 927   3      
 928   3                              case 0x04 :                             
 929   3                                                                      flag=Wr_cfg();                                                          
 930   3                                                                      break;          
 931   3      
 932   3                              case 0x05 :                        
 933   3                                                                      flag=Rd_cfg();
 934   3                                                                      break;  
 935   3      
 936   3                              case 0x06 :                     
 937   3                                                                      flag=Wr_Conditions();                                                                                                                           
 938   3                                                                      break;
 939   3      
 940   3                              case 0x07 :                     
 941   3                                                                      flag=Rd_Conditions();                                                           
 942   3                                                                      break;
 943   3                                                                              
 944   3                              case 0x0a :                     
 945   3                                                                      flag=config_basic_waterlevel();                                                         
 946   3                                                                      break;  
 947   3                              
 948   3                              case 0x0b :
 949   3                                                                      flag=Set_time();                                                                
 950   3                                                                      break;  
 951   3                              
 952   3                              case 0x0c :
 953   3                                                                      flag=config_Multiplier_rainfall();                                                              
 954   3                                                                      break;                                                          
 955   3                                                                                      
 956   3                              case 0x00 :                     
 957   3                                                                      flag=Wr_i2c();                                                                                                                          
 958   3                                                                      break;
 959   3      
 960   3                              case 0x01 :                     
 961   3                                                                      flag=Rd_i2c();                                                          
 962   3                                                                      break;  
 963   3      
 964   3                              default:                                                                                               
 965   3                      break;
 966   3                      }
 967   2                      rec_lamp=!rec_lamp;
 968   2        }  
 969   1        
 970   1        if(flag)
 971   1        {                     
 972   2                      r_end=0;
 973   2                      s_end=0;
 974   2                      p_end=1;                                        
 975   2                      con_485=S_CON;
 976   2                      TI=1;
 977   2                      send_lamp=!send_lamp;
 978   2                      return 1 ;
 979   2        }
 980   1              
 981   1        return 0 ;
 982   1      }
 983          
 984          

C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 17  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   4994    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    270     633
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12      42
   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 + -