?? vfd.c
字號:
break;
case EDIT_SECOND:
case EDIT_DAY:
case EDIT_BG_MINUTE:
case EDIT_END_MINUTE:
if(COUNT2)
{ DISP_ARRAY[VFD_SEC_N2_ADDR]=0;
DISP_ARRAY[VFD_SEC_N1_ADDR]=0;
};
break;
}; //END OF switch(TIME_EDIT)
};//IF
}
void KEY_PROCESS(void)
{ BYTE bKEY;
VFD_STB=0;
WR_PANEL(0X42);
KEY_ARRAY[0]=RD_PANEL();
KEY_ARRAY[1]=RD_PANEL();
KEY_ARRAY[2]=RD_PANEL();
VFD_STB=1;
if(KEY_ARRAY[0]||KEY_ARRAY[1]||KEY_ARRAY[2])
{
if(NO_1_SWIP)
{ NO_2_SWIP=1;
NO_1_SWIP=0;
}
else
{ NO_1_SWIP=1;
NO_2_SWIP=0;
DELAY_TIME(COUNT_150mS);
};
}
else
{ NO_1_SWIP=0;
NO_2_SWIP=0;
};
if(NO_2_SWIP)
{ bKEY=GET_KEY_VAL();
switch(bKEY)
{
case KEY_N1:
case KEY_N2:
case KEY_N3:
case KEY_N4:
case KEY_N5:
case KEY_N6:
case KEY_N7:
case KEY_N8:
case KEY_N9:
case KEY_N10:
KEY_TEMP=bKEY;
DISP_SW=bKEY+DISP_DATE;
TIME_EDIT=EDIT_NONE;
break;
case KEY_N10_PLUS:
if((KEY_TEMP<=6)&&(KEY_TEMP>=1)) DISP_SW=KEY_TEMP+DISP_ALARM10;
TIME_EDIT=EDIT_NONE;
KEY_TEMP=0;
break;
case KEY_MODE:
if(DISP_SW==DISP_TIME)
DISP_SW=DISP_DATE;
else if(DISP_SW==DISP_DATE)
DISP_SW=DISP_TIME;
if((DISP_SW!=DISP_TIME)&&(DISP_SW!=DISP_DATE))
DISP_SW=DISP_TIME;
TIME_EDIT=EDIT_NONE;
break;
case KEY_SET:
if(DISP_SW==DISP_TIME)
{ if((TIME_EDIT>=EDIT_HOUR)&&(TIME_EDIT<=EDIT_SECOND))
{ TIME_EDIT++;
if(TIME_EDIT>EDIT_SECOND)
TIME_EDIT=EDIT_NONE;
}
else
TIME_EDIT=EDIT_HOUR;
};
if(DISP_SW==DISP_DATE)
{ if((TIME_EDIT>=EDIT_YEAR)&&(TIME_EDIT<=EDIT_DAY))
{ TIME_EDIT++;
if(TIME_EDIT>EDIT_DAY)
{ TIME_EDIT=EDIT_NONE;
DISP_SW=DISP_TIME;
};
}
else
TIME_EDIT=EDIT_YEAR;
};
if((DISP_SW>=DISP_ALARM1)&&(DISP_SW<=DISP_ALARM16))
{ if((TIME_EDIT>=EDIT_SWITCH)&&(TIME_EDIT<EDIT_END_MINUTE))
{ TIME_EDIT++;
if(TIME_EDIT>EDIT_END_MINUTE)
{ TIME_EDIT=EDIT_NONE;
DISP_SW=DISP_TIME;
};
}
else
TIME_EDIT=EDIT_SWITCH;
};
if(TIME_EDIT<=EDIT_BG_MINUTE)
DISP_BG_END=1;
else
DISP_BG_END=0;
break;
case KEY_CHANGE:
COUNT2=0;
switch(TIME_EDIT)
{
case EDIT_YEAR:
YEAR++;
if(YEAR>10)
YEAR=0;
break;
case EDIT_MONTH:
MONTH++;
if(MONTH>12)
MONTH=0;
break;
case EDIT_DAY:
DAY++;
if((DAY==29)&&(MONTH==2)&&(!LEAP_YEAR()))
DAY=0;
if((DAY==30)&&(MONTH==2))
if(LEAP_YEAR())
DAY=0;
if((DAY==31)&&(!LEAP_MONTH()))
DAY=0;
if(DAY>=32)
DAY=0;
case EDIT_HOUR:
HOUR++;
if(HOUR>24)
HOUR=0;
break;
case EDIT_MINUTE:
MINUTE++;
if(MINUTE>60)
MINUTE=0;
break;
case EDIT_SECOND:
SECOND=0;
break;
case EDIT_SWITCH:
if((DISP_SW<=9)&&(DISP_SW>1))
{ ALARM_ON_OFF=ALARM_ON_OFF_1;
ALARM_ON_OFF>>=(DISP_SW-2);
if(ALARM_ON_OFF^0)
{ ALARM_ON_OFF=1;
ALARM_ON_OFF<<=(DISP_SW-2);
ALARM_ON_OFF=~ALARM_ON_OFF;
ALARM_ON_OFF_1&=ALARM_ON_OFF;
}
else
{ ALARM_ON_OFF=1;
ALARM_ON_OFF<<=(DISP_SW-2);
ALARM_ON_OFF_1|=ALARM_ON_OFF;
}
}
if(DISP_SW>9)
{ ALARM_ON_OFF=ALARM_ON_OFF_2;
ALARM_ON_OFF>>=(DISP_SW-10);
if(ALARM_ON_OFF^0)
{ ALARM_ON_OFF=1;
ALARM_ON_OFF<<=(DISP_SW-10);
ALARM_ON_OFF=~ALARM_ON_OFF;
ALARM_ON_OFF_2&=ALARM_ON_OFF;
}
else
{ ALARM_ON_OFF=1;
ALARM_ON_OFF<<=(DISP_SW-10);
ALARM_ON_OFF_2|=ALARM_ON_OFF;
}
}
break;
case EDIT_BG_HOUR:
BG_HOUR=ALARM_ARRAY[DISP_SW-2][0];
BG_HOUR++;
if(BG_HOUR>=24)
BG_HOUR=0;
ALARM_ARRAY[DISP_SW-2][0]=BG_HOUR;
break;
case EDIT_BG_MINUTE:
BG_MINUTE=ALARM_ARRAY[DISP_SW-2][1];
BG_MINUTE++;
if(BG_MINUTE>60)
BG_MINUTE=0;
ALARM_ARRAY[DISP_SW-2][1]=BG_MINUTE;
break;
case EDIT_END_HOUR:
END_HOUR=ALARM_ARRAY[DISP_SW-2][2];
END_HOUR++;
if(END_HOUR>=24)
END_HOUR=0;
ALARM_ARRAY[DISP_SW-2][2]=END_HOUR;
break;
case EDIT_END_MINUTE:
END_MINUTE=ALARM_ARRAY[DISP_SW-2][3];
END_MINUTE++;
if(END_MINUTE>60)
END_MINUTE=0;
ALARM_ARRAY[DISP_SW-2][3]=END_MINUTE;
break;
};//END SWITCH(TIME_EDIT)
break;
case KEY_EN_ALARM:
ALARM_ENABLE=~ALARM_ENABLE;
break;
case KEY_ALARM_STOP:
ALARM_ON=0;
break;
default:
break;
};//END OF SWITCH(bKEY)
};//END IF(NO_2_SWIP)
}//END OF KEY PROCESS
void ALARM_MAKE(void)
{ BYTE TEMP99;
if(ALARM_ENABLE)
if(ALARM_ON)
{ ALARM_OUT1=1;
TEMP99=SECOND&0X01;
if(TEMP99)
if(COUNT1)
ALARM_OUT2=1;
else ALARM_OUT2=0;
}
else
{ ALARM_OUT1=0;
ALARM_OUT2=0;
};
}//END OF ALARM_MAKE
BYTE GET_KEY_VAL(void)
{ BYTE TEMP66=0;
if(KEY_ARRAY[0])
{ while(KEY_ARRAY[0])
{ TEMP66++;
KEY_ARRAY[0]>>=1;
};
};
if(KEY_ARRAY[1])
{ TEMP66=8;
while(KEY_ARRAY[1])
{ TEMP66++;
KEY_ARRAY[1]>>=1;
};
};
if(KEY_ARRAY[2])
{ TEMP66=16;
while(KEY_ARRAY[2])
{ TEMP66++;
KEY_ARRAY[2]>>=1;
};
};
return(TEMP66);
}
void DELAY_TIME(BYTE TEMP44)
{
BYTE TEMP45;
for(TEMP44=0;TEMP44<120;TEMP44++)
for(TEMP45=0;TEMP45<249;TEMP45++);
}
void DELAY_100uS(void)
{
BYTE X;
X = 0;
X = 0;
for(X=0;X<30;X++)
{ ; ; }
}
BYTE GET_IR_KEY(void)
{ BYTE data I,J,bCOUNT;
BYTE K;
//9mS low 4.5mS high (NEC FORMATER)
for ( bCOUNT = 0 ; !IR ; bCOUNT++ ) DELAY_100uS();
if ( ( bCOUNT > 93 ) || ( bCOUNT < 87) ) return(KEY_NO_KEY);
for ( bCOUNT = 0 ; IR ; bCOUNT++ ) DELAY_100uS();
if ( bCOUNT > 48 ) return(KEY_NO_KEY);
//contiun key 9mS low 2.25mS high 0.56mS low
if ( ( bCOUNT > 19 ) && ( bCOUNT<24) )
{ for ( bCOUNT = 0 ; !IR ; bCOUNT++ ) DELAY_100uS();
if(bCOUNT>4||bCOUNT<2)
if ( ( mSECOND - PRE_mSECOND ) < 21)//IF TIME > 180mS KEY invalid
return(PRE_KEY);
}
//a new key 0 is low 0.56 high 0.56
// 1 is low 0.56 high 1.69
for ( bCOUNT = 0 ; !IR ; bCOUNT++ ) DELAY_100uS(); //TIME VALUE IS VALID
//READ IR KEY VALUE
for(K=0;K<4;K++)
{
J=0;
for(I=0;I<8;I++)
{ for ( bCOUNT=0 ; (!IR)&&(bCOUNT<8) ; bCOUNT++ ) DELAY_100uS(); //BYPASS LOW SIGNAL
if(bCOUNT==0) //IT MAYBE CAUSE BY NOISE
{
I--;
continue;
}
for ( bCOUNT=0 ; IR && (bCOUNT<20); bCOUNT++ ) DELAY_100uS();
if(bCOUNT==0) //IT MAYBE CAUSE BY NOISE
{
I--;
continue;
}
J>>=1;
if(bCOUNT>=9) //bCOUNT>9 IS '1' bCOUNT<9 IS '0'
{
J|=0x80;
if(bCOUNT>20) return(KEY_NO_KEY);
}
}
IR_KEY_ARRAY[K]=J;
}
#ifdef CUSTOMER_CODE
if(IR_KEY_ARRAY[0]!=CUSTOMER_CODE1)
return(KEY_NO_KEY);
if(IR_KEY_ARRAY[1]^CUSTOMER_CODE1)
return(KEY_NO_KEY);
#endif
if(!(IR_KEY_ARRAY[3]^IR_KEY_ARRAY[4]))
return(KEY_NO_KEY);
switch(IR_KEY_ARRAY[3])
{
case IR_N1:
IR_KEY=KEY_N1;
break;
case IR_N2:
IR_KEY=KEY_N2;
break;
case IR_N3:
IR_KEY=KEY_N3;
break;
case IR_N4:
IR_KEY=KEY_N4;
break;
case IR_N5:
IR_KEY=KEY_N5;
break;
case IR_N6:
IR_KEY=KEY_N6;
break;
case IR_N7:
IR_KEY=KEY_N7;
break;
case IR_N8:
IR_KEY=KEY_N8;
break;
case IR_N9:
IR_KEY=KEY_N9;
break;
case IR_N10:
IR_KEY=KEY_N10;
break;
case IR_N10_PLUS:
IR_KEY=KEY_N10_PLUS;
break;
case IR_MODE:
IR_KEY=KEY_MODE;
break;
case IR_SET:
IR_KEY=KEY_SET;
break;
case IR_CHANGE:
IR_KEY=KEY_CHANGE;
break;
case IR_EN_ALARM:
IR_KEY=KEY_EN_ALARM;
break;
case IR_ALARM_STOP:
IR_KEY=KEY_ALARM_STOP;
break;
default:
IR_KEY=KEY_NO_KEY;
break;
};//END OF SWITCH(IR[3])
EX0=1;
PRE_KEY=IR_KEY;
IR_MARK=1;//IR DO NOT PROCESS
PRE_mSECOND=mSECOND;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -