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

📄 ports.c

📁 完整的空调控制器程序
💻 C
📖 第 1 页 / 共 2 页
字号:
         } else {
           Key_State = KEY_QZIDLE;
         }
       }
       break;

     case KEY_IDLE_NEXT:
       if (ValBit(pBUTTON,pbBUTTON)){
         if (ValBit(Sysflag1,f1XK_YK)){ /* 1: 线控器,0:遥控器 */
           Key_State = KEY_IDLE;
         } else {
           Key_State = KEY_QZIDLE;
         }
       }
       break;

     case KEY_IDLE:
       if (!ValBit(pBUTTON,pbBUTTON)){
         DebounceButton = 25;    // 100mS(On 4mS)
         Key_State = KEY_PUSHED;
       } else {
         if (ValBit(Sysflag1,f1XK_YK)){ /* 1: 线控器,0:遥控器 */
           Key_State = KEY_IDLE;
         } else {
           Key_State = KEY_QZIDLE;
         }
       }
       break;
#else
     case KEY_PUSHED:
     case KEY_IDLE_NEXT:
     case KEY_IDLE:
       if (ValBit(Sysflag1,f1XK_YK)){ /* 1: 线控器,0:遥控器 */
         Key_State = KEY_IDLE;
       } else {
         Key_State = KEY_QZIDLE;
       }
       break;
#endif

     case KEY_QZPUSHED:
       ClrBit(pdQZCoolSw,pbQZCoolSw);
       if (!ValBit(pQZCoolSw,pbQZCoolSw)){
         SetBit(pdQZCoolSw,pbQZCoolSw);
         SetOnOff(KEY_QZIDLE_NEXT);
       } else {
         SetBit(pdQZCoolSw,pbQZCoolSw);
         Key_State = KEY_NFIDLE;
       }
       break;

     case KEY_NFPUSHED:
       ClrBit(pdOnOffSw,pbOnOffSw);  /* 上拉输入/推拉输出 */
       if (!ValBit(pOnOffSw,pbOnOffSw)) {
         SetBit(pdOnOffSw,pbOnOffSw);
         SetOnOff(KEY_NFIDLE_NEXT);
       } else {
         SetBit(pdOnOffSw,pbOnOffSw);
         Key_State = KEY_IDLE;
       }
       break;

     case KEY_QZIDLE_NEXT:
       ClrBit(pdQZCoolSw,pbQZCoolSw);
       Nop3();
       if (ValBit(pQZCoolSw,pbQZCoolSw)){
         Key_State = KEY_NFIDLE;
       }
       SetBit(pdQZCoolSw,pbQZCoolSw);
       break;

     case KEY_NFIDLE_NEXT:
       ClrBit(pdOnOffSw,pbOnOffSw);
       Nop3();
       if (ValBit(pOnOffSw,pbOnOffSw)){
         Key_State = KEY_IDLE;
       }
       SetBit(pdOnOffSw,pbOnOffSw);
       break;

     case KEY_QZIDLE:
       ClrBit(pdQZCoolSw,pbQZCoolSw);
       Nop3();
       if (!ValBit(pQZCoolSw,pbQZCoolSw)){
         Key_State = KEY_QZPUSHED;
         DebounceButton = 25;    // 100mS(On 4mS)
       } else {
         Key_State = KEY_NFIDLE;
       }
       SetBit(pdQZCoolSw,pbQZCoolSw);
       break;

     case KEY_NFIDLE:
       ClrBit(pdOnOffSw,pbOnOffSw);
       Nop3();
       if (!ValBit(pOnOffSw,pbOnOffSw)){
         DebounceButton = 25;    // 100mS(On 4mS)
         Key_State = KEY_NFPUSHED;
       } else {
         Key_State = KEY_IDLE;
       }
       SetBit(pdOnOffSw,pbOnOffSw);
       break;

     default:
       Key_State = KEY_IDLE;
       break;
   }
#elif (NJTYPE == 2)
   /* 应急运行
    * 关机状态按此键一次,进入制冷模式,设定温度为22℃,室内风机为自动风,
    * 风门片为自然摆动;
    * 在开机非制热模式下按此键一次,进入制热模式,设定温度为24℃,
    * 室内风机为自动风,风门片为自然摆动;
    * 在开机制热模式下按此键一次,室内机关机;
    */
   /* 按键反弹延时 */
   if (DebounceButton != 0) DebounceButton--;
   if (!ValBit(pBUTTON,pbBUTTON)){
     switch(Key_State){
       case KEY_PUSHED:
         if (DebounceButton == 0) {
           Key_State = KEY_IDLE_NEXT;
           if ValBit(RunMode,fSysOnOff){
             if ((RunMode & MODEMASK) != MODECOOL){
               TurnSysOff();
               /* 清除定时关标志 */
               SlpTmFlag &= (u8)((1<<bb4ms)|(1<<bb2s)|(1<<fTime));
             } else {
               TurnSysOn();
               SetMode(MODEHEAT);
               SetupTp = 0x98;             /* 设定温度 24℃ */
               ClrBit(SlpTmFlag,fTime);
               SetBuzCntr(BuzCntrShort);   /* 蜂鸣器短鸣一声*/
               FanStatus = FANAUTO_S;
               SetFDoorUnit(SWINGAUTO);
             }
           } else{
             TurnSysOn();
             SetMode(MODECOOL);
             SetupTp = 0x96;               /* 设定温度 22℃  */
             ClrBit(SlpTmFlag,fTime);
             FanStatus = FANAUTO_S;
             SetFDoorUnit(SWINGAUTO);
           }
         }
         break;

       case KEY_IDLE:
         DebounceButton = 25;    // 100mS(On 4mS) debounce time
         Key_State = KEY_PUSHED;
       default:
         break;
     }
   } else{
     Key_State = KEY_IDLE;
   }
