/*
--此段代码通用,修改后可以完成一般设置键盘的动作响应
--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代码
最新推荐文章于 2024-10-25 10:37:04 发布
3451

被折叠的 条评论
为什么被折叠?



