📄 adj7022.c
字号:
#define AdjStep 4213
void AdjATT7022(void)
{
unsigned long tmpAdj[37];
unsigned int tmpOffsetTemp,TMP; // 温度偏差
unsigned char i,j;
if((F_Chked==0x1234)&&((P1IN&SW2)==SW2))
{
for(i=0; i<=36; i++) tmpAdj[i]=Adj[i];
tmpOffsetTemp=OffsetTemp;
}
else
{
for(i=0; i<=36; i++) tmpAdj[i]=CheckMeterPara[i];
tmpOffsetTemp=1723; // 1615+6*18; 温度传感器的最大偏差达 5%,即 18度 =6*18=108
}
spi_init((unsigned long *)&tmpAdj[0]);
_EINT();
TempStart();
TMP=TAR;
while(TAR-TMP<4095) {}; // delay 125ms
CalTemp(tmpOffsetTemp);
_EINT();
i=0;
LcdFill(0);
AdjDisplay(i+1);
DM.MetStatus=F_Chk;
while(i<=13)
{
if((DM.KeyFlg & F_KeyInt)==F_KeyInt)
{
if((DM.KeyFlg & F_Key1)==F_Key1)
{
switch(i)
{
case 0: // 功率增益校正-- A
tmpAdj[4]=tmpAdj[4]+AdjStep;
spi_write_parameter(CheckMeterAddr[4],tmpAdj[4]);
tmpAdj[7]=tmpAdj[7]+AdjStep;
spi_write_parameter(CheckMeterAddr[7],tmpAdj[7]);
break;
case 1: // 功率增益校正-- B
tmpAdj[5]=tmpAdj[5]+AdjStep;
spi_write_parameter(CheckMeterAddr[5],tmpAdj[5]);
tmpAdj[8]=tmpAdj[8]+AdjStep;
spi_write_parameter(CheckMeterAddr[8],tmpAdj[8]);
break;
case 2: // 功率增益校正-- C
tmpAdj[6]=tmpAdj[6]+AdjStep;
spi_write_parameter(CheckMeterAddr[6],tmpAdj[6]);
tmpAdj[9]=tmpAdj[9]+AdjStep;
spi_write_parameter(CheckMeterAddr[9],tmpAdj[9]);
break;
case 3: // 相位校正-- A
for(j=10; j<=14; j++)
{
tmpAdj[j]=tmpAdj[j]+2000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
}
break;
case 4: // 相位校正-- B
for(j=15; j<=19; j++)
{
tmpAdj[j]=tmpAdj[j]+2000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
}
break;
case 5: // 相位校正-- C
for(j=20; j<=24; j++)
{
tmpAdj[j]=tmpAdj[j]+2000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
}
break;
case 6: // 电压增益校正-- A
j=25;
tmpAdj[j]=tmpAdj[j]+10000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
break;
case 7: // 电压增益校正-- B
j=26;
tmpAdj[j]=tmpAdj[j]+10000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
break;
case 8: // 电压增益校正-- C
j=27;
tmpAdj[j]=tmpAdj[j]+10000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
break;
case 9: // 电流增益校正-- A
j=32;
tmpAdj[j]=tmpAdj[j]+1000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
break;
case 10: // 电流增益校正-- B
j=33;
tmpAdj[j]=tmpAdj[j]+1000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
break;
case 11: // 电流增益校正-- C
j=34;
tmpAdj[j]=tmpAdj[j]+1000;
spi_write_parameter(CheckMeterAddr[j],tmpAdj[j]);
break;
case 12: // 温度校正
TempStart();
tmpOffsetTemp=tmpOffsetTemp-6; // 调整 1 摄氏度
CalTemp(tmpOffsetTemp);
break;
default:
break;
}
DM.KeyFlg &=~F_Key1;
}
if((DM.KeyFlg & F_Key2)==F_Key2)
{
i++;
DM.KeyFlg &=~F_Key2;
}
switch(i)
{
case 6: // 电压增益校正-- A
ReadU(PhsA);
Display(21);
break;
case 7: // 电压增益校正-- B
ReadU(PhsB);
Display(22);
break;
case 8: // 电压增益校正-- C
ReadU(PhsC);
Display(23);
break;
case 9: // 电流增益校正-- A
ReadI(PhsA);
Display(21);
break;
case 10: // 电流增益校正-- B
ReadI(PhsB);
Display(22);
break;
case 11: // 电流增益校正-- C
ReadI(PhsC);
Display(23);
break;
case 12: // 温度偏差
AdjDisplayTemp();
break;
case 13: // 'End'
AdjDisplayEnd();
break;
default:
break;
}
AdjDisplay(i+1);
DM.KeyFlg &=~F_KeyInt;
}
_NOP();
}
FlashClear( LMonPtr[8] );
Flash_byte_memcpy((unsigned char *)LMonPtr[8], (unsigned char *)&tmpAdj[0], 148 );
FlashWtWord( (int*)&OffsetTemp, tmpOffsetTemp );
FlashWtWord( &F_Chked, 0x1234 );
FlashSecure();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -