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

📄 process.lst

📁 用于GPRS远程电力抄表系统中采集器端的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 734          {
 735   1      //      register uchar i,j;
 736   1              uchar freezeday_end=0;
C51 COMPILER V7.50   PROCESS                                                               07/19/2006 10:05:14 PAGE 13  

 737   1              static freezeday_flag;
 738   1      //      for(i=0;i<16;i++)
 739   1      //              for(j=0;j<6;j++)
 740   1      //                      FreezeData[j+i*6]=sum[i][j];
 741   1      
 742   1              switch(freezeday_flag)
 743   1              {
 744   2                      case 0: 
 745   2                              W_block(WPAGE2,i2c_day_freeze,&sum[0][0],96);
 746   2                              freezeday_end=1; 
 747   2                              W_block(WPAGE0,i2c_day_flag,&freezeday_end,1);
 748   2                              freezeday_flag=1;
 749   2                              break;
 750   2                      case 1: 
 751   2                              W_block(WPAGE3,i2c_day_freeze,&sum[0][0],96);
 752   2                              freezeday_end=0;
 753   2                              W_block(WPAGE0,i2c_day_flag,&freezeday_end,1);
 754   2                              freezeday_flag=0; 
 755   2                              break;
 756   2              }
 757   1      
 758   1      }
 759          
 760          /*******************************************************************
 761                               抄收日冻结数据函数               
 762          函数原型: void R_day(void)
 763          功  能:       
 764            
 765          ********************************************************************/
 766          void R_day()
 767          {
 768   1              register uchar i;
 769   1         
 770   1          SenBuf[5]=(RecBuf[5]|0x80);
 771   1          cs+=SenBuf[5];
 772   1      
 773   1              SenBuf[6]=RecBuf[7]*6;
 774   1              for(i=0;i<SenBuf[6];i++)
 775   1              {
 776   2                              SenBuf[7+i]=FreezeData[i];
 777   2                              cs+=SenBuf[7+i];
 778   2              }               
 779   1              cs+=SenBuf[6];
 780   1              SenBuf[7+SenBuf[6]]=cs;
 781   1              SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
 782   1              Senlen=SenBuf[6]+9;
 783   1      }
 784          
 785          /*******************************************************************
 786                               设置月冻结函数               
 787          函数原型: void S_month(void)
 788          功  能:       
 789            
 790          ********************************************************************/
 791          void S_month(void)
 792          {
 793   1      //      register uchar i,j;
 794   1              uchar freezemonth_end=0;
 795   1              static freezemonth_flag;
 796   1      //      for(i=0;i<16;i++)
 797   1      //              for(j=0;j<6;j++)
 798   1      //                      FreezeData[j+i*6]=sum[i][j];
C51 COMPILER V7.50   PROCESS                                                               07/19/2006 10:05:14 PAGE 14  

 799   1      
 800   1              switch(freezemonth_flag)
 801   1              {
 802   2                      case 0: 
 803   2                              W_block(WPAGE2,i2c_month_freeze,&sum[0][0],96);
 804   2                              freezemonth_end=1; 
 805   2                              W_block(WPAGE0,i2c_month_flag,&freezemonth_end,1);
 806   2                              freezemonth_flag=1;
 807   2                              break;
 808   2                      case 1: 
 809   2                              W_block(WPAGE3,i2c_month_freeze,&sum[0][0],96);
 810   2                              freezemonth_end=0;
 811   2                              W_block(WPAGE0,i2c_month_flag,&freezemonth_end,1);
 812   2                              freezemonth_flag=0; 
 813   2                              break;
 814   2              }
 815   1      
 816   1      }
 817          
 818          /*******************************************************************
 819                               抄收月冻结数据函数               
 820          函数原型: void R_month(void)
 821          功  能:       
 822            
 823          ********************************************************************/
 824          void R_month()
 825          {
 826   1              register uchar i;
 827   1         
 828   1          SenBuf[5]=(RecBuf[5]|0x80);
 829   1          cs+=SenBuf[5];
 830   1      
 831   1              SenBuf[6]=RecBuf[7]*6;
 832   1              for(i=0;i<SenBuf[6];i++)
 833   1              {
 834   2                              SenBuf[7+i]=FreezeData[i];
 835   2                              cs+=SenBuf[7+i];
 836   2              }               
 837   1              cs+=SenBuf[6];
 838   1              SenBuf[7+SenBuf[6]]=cs;
 839   1              SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
 840   1              Senlen=SenBuf[6]+9;
 841   1      }
 842          
 843          /*******************************************************************
 844                               突发告警上报函数               
 845          函数原型: void Br_report(void)
 846          功  能:       
 847            
 848          ********************************************************************/
 849          /*
 850          void Br_report()
 851          {
 852                  register uchar i;
 853                  SenBuf[5]=(RecBuf[5]|0x80);
 854              cs+=SenBuf[5];
 855              SenBuf[6]=4;
 856              cs+=SenBuf[6];
 857              SenBuf[7]=alarm0;
 858              SenBuf[8]=alarm1;
 859              SenBuf[9]=alarm2;
 860              SenBuf[10]=alarm3;
C51 COMPILER V7.50   PROCESS                                                               07/19/2006 10:05:14 PAGE 15  

 861                  for(i=0;i<4;i++)
 862                          cs+=SenBuf[7+i];
 863                  SenBuf[SenBuf[6]+7]=cs;
 864              SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
 865              Senlen=SenBuf[6]+9;
 866          
 867          }
 868          */
 869          /*******************************************************************
 870                               地址上报函数               
 871          函数原型: void Ad_report(void)
 872          功  能:       
 873            
 874          ********************************************************************/
 875          void Ad_report()
 876          {
 877   1              SenBuf[5]=(RecBuf[5]|0x80);
 878   1          cs+=SenBuf[5];
 879   1          SenBuf[6]=0;
 880   1              SenBuf[SenBuf[6]+7]=cs;
 881   1          SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
 882   1          Senlen=SenBuf[6]+9;
 883   1      
 884   1      }
 885          
 886          /*******************************************************************
 887                               轮询告警上报函数               
 888          函数原型: void Gb_report(void)
 889          功  能:       
 890            
 891          ********************************************************************/
 892          void Gb_report()
 893          {
 894   1          register uchar i;
 895   1              SenBuf[5]=(RecBuf[5]|0x80);
 896   1          cs+=SenBuf[5];
 897   1          SenBuf[6]=4;
 898   1          cs+=SenBuf[6];
 899   1          SenBuf[7]=alarm0;
 900   1          SenBuf[8]=alarm1;
 901   1          SenBuf[9]=alarm2;
 902   1          SenBuf[10]=alarm3;
 903   1              for(i=0;i<4;i++)
 904   1                      cs+=SenBuf[7+i];
 905   1              SenBuf[SenBuf[6]+7]=cs;
 906   1          SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
 907   1          Senlen=SenBuf[6]+9;
 908   1      
 909   1      }
 910          /*******************************************************************
 911                               校时函数               
 912          函数原型: void ch_Datetime(void)
 913          功  能:       
 914            
 915          ********************************************************************/
 916          
 917          void ch_Datetime()
 918          {
 919   1      //      static uchar time_flag=0;
 920   1      //      register uchar time_end;
 921   1              register i;
 922   1      /*                      
C51 COMPILER V7.50   PROCESS                                                               07/19/2006 10:05:14 PAGE 16  

 923   1              R_block(WPAGE0,RPAGE0,i2c_addr_timeflag,&time_end,1);                            
 924   1              if(time_end==1)
 925   1                      R_block(WPAGE0,RPAGE0,i2c_addr_time,inittime,6); 
 926   1              else
 927   1                      R_block(WPAGE1,RPAGE1,i2c_addr_time,inittime,6); 
 928   1      */
 929   1              for(i=0;i<6;i++)
 930   1              {
 931   2                      RecBuf[7+i]=((RecBuf[7+i]/10)*16)+(RecBuf[7+i]%10);
 932   2                      inittime[i]=RecBuf[7+i];
 933   2              }
 934   1              ds1302set();
 935   1              
 936   1      }
 937          
 938          /*******************************************************************
 939                               系统初始化函数               
 940          函数原型: void Sys_init(void)
 941          功  能:       
 942            
 943          ********************************************************************/           
 944          void Sys_init()
 945          {
 946   1              register uchar i,j;
 947   1              uchar k=0,radd_end;
 948   1      //      bit tmp;
 949   1      
 950   1              if(add_flag==0x07)
 951   1              {
 952   2              for(i=0;i<8;i++)
 953   2                      {
 954   3                              if((RecBuf[7]&0x80)==0x80)
 955   3                              {
 956   4                                      for(j=0;j<6;j++)
 957   4                                              sum[i][j]=RecBuf[9+j+6*k];
 958   4                                      k++;
 959   4                              }       
 960   3                              RecBuf[7]<<=1;
 961   3                      }
 962   2                      for(i=8;i<16;i++)
 963   2                      {
 964   3                              if((RecBuf[8]&0x80)==0x80)
 965   3                              {
 966   4                                      for(j=0;j<6;j++)
 967   4                                              sum[i][j]=RecBuf[9+j+6*k];
 968   4                                      k++;
 969   4                              }       
 970   3                              RecBuf[8]<<=1;
 971   3                      }
 972   2                                              
 973   2              W_block(WPAGE0,i2c_addr_data,&sum[0][0],RecBuf[6]-2);
 974   2                      radd_end=1;
 975   2                      W_block(WPAGE0,i2c_addr_addflag,&radd_end,1);  
 976   2              W_block(WPAGE1,i2c_addr_data,&sum[0][0],RecBuf[6]-2);
 977   2              }
 978   1              else
 979   1              {
 980   2                      for(i=0;i<16;i++)

⌨️ 快捷键说明

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