本帖最后由 ljolove 于 2010-2-2 14:19 编辑
晕了,怎么一打开是首页,谢谢匠人的提醒,算了还是再复制一遍吧
void scan_key(void)
{
switch(Keystate)
{
case KEY_IDEL :
Key_v=PIND&0x0f;
if(Key_v!=NONE_KEY_DOWN)
{
Keystate=KEY_DELAY;
KeyDelaytime=0;
}
break;
case KEY_DELAY :
if(KeyDelaytime>=KEY_DELAY_TIME)
{
Key_v=PIND&0x0f;
if(Key_v!=NONE_KEY_DOWN)
{
if(Keylock==1)
{
if(Key_v==KEY_ENTER)
{
Key_lock_2s=0;
}
else if(Key_v==KEY_RESET)
{
if(Unstable_bit==0)
{
PORTB&=0xf9;
Led_state&=0xf9;
CH452_Write(CH452_NO_BCD);
CH452_Write(CH452_DIG0|Led_state);
Delay_timer=0;
}
}
}
else
{
Key_pro(Key_v);
}
KeySound();
Keystate=WAIT_KEY_OPEN;
}
else
{
Keystate=KEY_IDEL;
}
}
break;
case WAIT_KEY_OPEN :
Key_v=PIND&0x0f;
if(Key_v==NONE_KEY_DOWN)
{
Keystate=KEY_IDEL;
Key_lock_2min=0;
return_disp=0;
}
else if(Key_v==KEY_ENTER)
{
if(Key_lock_2s>=2000)
{
Machine_state=DISP_UNLOCK;//DISP_Unlock();
Key_lock_disp_time=0;
Key_lock_2s=0;
Keylock=0;
}
}
break;
}
}
扫描按键处理,第三个状态是判断按键抬起的,你要做什么设置都可以在里面加,我的代码里有一个是判断按两秒开锁的,LZ描述的功能通过这个应该可以轻松实现
|