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

📄 setplay.c

📁 电力变电站RTU监控软件(80C196NT单片机) 遥控
💻 C
📖 第 1 页 / 共 5 页
字号:
     StrBuf[1]=i%10;

     i=DCZerO[pVar->MRCount];
     if(i>=0)
     {
	 StrBuf[6]=68;//
     }else
     {
	 StrBuf[6]=66;// -
	 i=-i;
     }
     StrBuf[11]=i%10; i=i/10;
     StrBuf[10]=i%10; i=i/10;
     StrBuf[9] =i%10; i=i/10;
     StrBuf[8] =i%10; i=i/10;
     StrBuf[7] =i%10;
     j=DCWndValue[pVar->MRCount];
     StrBuf[16]=j%10; j=j/10;
     StrBuf[15]=j%10; j=j/10;
     StrBuf[14]=j%10; j=j/10;
     StrBuf[13]=j%10; j=j/10;
     StrBuf[12]=j%10;
     OutString(StrBuf,0,DCSetAdr,1);
  };//open
  if(pVar->action==FLASH)
  {//------------------FLASH-----------------------
     FlashESC();
     if(pVar->KeyID==MINUSKEY)//  "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	switch(pVar->NewCursorOffset)
	{
	  case	0x00 :
	  case	0x06 :if(StrBuf[pVar->NewCursorOffset]==68)
		      {
			 StrBuf[pVar->NewCursorOffset]=66;
		      }else
		      {
			 StrBuf[pVar->NewCursorOffset]=68;
		      }
		      break;
	  default    :if(StrBuf[pVar->NewCursorOffset]!=0)
		      {
			 StrBuf[pVar->NewCursorOffset]=StrBuf[pVar->NewCursorOffset]-1;
		      }else
		      {
			 StrBuf[pVar->NewCursorOffset]=9;
		      }
		      break;
	}
	CursorGotoXy(StrBuf,DCSetAdr,1);
     };
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	switch(pVar->NewCursorOffset)
	{
	  case	0x00 :
	  case	0x06 :if(StrBuf[pVar->NewCursorOffset]==68)
		      {
			 StrBuf[pVar->NewCursorOffset]=66;
		      }else
		      {
			 StrBuf[pVar->NewCursorOffset]=68;
		      }
		      break;
	  default    :if(StrBuf[pVar->NewCursorOffset]<9)
		      {
			 StrBuf[pVar->NewCursorOffset]=StrBuf[pVar->NewCursorOffset]+1;
		      }else
		      {
			 StrBuf[pVar->NewCursorOffset]=0;
		      }
		      break;
	}
	CursorGotoXy(StrBuf,DCSetAdr,1);
     };
     if(pVar->KeyID==LEFTKEY)// " <  " 键
     {
	pVar->KeyID=NULLKEY;
	if(pVar->NewCursorOffset>0) pVar->NewCursorOffset=pVar->NewCursorOffset-1;
	CursorGotoXy(StrBuf,DCSetAdr,1);
     };
     if(pVar->KeyID==RIGHTKEY)// " >  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->NewCursorOffset=pVar->NewCursorOffset+1;
	if(pVar->NewCursorOffset>17)  pVar->NewCursorOffset=0;
	CursorGotoXy(StrBuf,DCSetAdr,1);
     };
     if(pVar->KeyID==OKKEY)// " < " + " > "  修改完成
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	flashwrite_h(PSD_FLASH_BASE);

	i=StrBuf[1]*10000;
	i=i+StrBuf[2]*1000+StrBuf[3]*100+StrBuf[4]*10+StrBuf[5];
	if(StrBuf[0]==66) i=-i;
	pVar->flash_dat[((unsigned int)(&DCCoef[pVar->MRCount])-PSD_FLASH_BASE)/2]=i;

	i=StrBuf[7]*10000;
	i=i+StrBuf[8]*1000+StrBuf[9]*100+StrBuf[10]*10+StrBuf[11];
	if(StrBuf[6]==66) i=-i;
	pVar->flash_dat[((unsigned int)(&DCZerO[pVar->MRCount])-PSD_FLASH_BASE)/2]=i;

	n=StrBuf[12]*10000;
	n=n+StrBuf[13]*1000+StrBuf[14]*100+StrBuf[15]*10+StrBuf[16];
	pVar->flash_dat[((unsigned int)(&DCWndValue[pVar->MRCount])-PSD_FLASH_BASE)/2]=n;
	flashwrite_a(PSD_FLASH_BASE);

	InitYC();
     };
  };//-------------------FALSH--------------------
}

