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

📄 whx40318.c

📁 流量计程序
💻 C
📖 第 1 页 / 共 3 页
字号:
           for (x=0;x<=7;x++)                    /*互感器运行时间*/
              { ppp=&worktime[x][m-1][d-1];
                for ( i=0;i<=1;i++ ) { while(!TI);TI=0;SBUF=*ppp; ppp=ppp+1; }
              }
           ppp=&sl;                              /*流量值*/
           for (i=0;i<=3;i++) { while(!TI);TI=0;SBUF=*ppp;ppp=ppp+1; }
           ppp=&codma;                           /*电流值1*/
           for (i=0;i<=3;i++) { while(!TI);TI=0;SBUF=*ppp;ppp=ppp+1; }
           ppp=&itv2;                            /*电流值2*/
           for (i=0;i<=3;i++) { while(!TI);TI=0;SBUF=*ppp;ppp=ppp+1; }
           ppp=&itv3;                            /*电流值3*/
           for (i=0;i<=3;i++) { while(!TI);TI=0;SBUF=*ppp;ppp=ppp+1; }
           ppp=&itv4;                            /*电流值4*/
           for (i=0;i<=3;i++) { while(!TI);TI=0;SBUF=*ppp;ppp=ppp+1; }
           ppp=&hday[m-1][d-1];
           for ( i=0;i<=1;i++ ) { while(!TI);TI=0;SBUF=*ppp; ppp=ppp+1; }
           while(!TI);TI=0;
           sms_state=0;
           EA=1;
         }
     while(sms_send_begin)
          { sms_state=1; sms_ok=1; sms_send_begin=0; }
    if ( /*count30s>=30*/0)      /*交大30秒传一次*/
      {          /*低电平RS232有效*/
        count30s=0;
        EA=0;
        datatrans_232();
        EA=1;
      }
  }

char key()
  {
       unsigned char s;
       PC_8255=0xF0;
       delay(40);
       s=PC_8255;
       s=~s;
       s=s&0xF0;
       return(s);
  }

char jzqr()
  {  unsigned char row=0,col=0;
     char lmsk,pic,s;
     lmsk=0xfe;
     PC_8255=lmsk;
     delay(40);
     while((PC_8255&0xf0)==0xf0)
     {  col+=4;
        lmsk=_crol_(lmsk,1);
        PC_8255=lmsk;
      }
      pic=(PC_8255&0xf0)>>4;
      lmsk=0x01;
      while(pic&lmsk)
      {  ++row;
         lmsk=_crol_(lmsk,1);
      }
       while((PC_8255&0xf0)!=0xf0);/*put down key*/
       pic=row+col;
       return(pic);
   }

fill_time(y,m,d,cd)
 unsigned char y,m,d,cd;
  {
    switch(cd)
    {
     case  0:   {  ary[0]=y/10+0x30;
                   ary[1]=y%10+0x30;
                   ary[2]='/';
                   ary[3]=m/10+0x30;
                   ary[4]=m%10+0x30;

               }
                  break;
     case  1:
               {
                 ary[0]=y/10+0x30;
                 ary[1]=y%10+0x30;
                 ary[2]='/';
                 ary[3]=m/10+0x30;
                 ary[4]=m%10+0x30;
                 ary[5]='/';
                 ary[6]=d/10+0x30;
                 ary[7]=d%10+0x30;
                 ary[8]=':';
               }
               break;
     case  2:  {
                 ary[2]=y%10+0x30;
                 y=y/10;
                 ary[1]=y%10+0x30;
                 y=y/10;
                 ary[0]=y+0x30;
                 ary[3]='/';
                 ary[4]=m/10+0x30;
                 ary[5]=m%10+0x30;
                }
                break;

   }
}

fill_ary(float fly,unsigned long lin,unsigned char sum)
{  unsigned int pt;
   char j,i;
  if(sum==0)
      {   pt=fly;
          fly=fly-pt;
          fly=fly*10;
          for(i=3;i>=0;i--)
           { ary[i]=pt%10+0x30;
             pt=pt/10;
           }
          ary[4]='.';
          pt=fly;
          ary[5]=pt%10+0x30;
     }
   else
     {   for(i=sum;i>=0;i--)
           { ary[i]=lin%10;
             lin=lin/10;
           }
         for(i=0;i<=(sum-1);i++)
             if(ary[i]!=0) break;

         for(j=0;j<i;j++)
            ary[j]=0x20;

         for(j=i;j<=sum;j++)
            ary[j]=ary[j]+0x30;
     }

}

