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

📄 systemprocess.c

📁 MSP430FE42X复费率电表DEMO(编译器 IAR 3.42A)
💻 C
📖 第 1 页 / 共 2 页
字号:
      {
      case 0:
        {

        }break;
      case 1:
        {
          DM.ucCalibrationMode = 0x05;
        }break;
      }
    }break;
  case 9:
    {
      SM.LcdCtl.PagePtr=NomMaxPages+5;
      DM.tmpPtr[0]=2;
      switch(DM.ucKeyCalibrationStep)
      {
      case 0:
        {

        }break;
      case 1:
        {
          DM.ucCalibrationMode = 0x06;
        }break;
      }
    }break;
  case 10:
    {
      SM.LcdCtl.PagePtr=NomMaxPages+6;
      DM.tmpPtr[0]=2;
      switch(DM.ucKeyCalibrationStep)
      {
      case 0:
        {

        }break;
      case 1:
        {
          DM.ucCalibrationMode = 0x07;
        }break;
      }
    }break;
  case 11:
    {
      SM.LcdCtl.PagePtr=NomMaxPages+6;
      DM.tmpPtr[0]=2;
      switch(DM.ucKeyCalibrationStep)
      {
      case 0:
        {

        }break;
      case 1:
        {
          DM.ucCalibrationMode = 0x08;
        }break;
      }
    }break;
	case 12:
    {
      SM.LcdCtl.PagePtr=NomMaxPages+8;
      DM.tmpPtr[0]=2;
      switch(DM.ucKeyCalibrationStep)
      {
      case 0:
        {

        }break;
      case 1:
        {
          DM.ucCalibrationMode = 0x09;
        }break;
      }
    }break;	
		

#endif
  }
}

void CalibrationOperationSub(long value)
{
#ifdef TAMPER_DETECTION
  switch(DM.ucKeyCalibrationStep)
  {
  case 1:{
           SM.Cfg.EspPar.uiAdaptI1 += value;
           if(SM.Cfg.EspPar.uiAdaptI1<0x4000)
           {
             SM.Cfg.EspPar.uiAdaptI1=0x4000;
           }
           if(SM.Cfg.EspPar.uiAdaptI1>0x7FFF)
           {
             SM.Cfg.EspPar.uiAdaptI1=0x7FFF;
           }
         }break;
  case 2:{
           SM.Cfg.EspPar.uiAdaptI2 += value;
           if(SM.Cfg.EspPar.uiAdaptI2<0x4000)
           {
             SM.Cfg.EspPar.uiAdaptI2=0x4000;
           }
           if(SM.Cfg.EspPar.uiAdaptI2>0x7FFF)
           {
             SM.Cfg.EspPar.uiAdaptI2=0x7FFF;
           }
         }break;
  case 3:{SM.Cfg.EspPar.uiGainCorr1 += value; }break;
  case 4:{SM.Cfg.EspPar.lPowerOffset1 += value; }break;
  case 5:{SM.Cfg.EspPar.iPhaseCorr1 += value; }break;

  case 6:{SM.Cfg.EspPar.uiGainCorr2 += value; }break;
  case 7:{SM.Cfg.EspPar.lPowerOffset2 += value; }break;
  case 8:{SM.Cfg.EspPar.iPhaseCorr2 += value; }break;

  case 9:{SM.Cfg.EspPar.uiV1Gain += value; }break;
  case 10:{SM.Cfg.EspPar.ulIGain += value; }break;
  case 11:{SM.Cfg.EspPar.iTempSampleOffset += value; }break;

  //case 13:{SM.Cfg.EspPar.iV1Offset += value; }break;
  //case 14:{SM.Cfg.EspPar.iI1Offset += value; }break;
  //case 15:{SM.Cfg.EspPar.iI2Offset += value; }break;

  }
#else
  switch(DM.ucKeyCalibrationStep)
  {
  case 1:{SM.Cfg.EspPar.uiGainCorr1 += value; }break;
  case 2:{SM.Cfg.EspPar.lPowerOffset1 += value; }break;
  case 3:{SM.Cfg.EspPar.iPhaseCorr1 += value; }break;

  case 4:{SM.Cfg.EspPar.uiV1Gain += value; }break;
  case 5:{SM.Cfg.EspPar.ulIGain += value; }break;
  case 6:{SM.Cfg.EspPar.iTempSampleOffset += value; }break;

  //case 7:{SM.Cfg.EspPar.iV1Offset += value; }break;
  //case 8:{SM.Cfg.EspPar.iI1Offset += value; }break;
  }
#endif
}


