图2 响应键盘中断输入流程图
实际上,矩阵键盘驱动的设计就是键盘中断处理的设计。下面就对矩阵键盘驱动中的中断处理设计作详细的介绍。if(v_pGPIOReg﹥GEDR_x & GPIO_6) {//中断触发 v_pGPIOReg﹥GEDR_x = GPIO_6;//清除中断 return SYSINTR_KEYONE;//返回中断标识} |
switch (dwEventWAIT_OBJECT_0){//事件类型 case 0://第1行键盘有键按下 v_pGPIOReg﹥GPDR_x &= ~ (GPIO_13);//设为输入 v_pGPIOReg﹥GPDR_x |= (GPIO_6);//中断I/O输出 v_pGPIOReg﹥GPCR_x |= (GPIO_6);//输出低电平 while(!(v_pGPIOReg﹥GPLR_x & GPIO_13)) {//扫描矩阵键盘,判断按键列位置 if(num==1)//第1次连发延时400 ms Sleep(400); else Sleep(100);//按键延时去抖 if(!(v_pGPIOReg﹥GPLR_x & GPIO_13)){//列位置 keybd_event('0' ,0x71, 0, 0);//发键盘消息 num++;//连发计数 } else{ if((v_pGPIOReg->GPLR_x & GPIO_13)&&num>0){ num=0;//按键弹起 keybd_event('0',0x71, KEYEVENTF_KEYUP, 0);} } } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |