📄 yx_key.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 + -