📄 ports.c
字号:
} 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 + -