void KEY_Process(void)
{
  SystemEventFlag &= ~SYSTEM_KEY_FLAG;

  TACCR2 = TAR+32768;
  TACCTL2 = CCIE;

  switch(DM.ucKeyFlg)
  {
  case KEY_UP_FLAG:
    {
      DM.ucKeyFlg &= ~KEY_UP_FLAG;
      switch(DM.ucKeyMode)
      {
      case 0:
        {
          SM.LcdCtl.PagePtr--;SM.LcdCtl.SecCtr=0;
          if(SM.LcdCtl.PagePtr==0xFF)SM.LcdCtl.PagePtr=NomMaxPages;

        }break;
      case 1:
        {
          DM.ucKeyCalibrationMode++;
          if(DM.ucKeyCalibrationMode>3)
          {
            DM.ucKeyCalibrationStep=0;
            DM.ucEspCalStep = 0;
          }
          if(DM.ucKeyCalibrationMode>METCHK_MODE)
          {
            DM.ucKeyCalibrationMode=0;
            DM.ucKeyCalibrationStep=1;
            SystemEventFlag |= SYSTEM_ESPPARAM_FLAG;
            //DM.uc_KeyCalibrationStep=0;
          }
          CalibrationLcdPtr();
        }break;
      }
    }break;
  case KEY_DOWN_FLAG:
    {
      DM.ucKeyFlg &= ~KEY_DOWN_FLAG;
      switch(DM.ucKeyMode)
      {
      case 0:
        {
          SM.LcdCtl.PagePtr++;SM.LcdCtl.SecCtr=0;
          if(SM.LcdCtl.PagePtr>NomMaxPages)SM.LcdCtl.PagePtr=0;
        }break;
      case 1:
        {
          switch(DM.ucKeyCalibrationMode)
          {
          case 0:
            {

            }break;
          case 1:
            {
              DM.ucKeyCalibrationStep++;
              SM.LcdCtl.PagePtr++;

              if(DM.ucKeyCalibrationStep>CALNUM)
              {
                DM.ucKeyCalibrationStep=1;
                SM.LcdCtl.PagePtr=NomMaxPages+1;
              }
            }break;
          case 2:
            {

              CalibrationOperationSub(1);
              if(DM.ucKeyCalibrationStep<ESPPAR_CHGSTP)
              {
                SystemEventFlag |= SYSTEM_ESPPARAM_FLAG;
              }

            }break;
          case 3:
            {
              CalibrationOperationSub(-1);
              if(DM.ucKeyCalibrationStep<ESPPAR_CHGSTP)
              {
                SystemEventFlag |= SYSTEM_ESPPARAM_FLAG;
              }
            }break;
#ifndef TAMPER_DETECTION
           case 4:
           case 5:
           case 6:
           case 7:
           case 8:
            {
              DM.ucKeyCalibrationStep++;
              if(DM.ucKeyCalibrationStep>1)
              {
                DM.ucKeyCalibrationStep = 0;
              }
            }break;
#else
           case 4:
           case 5:
           case 6:
           case 7:
					 case 8:
           case 9:
           case 10:
           case 11:
					 case 12:
            {
              DM.ucKeyCalibrationStep++;
              if(DM.ucKeyCalibrationStep>1)
              {
                DM.ucKeyCalibrationStep = 0;
              }
            }break;
#endif
          }
          CalibrationLcdPtr();
        }break;
      }
    }break;
  case KEY_REMOVE_FLAG:
    {

      DM.ucKeyFlg &= ~KEY_REMOVE_FLAG;

    }break;
  }

  SystemEventFlag |= SYSTEM_LCD_FLAG;
}

//*********************************************************************************
//
//
//
//
//*********************************************************************************
void LCD_Process(void)
{
  SystemEventFlag &= ~SYSTEM_LCD_FLAG;
  //Update_Display(SM.LcdCtl.PagePtr);

  Update_Display();

}

void Calibration_Process(void)
{
  Set_IdleMode();
  Init_ESP_Parameter();
  Start_Measurement();
  SystemEventFlag &= ~SYSTEM_ESPPARAM_FLAG;
}

void EspParaSave_Process(void)
{
  WDTCTL = WDT_ARST_1000;
  _DINT();
  SM.CfgChk=ChkSum((unsigned char *)&SM.Cfg, sizeof(SM.Cfg));
  FlashWtBlock( (unsigned char *)0x1000, (unsigned char *)&SM.Cfg, sizeof(SM.Cfg)+2 );
  SystemEventFlag &= ~SYSTEM_ESPPARASAVE_FLAG;
  _EINT();
}

void DataSave_Process(void)
{
  unsigned char *ptr;
  WDTCTL = WDT_ARST_1000;

  if(MeterRunState & MAIN_VOLTAGE_ON)
  {
    FCTL2 = FWKEY+FSSEL1+FN4+FN3+FN2+FN1+FN0;
  }
  else
  {
    FCTL2 = FWKEY+FSSEL1+FN1;
  }	

  if(*(unsigned char *)0x1080==0xFF)
  {
    ptr = (unsigned char *)0x1080;
  }
  else if(*(unsigned char *)0x10C0==0xFF)
  {
    ptr = (unsigned char *)0x10C0;
  }
  else
  {
    FlashClear( (unsigned char *)0x1080 );
    ptr = (unsigned char *)0x1080;
  }
  FlashWtBlock( ptr, (unsigned char *)&SM.CMon, sizeof(SM.CMon)+34 );
  SystemEventFlag &= ~SYSTEM_DATASAVE_FLAG;
}


void MinuteProcess(void)
{
  SystemEventFlag &= ~SYSTEM_MINUTE_FLAG;
}

void HourProcess(void)
{
  SystemEventFlag &= ~SYSTEM_HOUR_FLAG;
}

void DayProcess(void)
{
  SystemEventFlag &= ~SYSTEM_DAY_FLAG;
}

void MonthProcess(void)
{
  SystemEventFlag &= ~SYSTEM_MONTH_FLAG;
}

void YearProcess(void)
{
  SystemEventFlag &= ~SYSTEM_YEAR_FLAG;
}


void Task_No()
{
  SystemEventFlag &= ~0x8000;
}

⌨️ 快捷键说明

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