📄 key.c
字号:
/***********************************/
#include "REG51STC.H"
#include "oven.h"
#include "citation.h"
/*********************************************************
* 功能:读按键
*********************************************************/
void read_key(void)
{
bbyte=0;
a0=~KEYSET;
a1=~KEYRAY;
a2=~KEYADD;
a3=~KEYSUB;
a4=~KEYSTOP;
switch(bbyte)
{
case 0:
break;
case 1:
bbyte=1;
break;
case 2:
bbyte=2;
break;
case 4:
bbyte=3;
break;
case 8:
bbyte=4;
break;
case 0x10:
bbyte=5;
break;
default:
bbyte=0xff; //其它的键不作响应
break;
}
if(keynumold==bbyte && bbyte!=0 && bbyte<6)
{
keyinput++;
if(keyinput>20) {keyinput=20;keysolve=bbyte;if(!keyok){keyok=1;fmqok=1;}}
}
else
{
if(bbyte==0){if(keyinput>0)keyinput--;}
//else keyinput=0;
}
keynumold=bbyte;
if(keyok && keyinput==0) {keyok=0;key_solve(keysolve);}
//-------------------------------------------------------
if(ERT || unc>69) {if(tt_overrun_cnt<200)tt_overrun_cnt ++;}
else if(unc<65){if(tt_overrun_cnt>0)tt_overrun_cnt--;}
if(tt_overrun_cnt==0)tt_overrun=0;
if(tt_overrun_cnt==200)tt_overrun=1; //超湿
//-------------------------------------------------------
if(state==1)
{
if(ia==0){if(fanner_cnt<250)fanner_cnt++;} // && !arrive_ok排湿时热风机不转
else {if(fanner_cnt>0)fanner_cnt--;}
if(fanner_cnt==250)fanner_fail=1; //风扇无电流
if(fanner_cnt==0)fanner_fail=0;
}
else {fanner_fail=0;fanner_cnt=0;} //非加热状态排风电流不检查
//-------------------------------
a7=KM;
if(a7) {if(kmnum<50)kmnum++;} //门开关
else {if(kmnum>0)kmnum--;}
if(kmnum==50 && timerov) //关门
{
kmok=1;
if(state==1)
{
stop_fanner_time=60;
led_run=0;
if(big_ok){led_big=0;led_small=1;} //强
else {led_small=0;led_big=1;} //弱
RLY3=0;
if(arrive_ok && unc>49){RLY2=0;} //打开排湿 [湿度大于49度]
else {RLY2=1;}
}
if(state==2){led_fuchsia=0;RLY1=0;led_run=0;}
}
if(kmnum==0 || !timerov) //开门
{
kmok=0;
led_run=1;
led_big=1;
led_small=1;
led_fuchsia=1;
RLY1=1; RLY2=1; //RLY3=1;
fanner_fail=0;fanner_cnt=0;
//OUTOM1=1;
//OUTOM2=1;
}
//----------------------------
}
/*********************************************************
* 功能:按銉处理
**********************************************************/
void key_solve(uchar key_num)
{
if(!sys_stare) //正常控制
{
switch(key_num)
{
case 1: //设置/启动
//power_drop_save();
time_dispstyle=180;
switch(disp_style)
{
case 0:
if(fanner_fail) disp_style=3; //显示电流
else disp_style=1; //显示温度
break;
case 1:
if(fanner_fail) disp_style=3; //显示电流
else disp_style=2; //显示湿度
break;
case 2:
if(state==1)disp_style=3; //显示电流
else disp_style=0; //显示时间
break;
default:
disp_style=0; //显示时间
break;
}
break;
case 2: //消毒
if(state==0 || !timerov)
{ count_down=900;
state=2;
led_fuchsia=0;
led_run=0;
RLY1=0;
timerov=1; //0-->超时
}
break;
case 3: //强
if(state==0 || !timerov)
{ RLY3=0;
heat_ok=1;
big_ok=1;
pwout=dynamo;
work_time=0;
arrive_time=300; //排湿延时
arrive_ok=0;
state=1;
timerov=1; //0-->超时
pause_heat=0;
}
else if(state==1)big_ok=1;
break;
case 4: //弱
if(state==0 || !timerov)
{ RLY3=0;
heat_ok=1;
big_ok=0;
pwout=dynamo;
work_time=0;
arrive_time=300; //排湿延时
arrive_ok=0;
state=1;
timerov=1; //0-->超时
pause_heat=0;
}
else if(state==1)big_ok=0;
break;
case 5: //停止
stop_run();
timerov=1; //0-->超时
//power_drop_save();
break;
default:
break;
}
}
else //设置参数
{
switch(key_num)
{
case 1: //设置
menu++;
switch(menu)
{
case 1:
if(save_ok){ save_ok=0;power_drop_save();}
break;
case 2:
if(save_ok){ save_ok=0;power_drop_save();}
break;
case 3:
if(save_ok){ save_ok=0;power_drop_save();}
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
break;
case 10:
break;
case 11:
break;
case 12:
break;
default:
break;
}
break;
case 2:
switch(menu)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
break;
case 10:
break;
case 11:
break;
case 12:
break;
default:
break;
}
break;
case 3: //↑
save_ok=1;
if(dynamo<20)dynamo++;
disp_setb1();
break;
case 4: //↓
save_ok=1;
switch(menu)
{
case 1:
if(dynamo>1)dynamo--;
disp_setb1();
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
break;
case 10:
break;
case 11:
break;
case 12:
break;
default:
break;
}
break;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -