📄 keypress.h
字号:
SetTempUp=true;
}
SetTemp=SetHeartTemp;
}
else
{
SetCoolTemp++;
if (SetCoolTemp>Max_Temp)
{
SetCoolTemp=Max_Temp;
SetTempUp=true;
}
SetTemp=SetCoolTemp;
}
return;
}
if (DisPrimary==i)
{//修改查看外温度顺序
//DisplayModeTemporary=DisplayMode;
if ((DisplayMode & 0x0f)== 10)
{SetTempUp=1;}
else
{DisplayMode++;}
return;
}
if (DisLineControl==i)
{//线控器查看数据
if ((DisplayMode & 0x0f)== 12)
{SetTempUp=1;}
else
{DisplayMode++;}
return;
}
if (DisAltitude==i)
{//修改查看外温度顺序
if (DisplayDataOrder == DisOutDataMax)
{SetTempUp=1;}
else if (DisLSBMax == (DisplayDataOrder & 0x0f))
{
DisplayDataOrder &= 0xf0;
DisplayDataOrder += 0x10;
}
else
{DisplayDataOrder++;}
return;
}
if (DisTimerOn==i)
{//定时开机时间设定加
if (50<=TimerOnL && TimerOnL<60)
{
if (23 <=TimerOnH)
{TimerOnH=23;SetTempUp=1;return;}
TimerOnH++;
TimerOnL = 0;
return;
}
TimerOnL += TimerModeDip; //定时修改比例
return;
}
if (DisTimerOff==i)
{//定时关机时间设定加
if (50<=TimerOffL && TimerOffL<60)
{
if (23 <=TimerOffH)
{TimerOffH=23;SetTempUp=1;return;}
TimerOffH++;
TimerOffL = 0;
return;
}
TimerOffL += TimerModeDip;
return;
}
if (0==ForceRunFlag) return;
if (DisOutFre==i)
{//强制运行频率设置
ForceFrequency++;
if (ForceFrequency>=Max_Freqeuncy)
{
ForceFrequency=Max_Freqeuncy;
SetTempUp=true;
}
return;
}
if (DisOutValve==i)
{//室外阀开度
OutValve++;
if (OutValve>=Max_OutValve)
{
OutValve=Max_OutValve;
SetTempUp=true;
}
return;
}
if (DisInValve == i)
{//强制运行时室内机阀开度处理程序
ValveOpenH=ValveOpen[DisplayMachineOrder] / 100;
Dobule=ValveOpenH*100;
ValveOpenL=ValveOpen[DisplayMachineOrder] -Dobule;
if (5<=ValveOpenH)
{
SetTempUp=true;
ValveOpenL=0;
ValveOpenH=5;
return;
}
if (99==ValveOpenL)
{
ValveOpenH++;
ValveOpenL=0;
}
else
{ValveOpenL++;}
ValveOpen[DisplayMachineOrder]=Dobule+ValveOpenL;
return;
}
}
}
//======================================
CheckMacNumber()
{
k=DisplayMachineOrder;
if (k==IndoorMacs-1) {k=0;}
// Dobule=0x0001;
// Dobule=Dobule<<k;
Dobule=OffMacCode[k];
for (i=0;i<IndoorMacs;i++)
{
Dobule=Dobule*2;
WDTC.byte=0x05;
if (Dobule==0) {Dobule=1;i=0;k=0xff;}
if (HaveMacFlag.word & Dobule)
{DisplayMachineOrder=k+1;break;}
else
{
k++;
if (k==(IndoorMacs))
{k=0;}
}
}
}
TimerCancleProgram()
{//定时取消程序
HaveDisposeTimerOnKeyFlag=0;
HaveDisposeTimerOffKeyFlag=0;
TimerOnFlag=0;
TimerOffFlag=0;
TimerOnH=0;
TimerOnL=0;
TimerOffH=0;
TimerOffL=0;
DisModeSavedFlag=0;
TimerOn[DisplayMachineOrder]=0;
TimerOff[DisplayMachineOrder]=0;
DisplayMode=DisplayModeTemporary;
}
OnOffMacIconDispose()
{//开关机时的图标处
OnOffMacIconDispose_0();
if (AllMacOn_Off.word==0xffff)
{
RemoteOnFlag=0;
LedPin=1; //Led灯灭
LcdOffDisposeFlag=0;
}
else
{LedPin=0;LcdOffDisposeFlag=1;}
}
OnOffMacIconDispose_0()
{
AllMacOn_Off.word=0;//开关机标志清零
for (i=0;i<IndoorMacs;i++)
{
WDTC.byte=0x5;
if (ModeRegister[i].bit_.On_Off_)
{AllMacOn_Off.word |= OffMacCode[i];} //将所有机器开关机标志转移到 AllMacOn_Off.word 中
else
{AllMacOn_Off.word &= ShiftClear[i];}
}
}
ModeClashProgram()
{//模式冲突处理程序
WDTC.byte=0x05;
// OutOn_Off=0;
// if (OutOn_Off)
// {//室外机已经开机
// if (OutMode)
// {OnlyHearProgram();}//室外机已经开机制热,则所有室内机只能制热
// else
// {NotUserHeartProgram();}//室外机开机不是制热,则所有室内机不能制热
// }
// else
// {//室外机没开机
j=0;Flag0=0;Flag1=0; //Flag0 有室内机在制热标志
for (i=0;i<IndoorMacs;i++)
{//计算开机总数
if (!ModeRegister[i].bit_.On_Off_)
{
j++;l=i; //j 为开机总数;l 为已经开机编号的最后一个
if (FuctionRegister[i].bit_.Mode_ == HeartMode)
{Flag0=1;}//有机器在开制热
if (FuctionRegister[i].bit_.Mode_ != HeartMode)
{Flag1=1;}//有机器在没有开制热
}
}
if (KeyValueRegister ==ModiAddre_Key)
{//如果当前是机器切换键
if (Flag0)//如果已经有机器在开机制热
{Mode=HeartMode;}//当前机器只能制热
else
{
if (Flag1 && (Mode==HeartMode))//如果有机器在开机制冷,且当前机器是制热未开机,
{Mode=AutoMode;InMacModeRegister[DisplayMachineOrder]=Mode;}//当前机器换成自动模式
else
{Mode=InMacModeRegister[DisplayMachineOrder];}
}
return;
}
if (0==j)
{AllUserProgram();}//所有有室内机均没有开,则可以选择所有模式
else if (1==j) //开一台室内机
{
if (l==DisplayMachineOrder)//只有当前机器开机
{AllUserProgram();}
else if (Flag0) //另外的一台机器开制热
{OnlyHearProgram();}
else //另外的一台机器不制热
{NotUserHeartProgram();}
}
else
{
if (Flag0) //另外的一台机器开制热
{OnlyHearProgram();}
else //另外的一台机器不制热
{NotUserHeartProgram();}
}
InMacModeRegister[DisplayMachineOrder]=Mode;
// }
}
OnlyHearProgram()
{Mode=HeartMode;}
NotUserHeartProgram()
{
if (Mode >= FanMode)
{Mode = AutoMode;}
else
{Mode++;DisCoolFlag=0;}
}
AllUserProgram()
{
if (Mode >= HeartMode)
{Mode = AutoMode;DisCoolFlag=0;}
else
{
Mode++;
if (Mode==HeartMode)
{DisCoolFlag=1;}
}
}
//======================================
//======================================
//======================================
void keypress(void)
{
WDTC.byte=0x05;
//------------------------------------------------------------------------------------
if (DelayDisposeKeyTime>488)
{//--------------------------------------------------------->需要延时处理的按键
if (ModeHaveActionFlag)
{//------------------------------------->模式键延时发送
ModeHaveActionFlag=0;
}
}
//------------------------------------------------------------------------------------
if (KeyOpenFlag)
{//KeyOpenFlag=1---------------------------->允许判断按键是否松开标志
if (KeyDelayTime>2)
{
KeyDelayTime=0;
KeyManMadeFlagClearTime=0;
if (MacNumEntOkFlag)
{KeyManMadeFlagClearTime=0;KeyManMadeRuned=1;}//---------------------有人工按键操作
RecognizeOpration();
//*********************************************************************************************
//********************************加减键连续处理程序*******************************************
if (KeyReadyFlag==0)
{
if (KeyContinuumTime>=300)
{
if ((KeyValueRegister==SetTempAdd_Key || KeyValueRegister==SetTempSub_Key) && (KeyMulKeyDelayTime>40))
{
KeyMulKeyDelayTime=0;
if (DisOutValve==DisplayMode)
{j=20;}//阀的连续加,每次加20
else
{j=2;}//阀以外的连续加,如温度,每次加2
for (k=0;k<j;k++)
{KeyReadyFlag=1;KeyValueDispose();}
}
}
//********************************复合键连续处理程序*******************************************
WDTC.byte=0x05;
if (KeyMulCloseFlag) return;
if (KeyContinuum3STime>=732)
{
LcdClear3sFlag=0;
Time3SecondCounter=0;
//BuzzerWorkNumber=2;
KeyContinuum3STime=0;
KeyMulCloseFlag=1;
if (KeyValueRegister==ModiWatchMode_Key)
{
//if (RemoteModeFlag)
// {//是集控器
if (KeyEnModeWatchModeFlag)
{KeyEnModeWatchModeFlag=0;}
else
{KeyEnModeWatchModeFlag=1;}
DisplayMode=0;
BuzzerWorkNumber=2;
}
// if (KeyValueRegister==ModiMacNumber_Key && On_Off && 0==MacNumModeOkFlag)
if (KeyValueRegister==ModiMacNumber_Key && 0==MacNumModeOkFlag)
{//开机状态不允许修改机器号,且只有在初次上电没开机之前设置机号
BuzzerWorkNumber=2;
KeyReadyFlag=1;
KeyEnModiInNumberFlag=1;
IndoorMacNumBuff=DisplayMachineOrder+1;
OldIndoorNumber=DisplayMachineOrder;
KeyValueDispose();
}
if (KeyValueRegister == EnLineContr_Key && RemoteModeFlag)
{//开关室内机是否受线控器控制器
if (EnLineContr)
{EnLineContr=0;}
else
{EnLineContr=1;}
KeyReadyFlag=0;
BuzzerWorkNumber=2;
}
}
}
//---------------------------------------------------------------------------------------------
else
{
BuzzerWorkNumber=1;
KeyValueDispose();
//装载设定温度
if (Mode== HeartMode)
{SetTemp=SetHeartTemp;}
else
{SetTemp=SetCoolTemp;}
}
//*********************************************************************************************
}
}
else
{
if (KeyCloseFlag)
{ //KeyCloseFlag=1------------------->有键按下
//扫描
if (KeyDelayTime<1) return;
KeyDelayTime=0;
ScanLineOne();
ScanLineTwo();
ScanLineThree();
ScanLineFour();
WDTC.byte=0x05;
if (cKeyDetections==0)
{KeyValue=KeyValueRegister;cKeyDetections++;} //第一次读值不与上一次值比较
else
{
if (KeyValue != KeyValueRegister || KeyValueRegister==0)
{
KeyCloseFlag=0;
cKeyDetections=0;
return;
}
else
{
cKeyDetections++;
if (5==cKeyDetections)
{
KeyMulKeyDelayTime=0;
KeyContinuum3STime=0;
KeyOpenFlag=1;
KeyCloseFlag=0;
}
}
}
}
else
{AdjustHave_NoKeyOpration();}
}
}
void AdjustHave_NoKeyOpration()
{
WDTC.byte=0x05;
ScanLin0=false;ScanLin1=false;
ScanLin2=false;ScanLin3=false;
if (ScanLinIn1 && ScanLinIn2 && ScanLinIn3 && ScanLinIn4)
{//------------------------------------------------------->都为1则无键按下
;
}
else
{//----------------------------------------------------->只要有一个为1则有键按下
KeyValueRegister=0;//------------------------------->键值寄存器清零
KeyCloseFlag=1;//----------------------------------->设置有键按下标志
KeyDelayTime=0;
KeyContinuumTime=0;
KeyReadyFlag=0;
cKeyDetections=0;
}
}
void ScanLineFour()
{
ScanLin0=true ;ScanLin1=true;
ScanLin2=true;ScanLin3=false;
ReadScanInputValue(8);
}
void ScanLineThree()
{
ScanLin0=true ;ScanLin1=true;
ScanLin2=false ;ScanLin3=true;
ReadScanInputValue(4);
}
void ScanLineTwo()
{
ScanLin0=true ;ScanLin1=false;
ScanLin2=true ;ScanLin3=true;
ReadScanInputValue(2);
}
void ScanLineOne()
{
ScanLin0=false;ScanLin1=true;
ScanLin2=true ;ScanLin3=true;
ReadScanInputValue(1);
}
void ReadScanInputValue(unbyte Line)
{
if (ScanLinIn1==0)
{KeyValueRegister|=(0x10+Line);}
if (ScanLinIn2==0)
{KeyValueRegister|=(0x20+Line);}
if (ScanLinIn3==0)
{KeyValueRegister|=(0x40+Line);}
if (ScanLinIn4==0)
{KeyValueRegister|=(0x80+Line);}
}
void RecognizeOpration()
{
ScanLin0=false;ScanLin1=false;
ScanLin2=false;ScanLin3=false;
if (ScanLinIn4 && ScanLinIn3 && ScanLinIn2 && ScanLinIn1)
{
KeyCloseFlag=0;
KeyReadyFlag=1;
KeyOpenFlag=0;
if (KeyMulCloseFlag)
{
KeyMulCloseFlag=0;
KeyReadyFlag=0;
}
}
else
{KeyReadyFlag=0;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -