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

📄 adj7022.c

📁 MSP430单片机与多功能计量芯片7022通讯程序
💻 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 + -