/* -- This code segment is common, after modification, you can complete the general keyboard setting operation response -- flystone 2006-02 -- repost and retain this information */# define scankey_t 40 # define delay_t 6 # define true 1 # define false 0 # define key_add 0x0e // (00001110) # define key_enter 0x0b // (00001011) # define key_mover 0x0d // (00001101) # define key_pw 0x07 // (00000111) these four keys are modified according to the keyboard definition // ------------------------------------------------------------------------- void scankey (void) {static unsigned char key; static Bit key_sta, key_down; static int delay_t; If (! Key_sta) {key = getkey (); If (Key = key_pw | key = key_enter | key = key_mover | key = key_add) key_sta = true ;} else {If (! Key_down) {If (Key = getkey () {key_down = true; currentkey = key; delay_t = 0;} else key_sta = false;} else {If (getkey () = 0x00) {key = 0x00; key_down = false; key_sta = false;} else {If (getkey () = Key) {delay_t + = 1; if (delay_t> = delay_t) {delay_t = 0; currentkey = Key ;}}}}// ------------------ custom timer -------------------------------- void intt2 () interrupt 7 // 1 ms {scankey ++; // 80 ms scan keyboard if (scankey >=scankey_t) {scankey = 0; scankey ();}}