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

📄 rem.c

📁 空调控制程序
💻 C
📖 第 1 页 / 共 3 页
字号:
      LcBufAdr[LcBitCnt] = GetNjItem(LcSt0Cnt++);  /* 参数 */
  } else {
    LcBufAdr[1] = 0x32;
    if (iNo == 0){
      /* 设定温度 */
      LcBufAdr[2] = 72;
      LcBufAdr[3] = SetupTp;
    } else if (iNo == 1){
      /* 模式 0:Off 1:A 2:C 3:D 4:F 5:H */
      LcBufAdr[2] = 74;
      if (ValBit(RunMode,fSysOnOff)){
        LcBufAdr[3] = (u8)(RunMode & MODEMASK);
        if (LcBufAdr[3] >= 5) LcBufAdr[3] &= 0x03;
        if (ValBit(Sysflag2,fMAuto) ||
           (LcBufAdr[3] == MODEAUTO)){
          LcBufAdr[3] = 1;
        } else if (LcBufAdr[3] == MODEHEAT){
          LcBufAdr[3] = 5;
        }
      } else {
        LcBufAdr[3] = 0;
      }
    } else if (iNo == 2){
      /* 风速 0:A 1:L 2:M 3:H */
      LcBufAdr[2] = 75;
      //if ((FanStatus & FANMASK_S) == FANEC_S){
      //  LcBufAdr[3] = FANLO_S;
      //} else if ((FanStatus & FANMASK_S) == FANPO_S){
      //  LcBufAdr[3] = FANHI_S;
      //} else {
        LcBufAdr[3] = (u8)(FanStatus & 0x03);
      //}
    } else {
      /* 摆风 0:A 1:Swing 2:Fixed */
      LcBufAdr[2] = 76;
      LcBufAdr[3] = (u8)(FDoorUnit & SWINGMASK);
    }
  }
}

u8 GetNjItem(u8 iNo)
{
  u8 v;

  switch(iNo){
    case 20:
      /* 模式 */
      if (!ValBit(RunMode,fSysOnOff)){
        v = 0;
      } else{
        v = (u8)(RunMode & MODEMASK);
        if (v >= 5) v &= 0x03;
        if (ValBit(Sysflag2,fMAuto) || (v == MODEAUTO))
          v = 5;
      }
      /* 风机模式 */
      v |= (u8)((FanStatus & 0x03) << 3);
      if (ValBit(FanStatus,fFanCtrlBit))
        v |= (u8)((FanStatus & 0x30) << 1);

      /* 电加热 */
      if (ValBit(Sysflag1,fEHeatOn)) v |= 0x80;
      return v;
      break;
    case 21:
      v = 0x80;
      if (ValBit(OutDevStu[0],fOutDeforst)) v = 0x81;
      if (ValBit(OutDevStu[0],fRunEnable)||
          (!ValBit(RunMode,fSysOnOff))   ||
          ((RunMode & MODEMASK) == MODEFAN)) v |= 2;
      return v;
      break;
    case 22:
      return AmbientTp;
      break;
    case 23:    /* 中点温度 */
      return TubeMidTp;
      break;
    case 24:    /* 入口(细管)温度 */
      return TubeInTp;
      break;
    case 25:    /* 出口(粗管)温度 */
      return TubeOutTp;
      break;
    case 26:    /* 故障代码 */
      return ErrNo();
      break;
    case 27:
      return  100;
      break;
#ifdef EnPZF
    case 28:
      return (u8)(CurValve >> 1);
      break;
    case 29:
      return (u8)(SetupValve >> 1);
      break;
#endif
#ifdef EnSTYLE5
    case 30:    /* 内机 ID */
      return (u8)(WJ_NJNo & 0x1F);
      break;
    case 31:    /* 外机 ID */
      return (u8)(WJ_NJNo >> 5);
      break;
#endif
    case 32:    /* 内机设定功率 */
      return PowerConst;
      break;
    case 33:    /* 配置 */
      return SysConfig;
      break;
#ifdef EnSTYLE5
    case 34:    /* 制冷调阀零点 +0x80*/
      return SetOnCool;
      break;
    case 35:    /* 制热调阀零点 +0x80*/
      return SetOnHeat;
      break;
    case 36:    /* 非调节温度 */
      return (u8)(SetUnacc + 0x80);
      break;
    case 37:    /* 制热膨胀阀常开开度*/
      return SetOn;
      break;
#endif
    case 38:    /* 制热温度补偿 */
#ifdef ChigoXG1
#ifdef ChigoXG1Set
     return ChigoXG1Set;
#else
     return SetOffset;
#endif
#else
     return (u8)(0x80);
#endif
      break;
    //case 39:
    //  break;
    case 40:
      return OutDevStu[1];
      break;
#ifdef EnSTYLE5
    case 41:
      return OutDevStu[2];
      break;
#endif
    case 42:
      return OutSideErr[0];
      break;
#ifdef EnSTYLE5
    case 43:
      return OutSideErr[1];
      break;
    case 44:
      return OutSideErr[2];
      break;
    case 45:
      return OutSideErr[3];
      break;
    case 46:
      return OutSideErr[4];
      break;
    case 47:
      return OutSideErr[5];
      break;
#endif
  }
  return 0;
}

