void key_scan(){
if (longkey_fg==0)
{
if ( _ION(KEYIN)==0&&work_states==0)
{
if (++keyon1_num>=5)
{
if (_ION(KEYIN)==0&&work_states==0) { // 第一次按Key键则全功率输出
highhot_out();
work_states=1;
keyon1_num=0;
}
}
}
else if ( _ION(KEYIN)==1&&work_states==1)
{
if (++keyoff1_num>=5)
{
if (_ION(KEYIN)==1&&work_states==1) { // 第一次释放,置第一次释放标志
work_states=2;
keyoff1_num=0;
}
}
}
else if ( _ION(KEYIN)==0&&work_states==2)
{
if (++keyon2_num>=5)
{
if (_ION(KEYIN)==0&&work_states==2) { // 第二次按Key键则低热
hotlow_out();
work_states=3;
keyon2_num=0;
}
}
}
else if ( (work_states==3)&&(_ION(KEYIN)==1))
{
if (++keyoff2_num>=5)
{
if ((work_states==3)&&(_ION(KEYIN)==1)) { // 第2次松开后,置第二次松开标志
work_states=4;
keyoff2_num=0;
}
}
}
else if ((work_states==4)&&(_ION(KEYIN)==0))
{
if (++keyon3_num>=5)
{
if ((work_states==4)&&(_ION(KEYIN)==0)) { // 第3次按Key键,则关闭
// close_out();
work_states=5;
keyon3_num=0;
}
}
}
else if ((work_states==5)&&( _ION(KEYIN)==1))
{
if (++keyoff3_num>=5){
if ((work_states==5)&&( _ION(KEYIN)==1)) { // 第3次松开后,置清除所有标志
close_out();
work_states=0;
keyoff3_num=0;
}
}
}
}
if (_ION(KEYIN)==0) //长按键显示,问题就出在这里,基本上就是加上了,工作逻辑就不对了
{
if (work_states!=0)
{
if (_ION(KEYIN)==0)
{
longkey_num++;
if(longkey_num>=500){
longkey_fg=1;
ad_value=ADConvert();
Display_Voltage(ad_value); //采样,显示电压
longkey_num=0;
}
}
}
}
} |