void YCSetMenu(void)// 线路系数
{
  unsigned int	    j, k, n,it;
  int		    i, t;
  long		    l;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(75,0,75,1);
     DspMenu(76,0,76,3);
     DspMenu(77,0,77,4);
     pVar->action=OPEN;

     pVar->PQWorkMode=pVar->PQWorkMode%3;
     DspMenuCur(77,pVar->PQWorkMode*2,77,pVar->PQWorkMode*4,2,0x84);

     if(pVar->YCLNCount>=pVar->lnsum) pVar->YCLNCount=0;

     n=pVar->YCLNCount+1;
     DatBuf[1]=n%10;n=n/10;
     DatBuf[0]=n%10;
     OutString(DatBuf,0,YCLNNumAdr,4);
  };
  if(pVar->action==OPEN)
  {  //-----OPEN
     HITESC(SDSET_MENU);
     if(pVar->KeyID==LEFTKEY)// " <  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;

	if(pVar->PQWorkMode==0)  pVar->PQWorkMode=2;
		else		 pVar->PQWorkMode--;
     }
     if(pVar->KeyID==RIGHTKEY)// " >  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->PQWorkMode==2)  pVar->PQWorkMode=0;
		else		 pVar->PQWorkMode++;
     }
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->YCLNCount=pVar->YCLNCount+5;
	if(pVar->YCLNCount>=pVar->lnsum) pVar->YCLNCount=0;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->YCLNCount>4) pVar->YCLNCount=pVar->YCLNCount-5;
	    else	      pVar->YCLNCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->YCLNCount=pVar->YCLNCount+1;
	if(pVar->YCLNCount>=pVar->lnsum) pVar->YCLNCount=0;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->YCLNCount>0) pVar->YCLNCount=pVar->YCLNCount-1;
     };
     if(pVar->KeyID==OKKEY)// 手动修改状态
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=NOUSE;
	 pVar->NewCursorOffset=0;
	 pVar->OldCursorOffset=0;
	 pVar->MenuMode=PQJUST_MENU;  // 功率校对
	 return;
     }
     for(i=0;i<15;i++)
     {
	 switch(i)
	 {
	   case  0x00://U1
	   case  0x01://U2
	   case  0x02://U3 电压放大40倍
		      l=(long)LNLIB[pVar->YCLNCount].Value[i];
		      l=l*5;
		      l=l/2;
		      StrBuf[4+i*10]=l%10;	  l=l/10;
		      StrBuf[3+i*10]=l%10;	  l=l/10;
		      StrBuf[2+i*10]=(l%10)+150;  l=l/10;
		      StrBuf[1+i*10]=l%10;	  l=l/10;
		      StrBuf[0+i*10]=l%10;
		      break;
	   case  0x03://I1
	   case  0x04://I2
	   case  0x05://I3 电流放大80倍
		      l=(long)LNLIB[pVar->YCLNCount].Value[i];
		      l=l*5;
		      l=l/4;
		      t=i*10-25;
		      StrBuf[4+t]=l%10;        l=l/10;
		      StrBuf[3+t]=l%10;        l=l/10;
		      StrBuf[2+t]=l%10;        l=l/10;
		      StrBuf[1+t]=(l%10)+150;  l=l/10;
		      StrBuf[0+t]=l%10;
		      break;
	   case  0x09://P
	   case    13://Q  功率放大8倍
		      if(i==9)	t=30;
			  else	t=35;
		      l=(long)LNLIB[pVar->YCLNCount].Value[i];
		      if(l>=0)
		      {
			StrBuf[0+t]=68;//
		      }else
		      {
			StrBuf[0+t]=66;// -
			l=-l;
		      }
		      l=l*5;
		      l=l/4;
		      StrBuf[4+t]=l%10;        l=l/10;
		      StrBuf[3+t]=(l%10)+150;  l=l/10;
		      StrBuf[2+t]=l%10;        l=l/10;
		      StrBuf[1+t]=l%10;
		      break;
	   case    14://COS
		      l=(long)LNLIB[pVar->YCLNCount].Value[i];
		      if(l>=0)
		      {
			StrBuf[0+40]=68;//
		      }else
		      {
			StrBuf[0+40]=66;// -
			l=-l;
		      }
		      StrBuf[4+40]=l%10;	l=l/10;
		      StrBuf[3+40]=l%10;	l=l/10;
		      StrBuf[2+40]=l%10;	l=l/10;
		      StrBuf[1+40]=(l%10)+150;
		      break;
	   default:   break;
	 }
     }
     l=(long)LNLIB[pVar->YCLNCount].PQARC;
     if(l>=0)
     {
	  StrBuf[0+45]=68;//
     }else
     {
	  StrBuf[0+45]=66;// -
	  l=-l;
     }
     StrBuf[5+45]=l%10;        l=l/10;
     StrBuf[4+45]=l%10;        l=l/10;
     StrBuf[3+45]=(l%10)+150;  l=l/10;
     StrBuf[2+45]=l%10;        l=l/10;
     StrBuf[1+45]=l%10;

     l=(long)LNLIB[pVar->YCLNCount].Uabc;
     l=l*5;
     l=l/2;
     StrBuf[55]=l%10;	     l=l/10;
     StrBuf[54]=l%10;	     l=l/10;
     StrBuf[53]=(l%10)+150;  l=l/10;
     StrBuf[52]=l%10;	     l=l/10;
     StrBuf[51]=l%10;

     l=(long)LNLIB[pVar->YCLNCount].U0;
     l=l*5;
     l=l/2;
     StrBuf[60]=l%10;	     l=l/10;
     StrBuf[59]=l%10;	     l=l/10;
     StrBuf[58]=(l%10)+150;  l=l/10;
     StrBuf[57]=l%10;	     l=l/10;
     StrBuf[56]=l%10;

     OutString(StrBuf,0,YCLNValueAdr,1);
  };//open
}