u8 ErrNo(void)
{

#ifdef EnSTYLE5
  if ((Errorflg | Errorflg2
     |OutSideErr[0]
     |OutSideErr[1]
     |OutSideErr[2]
     |OutSideErr[3]
     |OutSideErr[4]
     |OutSideErr[5]) != 0){
    if (ErrCnt == 0){
      ErrCnt = 5;
      while(1){
        if (++ErrFlashCnt > 63) ErrFlashCnt = 0;
        if (ErrFlashCnt >= 56){
          if ((Errorflg2 & BitMask[ErrFlashCnt & 0x07]) != 0) break;
        } else if (ErrFlashCnt >= 48){
          if ((Errorflg & BitMask[ErrFlashCnt & 0x07]) != 0) break;
        } else {
          if ((OutSideErr[ErrFlashCnt >> 3] & BitMask[ErrFlashCnt & 0x07]) != 0) break;
        }
      }
    }

    if (ErrFlashCnt >= 48) {
      return Tab_NErr_No[ErrFlashCnt - 48];
    } else {
      if (WJType == 1){   /* 1: 定频外机系统,0:变频外机系统 */
        return Tab_DErr_No[ErrFlashCnt];
      } else if (WJType == 0) {
        return Tab_BErr_No[ErrFlashCnt];
      //} else {
      //  return 0;
      }
    }
#else
  if ((OutSideErr[0] | Errorflg2 | Errorflg) != 0){
    if (ErrCnt == 0){
      ErrCnt = 5;
      while(1){
        if (++ErrFlashCnt > 23) ErrFlashCnt = 0;
        if (ErrFlashCnt >= 16){
          if ((Errorflg2 & BitMask[ErrFlashCnt & 0x07]) != 0) break;
        } else if (ErrFlashCnt > 7){
          if ((Errorflg & BitMask[ErrFlashCnt & 0x07]) != 0) break;
        } else {
          if ((OutSideErr[0] & BitMask[ErrFlashCnt]) != 0) break;
        }
      }
    }
    return Tab_Err_No[ErrFlashCnt];
#endif
  } else {
    ErrFlashCnt = 0;
    ErrCnt = 0;
  }
  return 0;
}

BOOLEAN SetNjItem(u8 iNo,u8 iVal)
{
  switch(iNo){
#ifdef EnSTYLE5
    case 30:    /* 内机 ID */
      if ((iVal >= WJ_NJNoMIN) && (iVal <= WJ_NJNoMAX)){
        ClrRsErr((u8)((WJ_NJNo & WJNOMASK) | iVal));
        return TRUE;
      }
      break;
    case 31:    /* 外机 ID */
      if (iVal <= WJ_WJNoMAX){
        ClrRsErr((u8)((WJ_NJNo & NJNOMASK) | (iVal << 5)));
        return TRUE;
      }
      break;
#endif

    case 32:    /* 内机设定功率 */
      if (!ValBit(RunMode,fSysOn) &&   /* 停机时才允许修改 */
           (iVal != 0)){
        PowerConst = iVal;
        ClrBit(Errorflg,fSysPowErr);   /* 1: 室内机总功率过大 */
        return TRUE;
      }
      break;
    case 33:    /* 配置 */
      if ((iVal & 0x0F0) == 0) {
        SysConfig = iVal;
        return TRUE;
      }
      break;

#ifdef EnSTYLE5
    case 34:    /* 制冷调阀零点 +0x80*/
      if ((iVal >= 118) && (iVal <= 138)){
        SetOnCool = iVal;
        return TRUE;
      }
      break;
    case 35:    /* 制热调阀零点 +0x80*/
      if ((iVal >= 118) && (iVal <= 138)){
        SetOnHeat = iVal;
        return TRUE;
      }
      break;
    case 36:    /* 非调节温度 */
      if ((iVal >= 128) && (iVal <= 138)) {
        SetUnacc = (u8)(iVal - 0x80);
        return TRUE;
      }
      break;
    case 37:    /* 制热膨胀阀常开开度*/
      if (iVal >= 40){
        SetOn = iVal;
        return TRUE;
      }
      break;
#endif

#ifdef ChigoXG1
#ifndef ChigoXG1Set
    case 38:    /* 制热温度补偿 */
      if ((iVal >= 118) && (iVal <= 138)){
        SetOffset = iVal;
        return TRUE;
      }
      break;
#endif
#endif
  }
  return FALSE;
}

/* 启动传输(内机主动发送)20mS  */
void LcScom_Trig(void)
{
  if (LcInitTmr++ > 150){
    SysInit();        /* 系统初始化标志 */
    ReWriting(LcInitCnt);

    /* 计算累加和 */
    AddSum(TRUE);

    /* 准备发送 */
    ReadyToSend();
  }
}
#endif

void GetAuxCon(void)   /* AUX 遥控器 */
{
  FanTmSet = BkgLampSET;
  TimeTmSet= BkgLampSET;
  SWTime = BkgLampSET;      /* 键延时与背光开时间相同 */
  SetBuzCntr(BuzCntrShort);
  ClrBit(Sysflag1,f1XK_YK);

  /* 设定温度 */
  SetupTp = (u8)((LcBufAdr[1] >> 3) + 0x88);
  if (SetupTp < SetupTpMIN){
    SetupTp = SetupTpMIN;
  } else if (SetupTp > SetupTpMAX){
    SetupTp = SetupTpMAX;
  }

  /* 设定风速 */
  SetFanStatus(FanAux[LcBufAdr[4] >> 5]);
  /* 设定模式 */
  SetMode((u8)ModeAux[LcBufAdr[6] >> 5]);

  /* 设定温度强制为 24 */
  if (((LcBufAdr[1] & 0x0F8) == 0) /*&&
      ((RunMode & MODEMASK) == MODEAUTO)*/){
    SetupTp = (u8)(0x80 + 24);
  }

  /* 睡眠 */
  if (ValBit(LcBufAdr[6],2)){
    if (!ValBit(SlpTmFlag, fSleep)){
      SetBit(SlpTmFlag, fSleep);
      SleepUnit = 0x78;
    }
  } else {
    ClrBit(SlpTmFlag, fSleep);
  }

#if 0
  /* 掉电记忆 */
  if (ValBit(LcBufAdr[6],1)){
    SetBit(SysConfig,fEnMemo);
  } else {
    ClrBit(SysConfig,fEnMemo);
  }

  /* 电热 */
  if (ValBit(LcBufAdr[9],4)){
    ClrBit(SysConfig,fDisDJR);
  } else {
    SetBit(SysConfig,fDisDJR);
  }
#endif

#ifdef EnSWING
  /* 摆风 */
  if ((LcBufAdr[1] & 0x07) == 0){
    SetFDoorUnit(SWINGSWING);
  } else {
    SetFDoorUnit(SWINGFIXED);
#if (NJTYPE == 0)||(NJTYPE == 1)||(NJTYPE == 2)||(NJTYPE == 3)||(NJTYPE == 4)
    if ((FDoorUnit >= SWINGFIXED) &&     /* 10/11: 固定风 */
        ValBit(RunMode,fSysOn)   &&      /* 1: 开机 */
        ValBit(FanStatus,fFanCtrlBit)){  /* 1: 内风机运行标志 */
      BjSave.w_form = BjStep.w_form;     /* 记忆风门位置 */
    }
#endif
  }
#endif

  /* 开关机 */
  if (ValBit(LcBufAdr[9],5)){
    TurnSysOn();
  } else {
    TurnSysOff();
    SWTime = 0;      /* 立即关显示 */
  }

   /* 定时 */
   LcBufAdr[5] &= 0x3F;
   LcBufAdr[3] &= 0x3F;
   LcBufAdr[4] &= 0x1F;
   LcBufAdr[2] &= 0x1F;
   if (LcBufAdr[4] < LcBufAdr[2]){
     LcBufAdr[4] += 24;
   } else if (LcBufAdr[4] == LcBufAdr[2]){
     if (LcBufAdr[5] < LcBufAdr[3])
       LcBufAdr[4] += 24;
   }
   LcBufAdr[4] -= LcBufAdr[2];
   switch(LcBufAdr[9] & 0x0C0){
     case 0x40:   /* 定关 */
       TurnOff = (u16)((LcBufAdr[4] * 60 + LcBufAdr[5]) - LcBufAdr[3]);
       SetBit(SlpTmFlag,fTimeOff);
       break;
     case 0x80:   /* 定开 */
       TurnOn = (u16)((LcBufAdr[4] * 60 + LcBufAdr[5]) -  LcBufAdr[3]);
       SetBit(SlpTmFlag,fTime);
       break;
     default:
       ClrBit(SlpTmFlag,fTime);
       ClrBit(SlpTmFlag,fTimeOff);
       break;
   }
}

/*** (c) 2005  佛山菱电 **************************** END OF FILE *************/

⌨️ 快捷键说明

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