#elif (NJTYPE == 3)||(NJTYPE == 4)
   /* 应急运行
    * 关机状态按此键一次,进入自动模式,设定温度为24℃,室内风机为自动风,
    * 风门片为自然摆动;
    * 在开机状态按此键一次,室内机关机;
    */
   /* 按键反弹延时 */
   if (DebounceButton != 0) DebounceButton--;
   if (!ValBit(pBUTTON,pbBUTTON)){
     switch(Key_State){
       case KEY_PUSHED:
         if (DebounceButton == 0) {
           Key_State = KEY_IDLE_NEXT;
           if ValBit(RunMode,fSysOnOff){
             TurnSysOff();
             /* 清除定时关标志 */
             SlpTmFlag &= (u8)((1<<bb4ms)|(1<<bb2s)|(1<<fTime));
           } else{
             TurnSysOn();
             SetMode(MODEAUTO);
             SetupTp = 0x98;             /* 设定温度 24℃  */
             ClrBit(SlpTmFlag,fTime);
             FanStatus = FANAUTO_S;
             SetFDoorUnit(SWINGAUTO);
           }
         }
         break;

       case KEY_IDLE:
         DebounceButton = 25;    // 100mS(On 4mS) debounce time
         Key_State = KEY_PUSHED;
       default:
         break;
     }
   } else{
     Key_State = KEY_IDLE;
   }
#elif (NJTYPE == 5)
   /* 柜机键扫描 */
   if (SWBuf != KeyGet){
     DebounceButton = 25;            // 100mS(On 4mS)
     SWBuf = KeyGet;
     //if (SWState == KEY_PUSHED) SWState = KEY_IDLE_NEXT;
   } else if (DebounceButton-- == 0){
     DebounceButton = 25;
     if (SWBuf == 0){
       SWState = KEY_IDLE;     /* 所有键都释放 */
     } else {
       //BkgLamp = BkgLampSET;   /* 背光开时间 */
       SWTime = BkgLampSET;    /* 键延时与背光开时间相同 */
       switch(SWState){
         case KEY_IDLE:        /* 处理键 */
           SetBuzCntr(BuzCntrShort);     /* 蜂鸣器短鸣一声*/
           SWState = KEY_IDLE_NEXT;      /* 下一个处理状态 */
           if (SWBuf == SWUp){           /* TEMP+ */
             SWRptBuf = SWBuf;           /* 允许重复 */
             SWState = KEY_PUSHED;       /* 下一个处理状态 */
             DebounceButton = 255;       /* 1s */
             if (SetupTp < SetupTpMAX) SetupTp++;
           } else if (SWBuf == SWOnOff){ /* On/Off */
             if (ValBit(RunMode,fSysOnOff)){
               TurnSysOff();
               SWTime = 0;               /* 立即关显示 */
               /* 清除定时关标志 */
               SlpTmFlag &= (u8)((1<<bb4ms)|(1<<bb2s)|(1<<fTime));
             } else {
               TurnSysOn();
               ClrBit(SlpTmFlag,fTime);
             }
           } else if (SWBuf == SWDown){  /* TEMP- */
             SWState = KEY_PUSHED;       /* 下一个处理状态 */
             SWRptBuf = SWBuf;           /* 允许重复 */
             DebounceButton = 255;       /* 1s */
             if (SetupTp > SetupTpMIN) SetupTp--;
           } else if (SWBuf == SWFan){   /* FAN */
             FanStatus = (u8)((FanStatus + 1) & 0x0f3);
             FanTmSet = 10;              /* 10 秒 */
           } else if (SWBuf == SWMode){  /* MODE */
             SetMode((u8)(md_Tab[RunMode & 0x03]));
#ifdef EnSWING
           } else if (SWBuf == SWSwing){ /* SWING */
             if ((u8)(FDoorUnit & SWINGMASK) == SWINGFIXED){
               SetFDoorUnit(SWINGSWING);
             } else {
               SetFDoorUnit(SWINGFIXED);
             }
#endif
           }
           break;

         case KEY_PUSHED:                 /* 处理允许重复的键 */
           DebounceButton = 50;           /* 重复时间 */
           if (SWRptBuf == SWBuf){
             if (SWBuf == SWUp){          /* TEMP+ */
               if (SetupTp < SetupTpMAX) SetupTp++;
             } else if (SWBuf == SWDown){ /* TEMP- */
               if (SetupTp > SetupTpMIN) SetupTp--;
             }
           }
           break;

         case KEY_IDLE_NEXT:   /* 等待键释放 */
         default:
           break;
       }
     }
   }
#endif
}

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

⌨️ 快捷键说明

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