PS2键盘的键值判断
0赞
发表于 6/8/2012 2:26:32 PM
阅读(3440)
****************************************************************************/ #include "dm_bf5xx.h" #include "dm_types.h" #include "dm_ps2_codes.h" #include/**************************************************************************** * 功能 :外部声明的变量 ****************************************************************************/ extern volatile uint8_t key_up; extern volatile uint8_t key; extern volatile uint8_t key2; extern volatile uint8_t key3; /**************************************************************************** * 名称 : PS2_select * 功能 : 选通PS2 键盘 245 * 入口参数 :无 * 出口参数 :无 ****************************************************************************/ void PS_Clk_In() { *pCtrIner_Flag_OE =~KEY_SW_OE;//KEY_SW_OE=0 mdelay(500); *pCtrOut_Flag_C = KEY_SW;//KEY_SW=1 mdelay(500); } /**************************************************************************** * 名称 : PS2_DAT_DIR * 功能 : 接到PS2键盘数据口的 PF 口设置为输入 * 入口参数 :无 * 出口参数 :无 ****************************************************************************/ void PS2_KEYDAT_DIR() { *pFIO_DIR = (*pFIO_DIR)&(~SCL); // 输入允许 *pFIO_INEN |= SCL; *pCtrOut_Flag_A = PS_DAT_DIR; mdelay(500); } /**************************************************************************** * 名称 : Decode * 功能 : 键盘查表并打印函数 * 入口参数 :无 * 出口参数 :无 ****************************************************************************/ extern volatile uint8_t key; void Decode(void) { int_t i; if(key_up == 1) { if(key==key3) { for(i=0;i<59;i++) { if(key == UnShifted[i][0]) { printf("THE KEY is %c!\r\n",UnShifted[i][1]); key_up = 0; key = 0;key2 = 0;key3 = 0; } } } else { key_up = 0; key = 0;key2 = 0;key3 = 0; } } }
