key.c.bak
来自「该程序是NECupd78F9479的开发的代LCD的空调方案」· BAK 代码 · 共 555 行
BAK
555 行
#pragma NOP
#pragma sfr
#include "define.h"
unsigned char C_tmk1;
unsigned char C_tmk2;
unsigned char C_tmk3;
unsigned char C_tmk4;
unsigned char C_tmk5;
unsigned char C_tmk6;
unsigned char C_tmk7;
unsigned char C_tmk8;
unsigned char C_tmk9;
unsigned char keyvalue;
unsigned char keybuf;
unsigned char C_Settime;
sreg unsigned char flag;
#define f_tkey flag.0
#define f_keyok flag.1
#define f_settm flag.2
#define f_keydw2 flag.3
#define f_keydw3 flag.4
#define f_keydw4 flag.5
#define f_keydw5 flag.6
#define f_keydw6 flag.7
sreg unsigned char flagkey;
#define f_keydw7 flagkey.0
#define f_keydw8 flagkey.1
#define f_keydw9 flagkey.2
#define f_keydw1 flagkey.3
#define f_combkey flagkey.4
#define f_slpkey flagkey.5
//=========================================================
sreg unsigned char M_flag;
#define f_iicen M_flag.6
extern sreg unsigned char V_flag;
#define f_COOLonly V_flag.3
extern sreg unsigned char M_flag0;
#define f_PWRon M_flag0.0 //flag of power on
extern sreg unsigned char M_flag4;
#define f_SLEEP M_flag4.7
extern sreg unsigned char M_flag;
#define f_rmtok M_flag.0 //remote signal receive ok
#define f_PWRon1 M_flag.1 //power on flag
extern sreg unsigned char M_flag;
#define f_ton M_flag.3 //time set of power on
#define f_toff M_flag.4 //time set of power off
extern sreg unsigned char V_flag;
#define f_temp V_flag.0
extern unsigned char D_TMPset;
extern unsigned char M_FANset;
extern unsigned char M_MODset;
extern unsigned char C_RMT1s,C_cnt8,C_SettimeB,D_TMPsetp;
extern unsigned char M_MODrun;
//=========================================================
//=========================================================
void BEEP1tms(void);
void Timeset(void);
void Powerchk(void);
void Modechk(void);
void Fanchk(void);
void Tempset(void);
void Keychk(void);
void Keydec(void);
void Slpkey(void);
void Dspctrl(void);
unsigned char keydate(unsigned char k);
void keyfunc1(unsigned char x,unsigned char y);
//=========================================================
void Keyctrl()
{ if(f_tkey)
{f_tkey=0;
Keychk();
Keydec();
}
}
//========================================================
void Keydec()
{
if(f_keyok)
{ f_keyok=1;
f_iicen=1;
C_RMT1s=2;
Powerchk();
Modechk();
Fanchk();
Tempset();
Timeset();
Slpkey();
Dspctrl();
keyvalue=0;
}
}
void Slpkey()
{if(f_PWRon1)
{
if(keyvalue==8)
{ f_slpkey=1;
if(f_SLEEP)
f_SLEEP=0;
else
f_SLEEP=1;
BEEP1tms();
}
}
}
void Timeset()
{if(keyvalue==6||keyvalue==7)
{ if(C_Settime>=0&&C_Settime<=48)
{
C_cnt8=0;
if(keyvalue==6)
{
BEEP1tms();
C_Settime++;
}
if(keyvalue==7)
{BEEP1tms();
C_Settime--;
}
}
if(C_Settime==255)
{C_Settime=48;
}
if(C_Settime==0)
{C_Settime=0;
f_toff=0;
}
if(C_Settime>48)
{ C_Settime=0;
f_toff=0;
}
if(C_Settime!=0)
{
if(f_PWRon1)
{f_toff=1;
}
else
{f_settm=1;
f_ton=1;
}
}
else
{ f_settm=0;
f_ton=0;
f_toff=0;
}
C_SettimeB=C_Settime;
}
}
//=====================================================
void Tempset()
{ if(f_PWRon1)
{ if(M_MODset==n_Mheat||M_MODset==n_Mcool)
{ if(f_temp)
{
if(D_TMPsetp>=61&&D_TMPsetp<=86)
{ if(keyvalue==5)
D_TMPsetp--;
if(keyvalue==4)
D_TMPsetp++;
BEEP1tms();
}
if(D_TMPsetp>86)
D_TMPsetp=86;
if(D_TMPsetp<61)
D_TMPsetp=61;
}
else
{
if(D_TMPset>=16&&D_TMPset<=30)
{ if(keyvalue==5)
D_TMPset--;
if(keyvalue==4)
D_TMPset++;
BEEP1tms();
}
if(D_TMPset>30)
D_TMPset=30;
if(D_TMPset<16)
D_TMPset=16;
}
}
}
}
void Fanchk()
{if(f_PWRon1)
{
if(M_MODset==n_Mdry||M_MODrun==n_Mdry)
return;
if(keyvalue==3)
{ M_FANset++;
BEEP1tms();
if(M_FANset>4)
M_FANset=2;
}
}
}
void Modechk()
{if(f_PWRon1)
{
if(keyvalue==2)
{BEEP1tms();
M_MODset++;
if(f_COOLonly)
if(M_MODset==3)
M_MODset=4;
if(M_MODset>4)
M_MODset=0;
}
}
}
void Powerchk()
{
if(keyvalue==1)
{BEEP1tms();
if(f_PWRon1)
{
f_PWRon1=0;
}
else
f_PWRon1=1;
f_settm=0;
f_toff=0;
C_Settime=0;
}
}
/*
#define I_pow P6.7
#define I_mod P6.6
#define I_fmod P6.5
#define I_temup P3.4
#define I_temdw P3.3
#define I_tmup P3.2
#define I_tmdw P2.5
#define I_slp P2.4
*/
void Keychk()
{
if(I_pow)
{
if(!f_keydw1)
C_tmk1=60;
else
{
if(C_tmk1==0)
{ keyvalue=1;
keybuf=1;
}
else
keyvalue=0;
f_keydw1=0;
}
}
else
{if(!f_keydw1)
{
f_keydw1=1;
C_tmk1=60;
}
}
//=====================================
if(I_mod)
{
if(!f_keydw2)
C_tmk2=60;
else
{
if(C_tmk2==0)
{
keyvalue=2;
keybuf=keybuf+keyvalue;
}
else
keyvalue=0;
f_keydw2=0;
}
}
else
{if(!f_keydw2)
{
f_keydw2=1;
C_tmk2=60;
}
}
//====================================
if(I_fmod)
{
if(!f_keydw3)
C_tmk3=60;
else
{
if(C_tmk3==0)
{
keyvalue=3;
keybuf=keybuf+keyvalue;
}
else
keyvalue=0;
f_keydw3=0;
}
}
else
{if(!f_keydw3)
{
f_keydw3=1;
C_tmk3=60;
}
}
//=========================================
if(I_temup)
{
if(!f_keydw4)
C_tmk4=60;
else
{
if(C_tmk4==0)
{
keyvalue=4;
keybuf=keybuf+keyvalue;
}
else
keyvalue=0;
f_keydw4=0;
}
}
else
{if(!f_keydw4)
{
f_keydw4=1;
C_tmk4=60;
}
}
//=============================================
if(I_temdw)
{
if(!f_keydw5)
C_tmk5=60;
else
{
if(C_tmk5==0)
{
keyvalue=5;
keybuf=keybuf+keyvalue;
}
else
keyvalue=0;
f_keydw5=0;
}
}
else
{if(!f_keydw5)
{
f_keydw5=1;
C_tmk5=60;
}
}
//===============================================
//===============================================
if(I_slp)
{
if(!f_keydw8)
C_tmk8=60;
else
{
if(C_tmk8==0)
{
keyvalue=8;
keybuf=keybuf+keyvalue;
}
else
keyvalue=0;
f_keydw8=0;
}
}
else
{if(!f_keydw8)
{
f_keydw8=1;
C_tmk8=60;
}
}
//==========================================
// if(I_tmdw&&I_tmup) //this section need to check for at the end of check port routine
// {
// if(!f_keydw9)
// {
// C_tmk9=60;
// f_combkey=0;
// }
// else
// {
// keybuf=0;
// if(C_tmk9==0)
// {
//
// keybuf=70;
//
// }
// else
// keyvalue=0;
//
// f_keydw9=0;
// }
// }
//else
// if(!I_tmdw&&!I_tmup)
// {f_combkey=1;
// if(!f_keydw9)
// {
// f_keydw9=1;
// C_tmk9=60;
// }
// }
//==============================
if(I_tmup)
{
if(!f_keydw6)
C_tmk6=60;
else
{//if(!f_combkey)
//{
if(C_tmk6==0)
{
keyvalue=6;
keybuf=keybuf+keyvalue;
}
else
keyvalue=0;
f_keydw6=0;
// }
}
}
else
{if(!f_keydw6)
if(!f_combkey)
{
f_keydw6=1;
C_tmk6=60;
}
}
//===============================================
if(I_tmdw)
{
if(!f_keydw7)
C_tmk7=60;
else
{
//if(!f_combkey)
//{
if(C_tmk7==0)
{
keyvalue=7;
keybuf=keybuf+keyvalue;
}
else
keyvalue=0;
f_keydw7=0;
//}
}
}
else
{if(!f_keydw7)
if(!f_combkey)
{
f_keydw7=1;
C_tmk7=60;
}
}
//===========================================
//check key value
//===========================================
switch(keybuf)
{
case 1: f_keyok=1; //power
keyvalue=1;
break;
case 2: f_keyok=1; //mode
keyvalue=2;
break;
case 3: f_keyok=1;
keyvalue=3; //fan mode
break;
case 4: f_keyok=1;
keyvalue=4; //temp up set
break;
case 5: f_keyok=1;
keyvalue=5; //temp down set
break;
case 6: f_keyok=1;
keyvalue=6; //timer up set
break;
case 7: f_keyok=1; //time down set
keyvalue=7;
break;
case 8: f_keyok=1;
keyvalue=8; //sleep set
break;
// case 70: f_keyok=1;
// keyvalue=9; //clear time set
// break;
default :f_keyok=0;
}
if(f_keyok)
{C_tmk1=C_tmk2=C_tmk3=C_tmk4=C_tmk5=C_tmk6=C_tmk7=C_tmk8=C_tmk9=flagkey=0;
flag&=0b00000110;
}
keybuf=0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?