dll()
 {  unsigned int zj=0;
    qinping();
    while (k!=12)
    { fill_time(year,month,day,1) ;
      xs(0x80,ary,8);
      fill_ary(0,hday[month-1][day-1],4);
      xs(0xc0,"Q:",1);
      xs(0xc2,ary,4);
      xs(0xc7,"M3",1);

      xs(0x94,"RUN TIME:",8);
      zj=worktime[3][month-1][day-1];
      zj=zj/60;
      fill_time(zj/60,zj%60,0,0);
      xs(0x9d,ary,4);
      if(k=key()!=0)
         { k=jzqr();
           switch(k)
            {  case 11:if(day==1) break;
                        else {day=day-1;break;}
               case 15:if(day>=lastday[month-1]) break;
                      else {day=day+1;break;}
            }
        }
    }
    qinping();
    k=0;
  }


mll()
{ char i;
  unsigned long int zj;
  qinping();
  while(k!=12)
   {  fill_time(year,month,day,0);
      xs(0x80,ary,4);
      zj=0;
      for(i=0;i<lastday[month-1];i++)
          zj=zj+hday[month-1][i];
      fill_ary(0,zj,9);
      xs(0xc0,"Q:",1);
      xs(0xc2,ary,9);
      xs(0xcc,"M3",1);
      zj=0;
      for(i=0;i<lastday[month-1];i++)
          zj=zj+worktime[3][month-1][i];
          zj=zj/60;
      fill_time(zj/60,zj%60,0,2);
      xs(0x94,"RUN TIME:",8);
      xs(0x9d,ary,5);
      if(k=key()!=0)
        {k=jzqr();
         switch(k)
           { case 11: if(month==1) month=12;
                           else month=month-1;
                           break;
                  case 15: if(month==12) month=1;
                           else month=month+1;
                            break;
                  case 9:  {day=1;dll();}
                            break;

              }
          if(month>curmonth)
              {
               if(curyear==0){year=99;}
                else{year=curyear-1;}

              }
         else
            year=YEAR_ADR;


         }
    }
   qinping();
  }


llx()
   { qinping();
     while(k!=12)
       {  readtime();
          fill_ary(0,total,9);
          xs(0x80,"Q:",1);
          xs(0x82,ary,9);
          xs(0x8c,"M3",1);

          fill_ary(sl,0,0);
          ary[6]='L';
          ary[7]='/';
          ary[8]='S';
          xs(0xc0,"SSLL:",4);
          xs(0xc5,ary,8);

          xs(0x94,"DATE:",4);
          fill_time(year,month,day,1);
          xs(0x9a,ary,7);

          xs(0xd4,"START:",5);
          fill_time(insyear,insmonth,insday,1);
          xs(0xda,ary,7);
          if(k=key()!=0)
            {
              k=jzqr();
              switch(k)
               {  case 9: dll();
                          break;
                  case 10: mll();
                           break;
               }
            }
        }
     qinping();
     xs(0x85,"--OK--",5);
     k=0;
 }


 itvxx(float *temp,unsigned char i)  /*瞬时itv显示,电流变为电压*/
   {
     qinping();
     while(k!=12)
       {
          readtime();
          xs(0x80,"ITV",2);
          ary[0]=i+0x30;
          xs(0x83,ary,0);
          xs(0x84," :",1);

          fill_ary(*temp,0,0);
          ary[6]='m';
          ary[7]='g';
          ary[8]='/';
          ary[9]='L';
          xs(0x87,ary,9);

          fill_ary(0,ADC_VALUE,2);
          xs(0xc0,"ADC  :",5);
          xs(0xc7,ary,2);

          xs(0x94,"DATE :",5);
          fill_time(year,month,day,1);
          xs(0x9b,ary,7);

          xs(0xd4,"START:",5);
          fill_time(insyear,insmonth,insday,1);
          xs(0xdb,ary,7);

          if ( k=key()!=0)
               k=jzqr();

        }
     qinping();
     xs(0x85,"--OK--",5);
     k=0;
 }

msj(adr,n,ms,md)
unsigned char adr,n,md; unsigned int ms;
{xdata unsigned char j;
 xdata unsigned int hm;
  ary[0]='#';
  ary[1]=n+0x30;
  ary[2]=':';
  hm=ms/60;
  for(j=5;j>=3;j--)
    { ary[j]=hm%10+0x30;
      hm=hm/10;
    }
  if(md==0)
   { if(ary[3]=0x30)
       ary[3]=0x20;
   }
  ary[6]='/';
  hm=ms%60;
  ary[7]=hm/10+0x30;
  ary[8]=hm%10+0x30;
  xs(adr,ary,8);
}

