有三个键,分别是 KEY_PLAY KEY_UP KEY_DOWN #define KEY_PLAY 0 #define KEY_UP 1 #define KEY_DOWN 2 #define KEY_DEL 3 #define KEY_PORT  0 #define KEY_PORT_PU  0_PU #define KEY_PORT_DDR  0_DDR #define KEY_MARK (BIT(KEY_DEL)|BIT(KEY_DOWN)|BIT(KEY_UP)|BIT(KEY_PLAY)) #define KEY_0S_PLAY BIT(KEY_PLAY) #define KEY_0S_UP BIT(KEY_UP) #define KEY_0S_DOWN BIT(KEY_DOWN) #define KEY_0S_DEL BIT(KEY_DEL) #define KEY_1S_PLAY BIT(KEY_PLAY+4) #define KEY_1S_UP BIT(KEY_UP+4) #define KEY_1S_DOWN BIT(KEY_DOWN+4) #define KEY_1S_DEL BIT(KEY_DEL+4) #define KEY_2S_PLAY BIT(KEY_PLAY+8) #define KEY_2S_UP BIT(KEY_UP+8) #define KEY_2S_DOWN BIT(KEY_DOWN+8) #define KEY_2S_DEL BIT(KEY_DEL+8) #define KEY_REP_PLAY BIT(KEY_PLAY+12) #define KEY_REP_UP BIT(KEY_UP+12) #define KEY_REP_DOWN BIT(KEY_DOWN+12) #define KEY_REP_DEL BIT(KEY_DEL+12)
现在KEY_PLAY可以长短按,其他两个却不行! void Key_Scan( void ) { Key_IO_Set(); if( keydataio = (~KEY_PORT)&KEY_MARK ) { if( PowerDownCount ) PowerDownCount = ModePower; if( keydata == keydataio ) { if( !(keycnt%keyrepcount) ) pub_keydata |= (keydata&0xF)<<12; if( keycnt++ <= KEY_CNT2S ) { if( keycnt == KEY_CNT2S ) pub_keydata |= (keydata&0x9)<<8; if( keycnt == KEY_CNT0S+1 ) pub_keydata |= (keydata&0x6); } keycnt &= 0x7FFFU; } else keydata = keydataio; } else { if( keycnt ) { if( keycnt < KEY_CNT2S ) pub_keydata |= (keydata&0x9)<<4; keycnt = 0; } if( PowerDownCount ) PowerDownCount--; } Key_IO_Clear(); if( Time_Count ) Time_Count--; } 有人知道怎么设置不!? |