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

📄 yx_key.c

📁 此源代码为电力系统中的RTU终端反馈!具有GPRS通讯功能!
💻 C
字号:

#include "yx_key.h"
#include "DataDef.h"
#include "msp430x44x.h"       
STRU_SOE soe[SOERCDMAX];
unsigned char nSOERecords=0;
unsigned char  nSOERecordi=0;  //SOE 当前位置
 unsigned char   YxOld=0x0; 
 unsigned char   YxNew=0x0;    
unsigned char P1Counter;
 unsigned char P2Counter;
 unsigned char P3Counter;
 unsigned int   YxInOld=0x0; 
 unsigned int   YxInNew=0x0;    
 unsigned char keyold;
 unsigned char keynew;
 const BYTE menu[7] = {28,
         4,//YX
         8,//电度
         12,25,2,0};
  
 void YxHand()  //遥信处理
 {
   char inum, BITi ;
   for(inum=0,BITi=2;inum<4;inum++,BITi <<=1)
   {
     if( (YxNew & BITi)== (YxOld & BITi))
      continue; 
         soe[nSOERecords].MillSecond = stDateTime.MillSecond;     
         soe[nSOERecords].Minute=stDateTime.minute ;
         soe[nSOERecords].Hour=stDateTime.hour ;  
         if(YxNew & BITi) 
         soe[nSOERecords].SPI= 1;       
         else
           soe[nSOERecords].SPI= 0;     
         soe[nSOERecords].SOE_ID= inum+1;
        nSOERecords++;
      if(nSOERecords>=SOERCDMAX)
      {
        DeviceState.bSOEOverFlow=1;
        nSOERecords=0;    
      }
    }    
     SpecialFlag.SOEFlag=1;
     SpecialFlag.YXChangeFlag=1;
      strcontrol.ACD=1;
      YxOld= YxNew; 
 }

 void YxInHand()  //内部遥信处理
 {
   unsigned int inum, BITi ;
   for(inum=0,BITi=1;inum<16;inum++,BITi <<=1)
   {
     if((YxInNew & BITi)== (YxInOld & BITi))
        continue; 
      soe[nSOERecords].MillSecond = stDateTime.MillSecond;     
      soe[nSOERecords].Minute=stDateTime.minute ;
      soe[nSOERecords].Hour=stDateTime.hour ;  
      if(YxInNew & BITi) 
        soe[nSOERecords].SPI= 1;       
      else
        soe[nSOERecords].SPI= 0;     
      soe[nSOERecords].SOE_ID= inum+5;
      nSOERecords++;
      if(nSOERecords>=SOERCDMAX)
      {
        DeviceState.bSOEOverFlow=1;
        nSOERecords=0;    
      }
    }    
     SpecialFlag.SOEFlag=1;
     SpecialFlag.YXChangeFlag=1;
     strcontrol.ACD=1;
     YxInOld= YxInNew; 
 }

 void KeyHand()  //键盘处理
 {
     keynew = (P3IN &KEYBIT);
     if( !(keynew & BIT2))
      {   P1Counter++;
         if(P1Counter> menu[P2Counter-1] )
           P1Counter=1;
      }      
     if( !(keynew & BIT1))
      {   P2Counter++;
          if(P2Counter>KEYMAX2)
           P2Counter=1;
           P1Counter=1;
      }
    if( !(keynew & BIT0))
    { 
      P3Counter++;
       if(P3Counter> KEYMAX3) P3Counter=1;
        P2Counter=1;
        P1Counter=1;   
    }
     keyold= keynew;
      DeviceState.DisPlay_Lcd = 1;
}

void GetYxIn() //取内部遥信
{
  unsigned int temp=0;
  long tl;
  if( BD_data.UnbalRateofU > TTU_RunParam.UnblU*10 ) temp |=BIT0;
  if( BD_data.UnbalRateofI > TTU_RunParam.UnblI*10 ) temp |=BIT1;
  if(BD_data.Ua > nhighV)  temp |=BIT2;
  if(BD_data.Ub > nhighV)  temp |=BIT3;
  if(BD_data.Uc > nhighV)  temp |=BIT4;
  if((BD_data.Ua < nlowV) && (BD_data.Ua >= 350 ) )  temp |=BIT5;
  if((BD_data.Ub < nlowV) && ( BD_data.Ub >= 350)  )  temp |=BIT6;
  if((BD_data.Uc < nlowV) && (BD_data.Uc >= 350 ) )  temp |=BIT7; 
  tl=(long)BD_data.Ua * BD_data.Ia+(long)BD_data.Ub * BD_data.Ib+(long)BD_data.Uc * BD_data.Ic;
  tl= tl/3000;
  if(tl>TTU_RunParam.Load0) temp |=BIT8; 
   tl= (long)BD_data.Ua * BD_data.Ia/1000;
  if(tl>TTU_RunParam.Load0) temp |=BIT9; 
   tl= (long)BD_data.Ub * BD_data.Ib/1000;
  if(tl>TTU_RunParam.Load0) temp |=BITA; 
     tl= (long)BD_data.Uc * BD_data.Ic/1000;
  if(tl>TTU_RunParam.Load0) temp |=BITB; 
  if(BD_data.Ua < 350)  temp |=BITC;
  if(BD_data.Ub < 350)  temp |=BITD;
  if(BD_data.Uc < 350)  temp |=BITE;
  if((BD_data.Ua < 350) &&(BD_data.Ub < 350) &&(BD_data.Uc < 350)  )  
   temp |=BITF;
   YxInNew = temp;
   if(YxInNew != YxInOld )
      YxInHand();  
   YxInOld=temp;
}

⌨️ 快捷键说明

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