unsigned char key_buf; unsigned char key_flag; unsigned char key_edge;
void Detect_Key(unsigned char keycow){ static unsigned char state=0; switch (keycow){ case 0: if((key_buf&0x04)==0){ if((key_flag&0x80)!=0){ key_edge|=0x80; key_flag&=0x7f; } } else key_flag|=0x80; if((key_buf&0x02)==0){ if((key_flag&0x40)!=0){ key_edge|=0x40; key_flag&=0xbf; } } else key_flag|=0x40; break;
case 1: if((key_buf&0x04)==0){ if((key_flag&0x20)!=0){ key_edge|=0x20; key_flag&=0xdf; } } else key_flag|=0x20; if((key_buf&0x02)==0){ if((key_flag&0x10)!=0){ key_edge|=0x10; key_flag&=0xef; } } else key_flag|=0x10; break; case 2: if((key_buf&0x04)==0){ if((key_flag&0x08)!=0){ key_edge|=0x08; key_flag&=0xf7; } } else key_flag|=0x08; if((key_buf&0x02)==0){ if((key_flag&0x04)!=0){ key_edge|=0x04; key_flag&=0xfb; } } else key_flag|=0x04; break;
default: break; } } |