void KRDSetMenu(void)// 开入配置
{
  int i;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     if(pVar->KRMenuCount>=1)  pVar->KRMenuCount=0;
     if(pVar->KRCursorCount>3) pVar->KRCursorCount=0;
     DspMenu(64, pVar->KRMenuCount*0x05,64,3);
     DspMenuCur(64,(pVar->KRMenuCount+pVar->KRCursorCount)*0x05+1,64, (pVar->KRCursorCount*10)+2,4, 0x83);
     DspMenu(65,0,65,3);//JM65+0,Adr65, Type=3 KR配置
     pVar->action=OPEN;
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(SDSET_MENU);
     if(pVar->KeyID==PLUSKEY)// PageDOWNKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->KRMenuCount=2;
     };
     if(pVar->KeyID==MINUSKEY)// PageUPKEY
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=NOUSE;
	 pVar->KRMenuCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=NOUSE;
	 if(pVar->KRCursorCount>=2)
	 {
	   pVar->KRMenuCount=pVar->KRMenuCount+1;
	   pVar->KRCursorCount=2;
	}else pVar->KRCursorCount++;
	if(pVar->KRMenuCount>0x02) pVar->KRMenuCount=0x02;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->KRCursorCount==0)
	{
	  if(pVar->KRMenuCount>0x00) pVar->KRMenuCount=pVar->KRMenuCount-1;
	  pVar->KRCursorCount=0;
	}else pVar->KRCursorCount--;
     };
     if(pVar->KeyID==OKKEY)  //确认键
     {
	 pVar->KeyID=NULLKEY;
	 i=pVar->KRCursorCount+pVar->KRMenuCount;
	 switch(i)
	 {
//	       case 0x00:   pVar->MenuMode=KRSET_MENU;	     // KR设置
//			    pVar->action=NOUSE;
//			    break;
	       case 0x00:   pVar->MenuMode=HYXSET_MENU;      // 硬YX设置
			    pVar->action=NOUSE;
			    break;
	       case 0x01:   pVar->MenuMode=SYXSET_MENU;      // 软YX设置
			    pVar->action=NOUSE;
			    break;
	       case 0x02:   pVar->MenuMode=YMSET_MENU;	    // 遥脉设置
			    pVar->action=NOUSE;
			    break;
	       default:     break;
	 };
     };
  };//-------OPEN
}

