/* --此段代码通用,修改后可以完成一般设置键盘的动作响应 --flystone 2006-02 --转载保留此信息 */ #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) 这四个键自行根据键盘定义修改 //------------------------------------------------------------------------- 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; } } } } } } //----------------定时器自行定义------------------------------ void IntT2() interrupt 7 // 1ms { scankey ++; //80MS扫描键盘 if (scankey >= SCANKEY_T) { scankey = 0; ScanKey(); } }
单片机键盘响应C代码
最新推荐文章于 2023-03-09 21:11:52 发布