wtday()
   {xdata  unsigned int m[8],x;
    xdata  char i;

      qinping();
      while (k!=12)
       {
        fill_time(year,month,day,1);
        xs(0x80,ary,7);

      for(i=0;i<=7;i++)
          m[i]=worktime[i][month-1][day-1];
      for (i=0;i<=7;i++)
         { x=m[i];
           switch(i)
            {
             case 0:msj(0x8a,0,x,0);break;
             case 1:msj(0xc0,1,x,0);break;
             case 2:msj(0xca,2,x,0);break;
             case 4:msj(0x94,4,x,0);break;
             case 5:msj(0x9e,5,x,0);break;
             case 6:msj(0xd4,6,x,0);break;
             case 7:msj(0xde,7,x,0);break;
             default: break;
            }
         }

     if( k=key()!=0)
       { k=jzqr();
         switch(k)
           {   case 11:if(day==1) break;
                        else {day=day-1;break;}
               case 15:if(day>=lastday[month-1]) break;
                       else {day=day+1;break;}
            }
       }
   }
   qinping();
   k=0;
   xs(0x85,"--OK--",5);
 }

wtmon()
 { xdata unsigned int m[8],x;
   xdata char i,j;
    qinping();
    k=0;
    while (k!=12)
    {   fill_time(year,month,day,0);
        xs(0x80,ary,4);

        for(i=0;i<=7;i++)
           { m[i]=0;
             for(j=0;j<=lastday[month-1];j++)
                m[i]=m[i]+worktime[i][month-1][j];
           }
        for (i=0;i<=7;i++)
            { x=m[i];
              switch(i)
              { case 0:msj(0x8a,0,x,1);break; /*m=ar*/
                case 1:msj(0xc0,1,x,1);break;
                case 2:msj(0xca,2,x,1);break;
                case 4:msj(0x94,4,x,1);break;
                case 5:msj(0x9e,5,x,1);break;
                case 6:msj(0xd4,6,x,1);break;
                case 7:msj(0xde,7,x,1);break;
                default: break;
              }
            }

      if(k=key()!=0)
        {
           k=jzqr();
           switch(k)
             {
               case 11:if(month==1){ month=12;}
                       else {month=month-1;}
                       break;
               case 15: if(month==12){ month=1;}
                        else {month=month+1;}
                        break;
               case 9: {day=1;wtday();}
                        qinping();
                        break;
             }
          if(month>curmonth)
              {
                if(curyear==0){year=99;}
                else{year=curyear-1;}

              }
         else{year=YEAR_ADR;}
         }
      }
      qinping();
      xs(0x85,"--OK--",5);
  }




set_time(s)
unsigned char s;
{

  switch(s)
    {
      case 0:  xs(0xd8,"Year ",4);
               break;
      case 1:  xs(0xd8,"Month",4);
               break;
      case 2:  xs(0xd8,"Day  ",4);
              break;
      case 3:  xs(0xd8,"Hour ",4);
             break;
      case 4:  xs(0xd8,"Minut",4);
             break;
    }
}


Time()
 {
    unsigned char hour,minu,sec;
    unsigned kcount=0;
   k=0;
   qinping();
        xs(0x82,"DATE ",4);
        xs(0x87,"AND TIME",7);
        xs(0xc0,"DATE:",3);
        xs(0x94,"TIME:",3);
        xs(0xd4,"SET: ",4);
       while(k==0)
        {
            readtime();
            fill_time(year,month,day,1);
            xs(0xc5,ary,8);
            hour=HOUR_ADR;
            minu=MIN_ADR;
            sec=SEC_ADR;
            fill_time(hour,minu,sec,1);
            xs(0x99,ary,8);
            xs(0xd8,"Year ",4);
            k=key();
         }
         while(kcount<9)
          {
            if(k=key()!=0)
              {
                k=jzqr();
                switch(k)
                  {
                    case 12: kcount=10;
                             break;
                    case 14: kcount+=1;
               	             if(kcount>4)
               		      {kcount=0;}
               		      break;
                    case 11:
                             { switch(kcount)
                                 { case 0: year+=1;
                                           if(year>99){year=0;}
                                           break;
                                   case 1: month+=1;
                                           if(month>12){month=1;}
                                           break;
                                   case 2: day+=1;
                                           if(day>31){day=1;}
                                           break;
                                   case 3: hour+=1;
                                           if(hour>=24){hour=0;}
                                           break;
                                   case 4: minu+=1;
                                           if(minu>=60){minu=0;}
                                           break;
                                  }
                               }
                               break;

                     case 15:{ switch(kcount)
                                 { case 0: if(year==0){year=99;}
                                           else{year-=1;}
                                           break;
                                   case 1: month-=1;
                                           if(month<1){month=12;}
                                           break;
                                   case 2: day-=1;
                                           if(day<1){day=31;}
                                           break;
                                   case 3: if(hour==0){hour=23;}
                                           else{hour-=1;}
                                           break;
                                   case 4: if(minu==0){minu=59;}
                                           else{minu-=1;}

⌨️ 快捷键说明

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