unsigned char  SearchBit(unsigned int BitNum,unsigned int *pPM)//
{
   unsigned  int j,k,m;
   unsigned char  ch;
   ch=0x01;
   j=BitNum/16;
   k=BitNum%16;
   m=*(pPM+j);
   switch(k)
   {
	  case	0x00:m=m &  0x01;
		     if(m==0)  ch=0;
		     break;
	  case	0x01:m=m &  0x02;
		     if(m==0)  ch=0;
		     break;
	  case	0x02:m=m &  0x04;
		     if(m==0)  ch=0;
		     break;
	  case	0x03:m=m &  0x08;
		     if(m==0)  ch=0;
		     break;
	  case	0x04:m=m &  0x10;
		     if(m==0)  ch=0;
		     break;
	  case	0x05:m=m &  0x20;
		     if(m==0)  ch=0;
		     break;
	  case	0x06:m=m &  0x40;
		     if(m==0)  ch=0;
		     break;
	  case	0x07:m=m &  0x80;
		     if(m==0)  ch=0;
		     break;
	  case	0x08:m=m &  0x100;
		     if(m==0)  ch=0;
		     break;
	  case	0x09:m=m &  0x200;
		     if(m==0)  ch=0;
		     break;
	  case	0x0a:m=m &  0x400;
		     if(m==0)  ch=0;
		     break;
	  case	0x0b:m=m &  0x800;
		     if(m==0)  ch=0;
		     break;
	  case	0x0c:m=m &  0x1000;
		     if(m==0)  ch=0;
		     break;
	  case	0x0d:m=m &  0x2000;
		     if(m==0)  ch=0;
		     break;
	  case	0x0e:m=m &  0x4000;
		     if(m==0)  ch=0;
		     break;
	  case	0x0f:m=m &  0x8000;
		     if(m==0)  ch=0;
		     break;
	     default:ch=0x02;
		     break;
   }
   return  ch;
}


void  SetBit(unsigned int BitNum,unsigned int *pPM)//
{
   unsigned  int j,k,m;
   unsigned char  ch;
   ch=0x01;
   j=BitNum/16;
   k=BitNum%16;
   m=*(pPM+j);
   switch(k)
   {
	  case	0x00:m=m |  0x01;
		     break;
	  case	0x01:m=m |  0x02;
		     break;
	  case	0x02:m=m |  0x04;
		     break;
	  case	0x03:m=m |  0x08;
		     break;
	  case	0x04:m=m |  0x10;
		     break;
	  case	0x05:m=m |  0x20;
		     break;
	  case	0x06:m=m |  0x40;
		     break;
	  case	0x07:m=m |  0x80;
		     break;
	  case	0x08:m=m |  0x100;
		     break;
	  case	0x09:m=m |  0x200;
		     break;
	  case	0x0a:m=m |  0x400;
		     break;
	  case	0x0b:m=m |  0x800;
		     break;
	  case	0x0c:m=m |  0x1000;
		     break;
	  case	0x0d:m=m |  0x2000;
		     break;
	  case	0x0e:m=m |  0x4000;
		     break;
	  case	0x0f:m=m |  0x8000;
		     break;
	     default:break;
   }
   *(pPM+j)=m;
}

void  ClrBit(unsigned int BitNum,unsigned int *pPM)//
{
   unsigned  int j,k,m;
   unsigned char  ch;
   ch=0x01;
   j=BitNum/16;
   k=BitNum%16;
   m=*(pPM+j);
   switch(k)
   {
	  case	0x00:m=m &  0xfe;
		     break;
	  case	0x01:m=m &  0xfd;
		     break;
	  case	0x02:m=m &  0xfb;
		     break;
	  case	0x03:m=m &  0xf7;
		     break;
	  case	0x04:m=m &  0xef;
		     break;
	  case	0x05:m=m &  0xdf;
		     break;
	  case	0x06:m=m &  0xbf;
		     break;
	  case	0x07:m=m &  0x7f;
		     break;
	  case	0x08:m=m &  0xeff;
		     break;
	  case	0x09:m=m &  0xdff;
		     break;
	  case	0x0a:m=m &  0xbff;
		     break;
	  case	0x0b:m=m &  0x7ff;
		     break;
	  case	0x0c:m=m &  0xefff;
		     break;
	  case	0x0d:m=m &  0xdfff;
		     break;

⌨️ 快捷键说明

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