1102 lines
35 KiB
C
1102 lines
35 KiB
C
|
|
#include "../main/SystemInclude.h"
|
|||
|
|
//==============================================================================
|
|||
|
|
|
|||
|
|
unsigned int setKeyType, setIndex;
|
|||
|
|
unsigned int keyDealFlag;
|
|||
|
|
|
|||
|
|
extern unsigned char display0_data[];
|
|||
|
|
extern unsigned char display1_data[];
|
|||
|
|
extern unsigned char Code_AFED_BGC[];
|
|||
|
|
extern unsigned char Code_BGC_AFED[];
|
|||
|
|
extern unsigned char Code_EGFA_DCB[];
|
|||
|
|
|
|||
|
|
bool isKeyPressed;
|
|||
|
|
unsigned int keyFlag, PassWord, keyTime, keyValue, keyBuff, menuIndex, modifyBit, keyFlashTime;
|
|||
|
|
unsigned int setKeyBuffer;
|
|||
|
|
unsigned long int temp_dcoefNode[DCOEF_MAX];
|
|||
|
|
unsigned int temp_dcoefNum, temp_dcoefVal[DCOEF_MAX];
|
|||
|
|
|
|||
|
|
#define DIS_PARA_INT 0
|
|||
|
|
#define DISPLAY_MENU 1
|
|||
|
|
#define FLASH_BIT 2
|
|||
|
|
|
|||
|
|
#define NEXT 0
|
|||
|
|
#define SAVE 1
|
|||
|
|
#define NO 2
|
|||
|
|
/******************************************************************************/
|
|||
|
|
void KeyReset(void)
|
|||
|
|
{
|
|||
|
|
KEY_INPUT();
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
isKeyPressed = 0;
|
|||
|
|
keyValue = 0;
|
|||
|
|
menuIndex = 0;
|
|||
|
|
setKeyType = 0;
|
|||
|
|
setIndex = 0;
|
|||
|
|
PassWord = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/******************************************************************************/
|
|||
|
|
void DisableKeyInterrupt(void)
|
|||
|
|
{
|
|||
|
|
KEY_IE &= ~KEY_PIN;
|
|||
|
|
KEY_IFG &= ~KEY_PIN; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
|||
|
|
}
|
|||
|
|
/******************************************************************************/
|
|||
|
|
void EnableKeyInterrupt(void)
|
|||
|
|
{
|
|||
|
|
KEY_IES |= KEY_PIN;
|
|||
|
|
KEY_IFG &= ~KEY_PIN; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
|||
|
|
KEY_IE |= KEY_PIN;
|
|||
|
|
}
|
|||
|
|
/******************************************************************************/
|
|||
|
|
void KeyEditInit(void)
|
|||
|
|
{
|
|||
|
|
// key intput interrupt
|
|||
|
|
KEY_INPUT();
|
|||
|
|
}
|
|||
|
|
/*********************************************************************************/
|
|||
|
|
void FlashBitForSetup(void)
|
|||
|
|
{
|
|||
|
|
unsigned char tempT;
|
|||
|
|
|
|||
|
|
if(keyFlag != FLASH_BIT) return;
|
|||
|
|
if(keyFlashTime == RTCSEC) return;
|
|||
|
|
keyFlashTime = RTCSEC;
|
|||
|
|
tempT = display1_data[ACC_1 + modifyBit -1];
|
|||
|
|
tempT &= ~BIT0;
|
|||
|
|
if(tempT == 0) display1_data[ACC_1 + modifyBit -1] |= Code_EGFA_DCB[Dis1[modifyBit]];
|
|||
|
|
else display1_data[ACC_1 + modifyBit -1] &= (unsigned char)BIT0;
|
|||
|
|
LcdWriteDisplayFirst();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*********************************************************************************/
|
|||
|
|
void ReadKeyValue(void)
|
|||
|
|
{
|
|||
|
|
unsigned int temp;
|
|||
|
|
|
|||
|
|
KeyEditInit();
|
|||
|
|
temp = READ_KEY_VALUE();
|
|||
|
|
if(temp == KEY_PIN)
|
|||
|
|
{
|
|||
|
|
keyValue = 0;
|
|||
|
|
EnableKeyInterrupt();
|
|||
|
|
if((keyBuff == 0) || (keyBuff == KEY_PIN))
|
|||
|
|
{
|
|||
|
|
keyBuff = KEY_PIN;
|
|||
|
|
if(IDvalidTime >= 30) KeyReset();
|
|||
|
|
//{
|
|||
|
|
// keyFlag = DIS_PARA_INT;
|
|||
|
|
// menuIndex = 0;
|
|||
|
|
// isKeyPressed = 0;
|
|||
|
|
//}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
timerTar = MAINTAR;
|
|||
|
|
if(timerTar < keyTime) timerTar = 1600;
|
|||
|
|
else timerTar -= keyTime;
|
|||
|
|
|
|||
|
|
if(timerTar < 1600) { keyValue = 0; return; }
|
|||
|
|
|
|||
|
|
keyBuff = ~keyBuff;
|
|||
|
|
keyBuff &= KEY_PIN;
|
|||
|
|
if(keyBuff == FUN_KEY) keyValue = FUN_KEY;
|
|||
|
|
else if(keyBuff == UPPER_KEY) keyValue = UPPER_KEY;
|
|||
|
|
else if(keyBuff == SHIFT_KEY) keyValue = SHIFT_KEY;
|
|||
|
|
else keyValue = 0;
|
|||
|
|
keyBuff = KEY_PIN;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if(keyBuff == temp) return;
|
|||
|
|
keyBuff = temp;
|
|||
|
|
keyTime = MAINTAR;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/********************************************************************************************* */
|
|||
|
|
unsigned int SaveModifyValue(void)
|
|||
|
|
{
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 5;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_S;
|
|||
|
|
Dis1[2] = WORD_A;
|
|||
|
|
Dis1[3] = WORD_V;
|
|||
|
|
Dis1[4] = WORD_E;
|
|||
|
|
|
|||
|
|
Dis1[5] = WORD_LINE;
|
|||
|
|
Dis1[6] = WORD_N;
|
|||
|
|
|
|||
|
|
Dis1[7] = WORD_NULL;
|
|||
|
|
Dis1[8] = WORD_NULL;
|
|||
|
|
Dis1[9] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
Dis1[13] = WORD_NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
keyValue = 0;
|
|||
|
|
if( Dis1[6] == WORD_Y ) return SAVE;
|
|||
|
|
return NO;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
if(Dis1[6] == WORD_N) Dis1[6] = WORD_Y;
|
|||
|
|
else Dis1[6] = WORD_N;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyValue = 0;
|
|||
|
|
return NEXT;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool ReturnKeySetSub(void)
|
|||
|
|
{
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 5;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_O;
|
|||
|
|
Dis1[2] = WORD_F;
|
|||
|
|
Dis1[3] = WORD_F;
|
|||
|
|
Dis1[4] = WORD_NULL;
|
|||
|
|
|
|||
|
|
Dis1[5] = WORD_LINE;
|
|||
|
|
Dis1[6] = WORD_Y;
|
|||
|
|
|
|||
|
|
Dis1[7] = WORD_NULL;
|
|||
|
|
Dis1[8] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
Dis1[13] = WORD_NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
if( Dis1[6] == WORD_Y ) return 1;
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
if(Dis1[6] == WORD_N) Dis1[6] = WORD_Y;
|
|||
|
|
else Dis1[6] = WORD_N;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
unsigned int DisplaySetIndex(void)
|
|||
|
|
{
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
keyValue = 0;
|
|||
|
|
return 1;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
return 2;
|
|||
|
|
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
menuIndex++;
|
|||
|
|
if(menuIndex >= KEY_SET_RETURN) menuIndex = KEY_SET_METERFACTOR;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_S;
|
|||
|
|
Dis1[2] = WORD_E;
|
|||
|
|
Dis1[3] = WORD_T;
|
|||
|
|
Dis1[4] = WORD_LINE;
|
|||
|
|
Dis1[9] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
Dis1[13] = WORD_NULL;
|
|||
|
|
|
|||
|
|
Dis1[5] = WORD_F;
|
|||
|
|
Dis1[6] = menuIndex;
|
|||
|
|
Dis1[7] = WORD_NULL;
|
|||
|
|
Dis1[8] = WORD_NULL;
|
|||
|
|
|
|||
|
|
if(menuIndex == KEY_SET_METERFACTOR)
|
|||
|
|
{
|
|||
|
|
display0_data[FLOW_1] = Code_AFED_BGC[WORD_F];
|
|||
|
|
display0_data[FLOW_2] = Code_AFED_BGC[WORD_a];
|
|||
|
|
display0_data[FLOW_3] = Code_AFED_BGC[WORD_c];
|
|||
|
|
display0_data[FLOW_4] = Code_AFED_BGC[WORD_t];
|
|||
|
|
display0_data[FLOW_5] = Code_AFED_BGC[WORD_o];
|
|||
|
|
display0_data[FLOW_6] = Code_AFED_BGC[WORD_r];
|
|||
|
|
display0_data[FLOW_7] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
}
|
|||
|
|
else if(menuIndex == KEY_SET_COEFFIC)
|
|||
|
|
{
|
|||
|
|
display0_data[FLOW_1] = Code_AFED_BGC[WORD_C];
|
|||
|
|
display0_data[FLOW_2] = Code_AFED_BGC[WORD_O];
|
|||
|
|
display0_data[FLOW_3] = Code_AFED_BGC[WORD_E];
|
|||
|
|
display0_data[FLOW_4] = Code_AFED_BGC[WORD_F];
|
|||
|
|
display0_data[FLOW_5] = Code_AFED_BGC[WORD_F];
|
|||
|
|
display0_data[FLOW_6] = Code_AFED_BGC[WORD_I];
|
|||
|
|
display0_data[FLOW_7] = Code_AFED_BGC[WORD_C];
|
|||
|
|
}
|
|||
|
|
else if(menuIndex == KEY_CALIB_OFFSETC)
|
|||
|
|
{
|
|||
|
|
display0_data[FLOW_1] = Code_AFED_BGC[WORD_O];
|
|||
|
|
display0_data[FLOW_2] = Code_AFED_BGC[WORD_F];
|
|||
|
|
display0_data[FLOW_3] = Code_AFED_BGC[WORD_F];
|
|||
|
|
display0_data[FLOW_4] = Code_AFED_BGC[WORD_S];
|
|||
|
|
display0_data[FLOW_5] = Code_AFED_BGC[WORD_E];
|
|||
|
|
display0_data[FLOW_6] = Code_AFED_BGC[WORD_T];
|
|||
|
|
display0_data[FLOW_7] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
}
|
|||
|
|
else if(menuIndex == KEY_SET_PULSE)
|
|||
|
|
{
|
|||
|
|
display0_data[FLOW_1] = Code_AFED_BGC[WORD_P];
|
|||
|
|
display0_data[FLOW_2] = Code_AFED_BGC[WORD_U];
|
|||
|
|
display0_data[FLOW_3] = Code_AFED_BGC[WORD_L];
|
|||
|
|
display0_data[FLOW_4] = Code_AFED_BGC[WORD_S];
|
|||
|
|
display0_data[FLOW_5] = Code_AFED_BGC[WORD_E];
|
|||
|
|
display0_data[FLOW_6] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
display0_data[FLOW_7] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
}
|
|||
|
|
else if(menuIndex == KEY_SET_ADDR)
|
|||
|
|
{
|
|||
|
|
display0_data[FLOW_1] = Code_AFED_BGC[WORD_A];
|
|||
|
|
display0_data[FLOW_2] = Code_AFED_BGC[WORD_d];
|
|||
|
|
display0_data[FLOW_3] = Code_AFED_BGC[WORD_d];
|
|||
|
|
display0_data[FLOW_4] = Code_AFED_BGC[WORD_r];
|
|||
|
|
display0_data[FLOW_5] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
display0_data[FLOW_6] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
display0_data[FLOW_7] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
}
|
|||
|
|
else if(menuIndex == KEY_SET_DECIMAL_POINT)
|
|||
|
|
{
|
|||
|
|
display0_data[FLOW_1] = Code_AFED_BGC[WORD_D];
|
|||
|
|
display0_data[FLOW_2] = Code_AFED_BGC[WORD_E];
|
|||
|
|
display0_data[FLOW_3] = Code_AFED_BGC[WORD_C];
|
|||
|
|
display0_data[FLOW_4] = Code_AFED_BGC[WORD_I];
|
|||
|
|
display0_data[FLOW_5] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
display0_data[FLOW_6] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
display0_data[FLOW_7] = Code_AFED_BGC[WORD_NULL];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
LcdWriteDisplaySecond();
|
|||
|
|
keyValue = 0;
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/******************************************************************************/
|
|||
|
|
bool KeyPasswordInput(void)
|
|||
|
|
{
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 5;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_P;
|
|||
|
|
Dis1[2] = WORD_A;
|
|||
|
|
Dis1[3] = WORD_S;
|
|||
|
|
Dis1[4] = WORD_LINE;
|
|||
|
|
Dis1[5] = 0;
|
|||
|
|
Dis1[6] = 0;
|
|||
|
|
Dis1[7] = 0;
|
|||
|
|
Dis1[8] = 0;
|
|||
|
|
Dis1[9] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
Dis1[13] = WORD_NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
keyValue = 0;
|
|||
|
|
return 1;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
if(Dis1[modifyBit] >= 9) Dis1[modifyBit] = 0;
|
|||
|
|
else Dis1[modifyBit]++;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
if(modifyBit >= 8) modifyBit = 5;
|
|||
|
|
else modifyBit++;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyValue = 0;
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ComputPassWordToArray(void)
|
|||
|
|
{
|
|||
|
|
PassWord = (unsigned int)Dis1[5]*1000;
|
|||
|
|
PassWord += (unsigned int)Dis1[6]*100;
|
|||
|
|
PassWord += (unsigned int)Dis1[7]*10;
|
|||
|
|
PassWord += (unsigned int)Dis1[8];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/******************************************************************************/
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD>ϵ<EFBFBD><CFB5>
|
|||
|
|
void ModifyMeterFactor(void)
|
|||
|
|
{
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 5;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_F;
|
|||
|
|
Dis1[2] = 1;
|
|||
|
|
Dis1[3] = WORD_LINE;
|
|||
|
|
Dis1[4] = WORD_LINE;
|
|||
|
|
Dis1[9] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
Dis1[13] = WORD_NULL;
|
|||
|
|
|
|||
|
|
//display meter factor----TotalFlowRateDisplay
|
|||
|
|
setKeyBuffer = MeterFactor;
|
|||
|
|
Dis1[5] = (unsigned char)(setKeyBuffer / (unsigned int)1000);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[5] * 1000;
|
|||
|
|
Dis1[6] = (unsigned char)(setKeyBuffer / 100);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[6] * 100;
|
|||
|
|
Dis1[7] = (unsigned char)(setKeyBuffer / 10);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[7] * 10;
|
|||
|
|
Dis1[8] = (unsigned char)setKeyBuffer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
setKeyBuffer = (unsigned int)Dis1[5]*1000;
|
|||
|
|
setKeyBuffer += (unsigned int)Dis1[6]*100;
|
|||
|
|
setKeyBuffer += (unsigned int)Dis1[7]*10;
|
|||
|
|
setKeyBuffer += (unsigned int)Dis1[8];
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
setKeyType = 1;
|
|||
|
|
keyValue =0;
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
if(Dis1[modifyBit] >= 9) Dis1[modifyBit] = 0;
|
|||
|
|
else Dis1[modifyBit]++;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
if(modifyBit >= 8) modifyBit = 5;
|
|||
|
|
else modifyBit++;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyValue = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/******************************************************************************/
|
|||
|
|
//<2F>Ķ<DEB8><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void ModifyDcoefNum(void)
|
|||
|
|
{
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 5;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_P;
|
|||
|
|
Dis1[2] = WORD_N;
|
|||
|
|
Dis1[3] = WORD_LINE;
|
|||
|
|
Dis1[4] = WORD_LINE;
|
|||
|
|
|
|||
|
|
Dis1[6] = WORD_NULL; Dis1[7] = WORD_NULL; Dis1[8] = WORD_NULL;
|
|||
|
|
Dis1[9] = WORD_NULL; Dis1[10] = WORD_NULL; Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL; Dis1[13] = WORD_NULL;
|
|||
|
|
|
|||
|
|
Dis1[5] = dcoefNum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
temp_dcoefNum = Dis1[5];
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
keyValue = 0;
|
|||
|
|
setKeyType = 1;
|
|||
|
|
setIndex = 0;
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
if(Dis1[modifyBit] >= 7) Dis1[modifyBit] = 0;
|
|||
|
|
else Dis1[modifyBit]++;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
keyValue = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**************************************************************************************/
|
|||
|
|
void ModifyDcoefNode(void)
|
|||
|
|
{
|
|||
|
|
unsigned long int temp;
|
|||
|
|
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 5;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_P;
|
|||
|
|
Dis1[2] = setIndex+1;
|
|||
|
|
Dis1[3] = WORD_LINE;
|
|||
|
|
Dis1[4] = WORD_LINE;
|
|||
|
|
|
|||
|
|
temp = dcoefNode[setIndex];
|
|||
|
|
temp /= 100;
|
|||
|
|
Dis1[5] = (unsigned char)(temp / (unsigned long int)10000);
|
|||
|
|
temp = temp - (unsigned long int)Dis1[5] * 10000;
|
|||
|
|
Dis1[6] = (unsigned char)(temp / (unsigned long int)1000);
|
|||
|
|
temp = temp - (unsigned long int)Dis1[6] * 1000;
|
|||
|
|
Dis1[7] = (unsigned char)(temp / 100);
|
|||
|
|
temp = temp - (unsigned long int)Dis1[7] * 100;
|
|||
|
|
Dis1[8] = (unsigned char)(temp / 10);
|
|||
|
|
temp = temp - (unsigned long int)Dis1[8] * 10;
|
|||
|
|
Dis1[9] = (unsigned char)temp;
|
|||
|
|
|
|||
|
|
display1_data[ACC_POINT] |= (unsigned char)ACC_POINT_BIT;
|
|||
|
|
display1_data[ACC_NM3] |= (unsigned char)ACC_NM3_BIT;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
temp_dcoefNode[setIndex] = (unsigned long int)Dis1[5] * 1000000;
|
|||
|
|
temp_dcoefNode[setIndex] += (unsigned long int)Dis1[6] * 100000;
|
|||
|
|
temp_dcoefNode[setIndex] += (unsigned long int)Dis1[7] * 10000;
|
|||
|
|
temp_dcoefNode[setIndex] += (unsigned long int)Dis1[8] * 1000;
|
|||
|
|
temp_dcoefNode[setIndex] += (unsigned long int)Dis1[9] * 100;
|
|||
|
|
setKeyType = 2;
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
keyValue = 0;
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
Dis1[modifyBit]++;
|
|||
|
|
if(Dis1[modifyBit] > 9) Dis1[modifyBit] = 0;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
modifyBit++;
|
|||
|
|
if(modifyBit > 9) modifyBit = 5;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
display1_data[ACC_POINT] |= (unsigned char)ACC_POINT_BIT;
|
|||
|
|
display1_data[ACC_NM3] |= (unsigned char)ACC_NM3_BIT;
|
|||
|
|
keyValue = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool ModifyDcoefVal(void)
|
|||
|
|
{
|
|||
|
|
unsigned int temp;
|
|||
|
|
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 5;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[4] = WORD_LINE;
|
|||
|
|
|
|||
|
|
Dis1[9] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
|
|||
|
|
temp = dcoefVal[setIndex];
|
|||
|
|
Dis1[5] = (unsigned char)(temp / (unsigned int)1000);
|
|||
|
|
temp = temp - (unsigned int)Dis1[5] * 1000;
|
|||
|
|
Dis1[6] = (unsigned char)(temp / 100);
|
|||
|
|
temp = temp - (unsigned int)Dis1[6] * 100;
|
|||
|
|
Dis1[7] = (unsigned char)(temp / 10);
|
|||
|
|
temp = temp - (unsigned int)Dis1[7] * 10;
|
|||
|
|
Dis1[8] = (unsigned char)temp;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
temp_dcoefVal[setIndex] = (unsigned long int)Dis1[5] * 1000;
|
|||
|
|
temp_dcoefVal[setIndex] += (unsigned long int)Dis1[6] * 100;
|
|||
|
|
temp_dcoefVal[setIndex] += (unsigned long int)Dis1[7] * 10;
|
|||
|
|
temp_dcoefVal[setIndex] += (unsigned long int)Dis1[8];
|
|||
|
|
keyValue = 0;
|
|||
|
|
return 1;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
if(Dis1[modifyBit] >= 9) Dis1[modifyBit] = 0;
|
|||
|
|
else Dis1[modifyBit]++;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
if(modifyBit >= 8) modifyBit = 5;
|
|||
|
|
else modifyBit++;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyValue = 0;
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* *******************************************************************************
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>УС<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣
|
|||
|
|
ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>УС<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣺
|
|||
|
|
1<EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>
|
|||
|
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1min
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>ܶ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>졣
|
|||
|
|
|
|||
|
|
ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>彫<EFBFBD><EFBFBD>ʾУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SET<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>У<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>ִ<EFBFBD>д˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ѡ<EFBFBD>洢<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>㡱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
|||
|
|
******************************************************************************* */
|
|||
|
|
void CalibrateOffsetC(void)
|
|||
|
|
{
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 4;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
//<2F><>˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰʹ<C7B0>õ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Dis1[1] = WORD_O;
|
|||
|
|
Dis1[2] = WORD_L;
|
|||
|
|
Dis1[3] = WORD_D;
|
|||
|
|
Dis1[4] = WORD_NULL;
|
|||
|
|
Dis1[5] = WORD_NULL;
|
|||
|
|
Dis1[6] = WORD_NULL;
|
|||
|
|
|
|||
|
|
setKeyBuffer = offsetGas;
|
|||
|
|
Dis1[7] = (unsigned char)(setKeyBuffer / (unsigned int)10000);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[7] * 10000;
|
|||
|
|
|
|||
|
|
Dis1[8] = (unsigned char)(setKeyBuffer / (unsigned int)1000);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[8] * 1000;
|
|||
|
|
|
|||
|
|
Dis1[9] = (unsigned char)(setKeyBuffer / 100);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[9] * 100;
|
|||
|
|
Dis1[10] = setKeyBuffer / 10;
|
|||
|
|
|
|||
|
|
setKeyBuffer = (unsigned char)(setKeyBuffer - (unsigned int)Dis1[10] * 10);
|
|||
|
|
Dis1[11] = (unsigned char)setKeyBuffer;
|
|||
|
|
|
|||
|
|
display0_data[FLOW_1] = Code_AFED_BGC[Dis1[1]];
|
|||
|
|
display0_data[FLOW_2] = Code_AFED_BGC[Dis1[2]];
|
|||
|
|
display0_data[FLOW_3] = Code_AFED_BGC[Dis1[3]];
|
|||
|
|
display0_data[FLOW_4] = Code_AFED_BGC[Dis1[4]];
|
|||
|
|
display0_data[FLOW_5] = Code_AFED_BGC[Dis1[5]];
|
|||
|
|
display0_data[FLOW_6] = Code_AFED_BGC[Dis1[6]];
|
|||
|
|
|
|||
|
|
display0_data[FLOW_7] = Code_AFED_BGC[Dis1[7]];
|
|||
|
|
display0_data[FLOW_8] = Code_AFED_BGC[Dis1[8]];
|
|||
|
|
display0_data[FLOW_9] = Code_AFED_BGC[Dis1[9]];
|
|||
|
|
display0_data[FLOW_10] = Code_AFED_BGC[Dis1[10]];
|
|||
|
|
display0_data[FLOW_11] = Code_AFED_BGC[Dis1[11]];
|
|||
|
|
LcdWriteDisplaySecond();
|
|||
|
|
|
|||
|
|
// <20>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>˲<EFBFBD><CBB2>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><C8A1>ǰ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
|||
|
|
Dis1[1] = WORD_NULL;
|
|||
|
|
Dis1[2] = WORD_NULL;
|
|||
|
|
Dis1[3] = WORD_NULL;
|
|||
|
|
Dis1[8] = WORD_NULL;
|
|||
|
|
Dis1[9] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
|
|||
|
|
setKeyBuffer = ReadDataFromMovingAverage(NIDX);
|
|||
|
|
Dis1[4] = (unsigned char)(setKeyBuffer / (unsigned int)10000);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[4] * 10000;
|
|||
|
|
|
|||
|
|
Dis1[5] = (unsigned char)(setKeyBuffer / (unsigned int)1000);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[5] * 1000;
|
|||
|
|
|
|||
|
|
Dis1[6] = (unsigned char)(setKeyBuffer / 100);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[6] * 100;
|
|||
|
|
|
|||
|
|
Dis1[7] = setKeyBuffer / 10;
|
|||
|
|
setKeyBuffer = (unsigned char)(setKeyBuffer - (unsigned int)Dis1[7] * 10);
|
|||
|
|
|
|||
|
|
Dis1[8] = (unsigned char)setKeyBuffer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
ClearDisplay();
|
|||
|
|
setKeyBuffer = ReadDataFromMovingAverage(NIDX);
|
|||
|
|
keyValue = 0;
|
|||
|
|
setKeyType = 1;
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
//case UPPER_KEY:
|
|||
|
|
// ClearDisplay();
|
|||
|
|
// setKeyType = 0;
|
|||
|
|
// keyFlag = DISPLAY_MENU;
|
|||
|
|
// break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyValue = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*********************************************************************************/
|
|||
|
|
//<2F><EFBFBD><DEB8><EFBFBD><EFBFBD>嵱<EFBFBD><E5B5B1>
|
|||
|
|
void ModifyLPFactoryLiterPerPulse(void)
|
|||
|
|
{
|
|||
|
|
unsigned int I;
|
|||
|
|
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 5;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_NULL;
|
|||
|
|
Dis1[2] = WORD_NULL;
|
|||
|
|
Dis1[3] = WORD_NULL;
|
|||
|
|
Dis1[4] = WORD_NULL;
|
|||
|
|
|
|||
|
|
Dis1[5] = 0; Dis1[6] = 0; Dis1[7] = 0; Dis1[8] = 0; Dis1[9] = 0;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_L;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
Dis1[13] = WORD_NULL;
|
|||
|
|
|
|||
|
|
setKeyBuffer = factoryUnitPerPulse;
|
|||
|
|
if(setKeyBuffer == 10000) modifyBit = 5; //1000 L
|
|||
|
|
else if(setKeyBuffer == 1000) modifyBit = 6; //100 L
|
|||
|
|
else if(setKeyBuffer == 100) modifyBit = 7; //10 L
|
|||
|
|
else if(setKeyBuffer == 10) modifyBit = 8; //1 L
|
|||
|
|
else if(setKeyBuffer == 1) modifyBit = 9; //0.1 L
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
if(modifyBit == 5) setKeyBuffer = 10000;
|
|||
|
|
else if(modifyBit == 6) setKeyBuffer = 1000;
|
|||
|
|
else if(modifyBit == 7) setKeyBuffer = 100;
|
|||
|
|
else if(modifyBit == 8) setKeyBuffer = 10;
|
|||
|
|
else if(modifyBit == 9) setKeyBuffer = 1;
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
setKeyType = 1;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
if(modifyBit >= 9) modifyBit = 5;
|
|||
|
|
else modifyBit++;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Dis1[5] = Dis1[6] = Dis1[7] = Dis1[8] = Dis1[9] = 0;
|
|||
|
|
Dis1[modifyBit] = 1;
|
|||
|
|
for(I = 5; I < 9; I++)
|
|||
|
|
{
|
|||
|
|
if(Dis1[I] != 0) break;
|
|||
|
|
display1_data[ACC_1 + I - 1] &= (unsigned char)BIT0;
|
|||
|
|
}
|
|||
|
|
display1_data[ACC_POINT] |= (unsigned char)ACC_POINT_BIT;
|
|||
|
|
|
|||
|
|
keyValue =0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/******************************************************************************/
|
|||
|
|
void ModifyModBusAdr(void)
|
|||
|
|
{
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 6;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_F;
|
|||
|
|
Dis1[2] = 5;
|
|||
|
|
Dis1[3] = WORD_LINE;
|
|||
|
|
Dis1[4] = WORD_LINE;
|
|||
|
|
|
|||
|
|
Dis1[5] = WORD_NULL;
|
|||
|
|
Dis1[9] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
Dis1[13] = WORD_NULL;
|
|||
|
|
|
|||
|
|
setKeyBuffer = localAddress;
|
|||
|
|
Dis1[6] = (unsigned char)(setKeyBuffer / (unsigned int)100);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[6] * 100;
|
|||
|
|
Dis1[7] = (unsigned char)(setKeyBuffer / 10);
|
|||
|
|
setKeyBuffer = setKeyBuffer - (unsigned int)Dis1[7] * 10;
|
|||
|
|
Dis1[8] = (unsigned char)setKeyBuffer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
setKeyBuffer = (unsigned int)Dis1[6]*100;
|
|||
|
|
setKeyBuffer += (unsigned int)Dis1[7]*10;
|
|||
|
|
setKeyBuffer += (unsigned int)Dis1[8];
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
setKeyType = 1;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
if(modifyBit == 6)
|
|||
|
|
{
|
|||
|
|
if(Dis1[modifyBit] >= 2) Dis1[modifyBit] = 0;
|
|||
|
|
else Dis1[modifyBit]++;
|
|||
|
|
}
|
|||
|
|
else if(modifyBit == 7)
|
|||
|
|
{
|
|||
|
|
if(Dis1[modifyBit] >= 9) Dis1[modifyBit] = 0;
|
|||
|
|
else Dis1[modifyBit]++;
|
|||
|
|
|
|||
|
|
if( (Dis1[6] == 2) && (Dis1[7] > 3) && (Dis1[8] > 7) ) Dis1[8] = 7;
|
|||
|
|
if( (Dis1[6] == 2) && (Dis1[7] > 4) ) Dis1[modifyBit] = 0;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if((Dis1[6] == 2) && (Dis1[7] == 4) && (Dis1[modifyBit] >= 7)) Dis1[modifyBit] = 0;
|
|||
|
|
else if((Dis1[6] == 0) && (Dis1[7] == 0) && (Dis1[modifyBit] >= 9)) Dis1[modifyBit] = 1;
|
|||
|
|
else if(Dis1[modifyBit] >= 9) Dis1[modifyBit] = 0;
|
|||
|
|
else Dis1[modifyBit]++;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
if(modifyBit >= 8) modifyBit = 6;
|
|||
|
|
else modifyBit++;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyValue = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ModifyUartDecimalPoint(void)
|
|||
|
|
{
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
modifyBit = 6;
|
|||
|
|
keyValue = 0;
|
|||
|
|
keyFlag = FLASH_BIT;
|
|||
|
|
ClearDisplay();
|
|||
|
|
|
|||
|
|
Dis1[1] = WORD_F;
|
|||
|
|
Dis1[2] = 6;
|
|||
|
|
Dis1[3] = WORD_LINE;
|
|||
|
|
Dis1[4] = WORD_LINE;
|
|||
|
|
|
|||
|
|
Dis1[5] = WORD_NULL;
|
|||
|
|
Dis1[6] = WORD_NULL;
|
|||
|
|
Dis1[7] = WORD_NULL;
|
|||
|
|
Dis1[9] = WORD_NULL;
|
|||
|
|
Dis1[10] = WORD_NULL;
|
|||
|
|
Dis1[11] = WORD_NULL;
|
|||
|
|
Dis1[12] = WORD_NULL;
|
|||
|
|
Dis1[13] = WORD_NULL;
|
|||
|
|
|
|||
|
|
setKeyBuffer = uartDecimalPoint;
|
|||
|
|
Dis1[8] = (unsigned char)setKeyBuffer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch(keyValue)
|
|||
|
|
{
|
|||
|
|
case FUN_KEY:
|
|||
|
|
setKeyBuffer = (unsigned int)Dis1[8];
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
setKeyType = 1;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UPPER_KEY:
|
|||
|
|
if(Dis1[8] == 3) Dis1[8] = 4;
|
|||
|
|
else Dis1[8] = 3;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case SHIFT_KEY:
|
|||
|
|
if(Dis1[8] == 3) Dis1[8] = 4;
|
|||
|
|
else Dis1[8] = 3;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyValue = 0;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/******************************************************************************/
|
|||
|
|
//<2F><EFBFBD><CDB9>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/******************************************************************************
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>
|
|||
|
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>밴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>1111<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
1<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>SET-FCOE<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD>ϵ<EFBFBD><EFBFBD>MeterFactor<EFBFBD><EFBFBD>
|
|||
|
|
2<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>SET_DCOE<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>2222<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>device coefficients<EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
<EFBFBD>û<EFBFBD>ѡ<EFBFBD><EFBFBD>return<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>SET-Y<EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void KeyInputProcessing(void)
|
|||
|
|
{
|
|||
|
|
isEnableLowPowerMode = 0;
|
|||
|
|
FlashBitForSetup();
|
|||
|
|
ReadKeyValue();
|
|||
|
|
if(keyValue == 0) return;
|
|||
|
|
IDvalidTime = 0;
|
|||
|
|
|
|||
|
|
KeyInputNext:
|
|||
|
|
if(keyFlag == DISPLAY_MENU)
|
|||
|
|
{
|
|||
|
|
keyDealFlag = DisplaySetIndex();
|
|||
|
|
if(keyDealFlag == 1) goto KeyInputNext;
|
|||
|
|
else if(keyDealFlag == 2) goto KeyInputReturn;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
// input password
|
|||
|
|
switch(menuIndex)
|
|||
|
|
{
|
|||
|
|
case KEY_INIT_PASSWORD:
|
|||
|
|
if(keyFlag == DIS_PARA_INT)
|
|||
|
|
{
|
|||
|
|
if(keyValue == SHIFT_KEY) goto KeyInputReturn;
|
|||
|
|
if(keyValue == UPPER_KEY) goto KeyInputReturn;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(!KeyPasswordInput()) break;
|
|||
|
|
ComputPassWordToArray();
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
if(PassWord != LEVEL_1_PASSWORD) goto KeyInputReturn;
|
|||
|
|
menuIndex = 1;
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
goto KeyInputNext;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case KEY_SET_METERFACTOR: //F1 <20><><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD>ϵ<EFBFBD><CFB5>
|
|||
|
|
if(setKeyType == 0) ModifyMeterFactor();
|
|||
|
|
if(setKeyType == 1)
|
|||
|
|
{
|
|||
|
|
keyDealFlag = SaveModifyValue();
|
|||
|
|
keyValue = 0;
|
|||
|
|
if(keyDealFlag == NEXT) break;
|
|||
|
|
setKeyType = 0;
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
if(keyDealFlag != SAVE) goto KeyInputNext;
|
|||
|
|
|
|||
|
|
MeterFactor = setKeyBuffer;
|
|||
|
|
tempL.DWord = (unsigned long int)MeterFactor;
|
|||
|
|
tempL.Byte[METER_FACTOR_CRC] = CRC8(tempL.Byte, METER_FACTOR_CRC);
|
|||
|
|
WriteMultiByteToEEPROM(METER_FACTOR, tempL.Byte, METER_FACTOR_WIDTH, PARA_EEPROM);
|
|||
|
|
goto KeyInputNext;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case KEY_SET_COEFFIC: //F2 <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
|
|||
|
|
if(PassWord != LEVEL_2_PASSWORD) //2222
|
|||
|
|
{
|
|||
|
|
if(!KeyPasswordInput()) break;
|
|||
|
|
ComputPassWordToArray();
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
if(PassWord != LEVEL_2_PASSWORD) goto KeyInputNext;
|
|||
|
|
setKeyType = 0;
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
KeyInputLoop:
|
|||
|
|
if(setKeyType == 0) ModifyDcoefNum();
|
|||
|
|
if(setKeyType == 1) ModifyDcoefNode();
|
|||
|
|
if(setKeyType == 2)
|
|||
|
|
{
|
|||
|
|
if(ModifyDcoefVal())
|
|||
|
|
{
|
|||
|
|
setIndex++;
|
|||
|
|
setKeyType = 1;
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
if(setIndex < temp_dcoefNum) goto KeyInputLoop;
|
|||
|
|
keyValue = 0;
|
|||
|
|
setKeyType = 3;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(setKeyType == 3)
|
|||
|
|
{
|
|||
|
|
keyDealFlag = SaveModifyValue();
|
|||
|
|
keyValue = 0;
|
|||
|
|
if(keyDealFlag == NEXT) break;
|
|||
|
|
PassWord = 0;
|
|||
|
|
setKeyType = 0;
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
if(keyDealFlag != SAVE) goto KeyInputNext;
|
|||
|
|
// <20>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
|
|||
|
|
dcoefNum = temp_dcoefNum;
|
|||
|
|
tempL.Byte[0] = dcoefNum;
|
|||
|
|
tempL.Byte[1] = CRC8(tempL.Byte, 1);
|
|||
|
|
WriteMultiByteToEEPROM(DCOEF_NUM, &tempL.Byte[0], DCOEF_NUM_WIDTH, PARA_EEPROM);
|
|||
|
|
for(setIndex = 0; setIndex < dcoefNum; setIndex++)
|
|||
|
|
{
|
|||
|
|
dcoefNode[setIndex] = temp_dcoefNode[setIndex];
|
|||
|
|
dcoefVal[setIndex] = temp_dcoefVal[setIndex];
|
|||
|
|
StoreDevCoefNodeAndValue(setIndex);
|
|||
|
|
}
|
|||
|
|
RetriveDevCoef();
|
|||
|
|
goto KeyInputNext;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case KEY_CALIB_OFFSETC: //F3 <20><><EFBFBD><EFBFBD>Уoffset c
|
|||
|
|
if(PassWord != LEVEL_3_PASSWORD) //0520
|
|||
|
|
{
|
|||
|
|
if(!KeyPasswordInput()) break;
|
|||
|
|
ComputPassWordToArray();
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
if(PassWord != LEVEL_3_PASSWORD) goto KeyInputNext;
|
|||
|
|
keyFlag = DIS_PARA_INT;
|
|||
|
|
}
|
|||
|
|
if(setKeyType == 0) CalibrateOffsetC();
|
|||
|
|
if(setKeyType == 1)
|
|||
|
|
{
|
|||
|
|
keyDealFlag = SaveModifyValue();
|
|||
|
|
keyValue = 0;
|
|||
|
|
if(keyDealFlag == NEXT) break;
|
|||
|
|
PassWord = 0;
|
|||
|
|
setKeyType = 0;
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
if(keyDealFlag != SAVE) goto KeyInputNext;
|
|||
|
|
offsetGas = setKeyBuffer;
|
|||
|
|
tempL.DWord = (unsigned long int)setKeyBuffer;
|
|||
|
|
tempL.Byte[OFFSET_GAS_CRC] = CRC8(tempL.Byte, OFFSET_GAS_CRC);
|
|||
|
|
WriteMultiByteToEEPROM(OFFSET_GAS, tempL.Byte, OFFSET_GAS_WIDTH, PARA_EEPROM);
|
|||
|
|
goto KeyInputNext;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case KEY_SET_PULSE: //F4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嵱<EFBFBD><E5B5B1>
|
|||
|
|
if(setKeyType == 0) ModifyLPFactoryLiterPerPulse();
|
|||
|
|
if(setKeyType == 1)
|
|||
|
|
{
|
|||
|
|
keyDealFlag = SaveModifyValue();
|
|||
|
|
keyValue = 0;
|
|||
|
|
if(keyDealFlag == NEXT) break;
|
|||
|
|
setKeyType = 0;
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
if(keyDealFlag != SAVE) goto KeyInputNext;
|
|||
|
|
if(factoryUnitPerPulse == (unsigned int)setKeyBuffer) goto KeyInputNext;
|
|||
|
|
|
|||
|
|
lastRemaining = 0;
|
|||
|
|
factoryUnitPerPulse = setKeyBuffer;
|
|||
|
|
tempL.DWord = (unsigned long int)factoryUnitPerPulse;
|
|||
|
|
tempL.Byte[PULSE_UNIT_CRC] = CRC8(tempL.Byte, PULSE_UNIT_CRC);
|
|||
|
|
WriteMultiByteToEEPROM(PULSE_UNIT, tempL.Byte, PULSE_UNIT_WIDTH, PARA_EEPROM);
|
|||
|
|
goto KeyInputNext;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case KEY_SET_ADDR: //F5 <20><><EFBFBD><EFBFBD>MODBUS
|
|||
|
|
if(setKeyType == 0) ModifyModBusAdr();
|
|||
|
|
if(setKeyType == 1)
|
|||
|
|
{
|
|||
|
|
keyDealFlag = SaveModifyValue();
|
|||
|
|
keyValue = 0;
|
|||
|
|
if(keyDealFlag == NEXT) break;
|
|||
|
|
setKeyType = 0;
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
if(keyDealFlag != SAVE) goto KeyInputNext;
|
|||
|
|
localAddress = setKeyBuffer;
|
|||
|
|
tempL.DWord = (unsigned long int)localAddress;
|
|||
|
|
tempL.Byte[SLAVER_ADDR_CRC] = CRC8(tempL.Byte, SLAVER_ADDR_CRC);
|
|||
|
|
WriteMultiByteToEEPROM(SLAVER_ADDR, tempL.Byte, SLAVER_ADDR_WIDTH, PARA_EEPROM);
|
|||
|
|
goto KeyInputNext;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case KEY_SET_DECIMAL_POINT: //F5 <20><><EFBFBD><EFBFBD>MODBUS
|
|||
|
|
if(setKeyType == 0) ModifyUartDecimalPoint();
|
|||
|
|
if(setKeyType == 1)
|
|||
|
|
{
|
|||
|
|
keyDealFlag = SaveModifyValue();
|
|||
|
|
keyValue = 0;
|
|||
|
|
if(keyDealFlag == NEXT) break;
|
|||
|
|
setKeyType = 0;
|
|||
|
|
keyFlag = DISPLAY_MENU;
|
|||
|
|
if(keyDealFlag != SAVE) goto KeyInputNext;
|
|||
|
|
uartDecimalPoint = (unsigned char)setKeyBuffer;
|
|||
|
|
tempL.DWord = (unsigned long int)uartDecimalPoint;
|
|||
|
|
tempL.Byte[COM_DECIMAL_POINT_CRC] = CRC8(tempL.Byte, COM_DECIMAL_POINT_CRC);
|
|||
|
|
WriteMultiByteToEEPROM(COM_DECIMAL_POINT, tempL.Byte, COM_DECIMAL_POINT_WIDTH, PARA_EEPROM);
|
|||
|
|
goto KeyInputNext;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
//case KEY_SET_SAVE: //<2F>˳<EFBFBD><CBB3>˵<EFBFBD>-<2D><><EFBFBD><EFBFBD>/<2F>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>ֵѡ<D6B5><D1A1>
|
|||
|
|
// if(ReturnKeySetSub()) goto KeyInputReturn;
|
|||
|
|
// break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
goto KeyInputReturn;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
keyValue = 0;
|
|||
|
|
DisplayEditMenu();
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
KeyInputReturn:
|
|||
|
|
KeyReset();
|
|||
|
|
DisableKeyInterrupt();
|
|||
|
|
NumericPrepForOutputAndDisplay();
|
|||
|
|
return;
|
|||
|
|
}
|