[应用相关] 如何判断两个按键同时按下

[复制链接]
1888|19
 楼主| Rangar 发表于 2018-2-27 14:38 | 显示全部楼层 |阅读模式
pi, gp, GPIO, IO, abi
if((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)==0)&&(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6)==0))      //ÉèÖüü
{
  for(i=0;i<10000;i++);
  if((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)==0)&&(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6)==0))
  {
   while((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)==0)&&(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6)==0));
   LcdCommand(0x0f);              //&Iuml;&Ocirc;&Ecirc;&frac34;&raquo; &Atilde;&aelig;&Eacute;è&Ouml;&Atilde;
   DisplayDS13021();
   ScreenNumber=0;
   LcdCommand(0x85);
   SetAddress=0X85;
   
   
   
   
   
   SetFlag=1;
   
  }
}
我是这样写的,不过不太灵敏。我不太会用什么状态机,高手支招,谢谢!
Stannis 发表于 2018-2-27 15:02 | 显示全部楼层
FPGA可以
Brand2 发表于 2018-2-27 15:09 | 显示全部楼层
判断任何一个按键触发之后,从新读取一遍所有按键的状态
Soraka 发表于 2018-2-27 15:20 | 显示全部楼层
如果是 按下需要很长时间。才能识别,就看看延时方面,或者其他语句是否带来了较大的延时。可以试试多次判断,短延时
Garen2 发表于 2018-2-27 15:30 | 显示全部楼层
这个if里面套个for,for里面又套个if,感觉好怪
Ryze 发表于 2018-2-27 15:38 | 显示全部楼层
这么写没什么问题啊。就是两个键同时按下,过一会还是同时按下,就认为是都按下了。
有什么不灵敏的?你能说说看到的现象吗?
Varus 发表于 2018-2-27 15:51 | 显示全部楼层
定时中断里定时读取GPIO状态,**(用内存数组记下,不断循环记,记最近6次)。

主程序中查看**内存,发现连续6次按键A,B 状态都是0 那就是同时按下了。如果发现有不是0的那就不是了。
643757107 发表于 2018-2-27 16:12 | 显示全部楼层
发生中断后,检测两个啊,两个按键的逻辑与。
Snow7 发表于 2018-2-27 16:44 | 显示全部楼层
判断按键触发之后,重新读取所有按键的状态
kingkits 发表于 2018-2-27 16:56 | 显示全部楼层
先一个口输出(全1),另一个口输入,判断一下
然后反过来过来,之前的输出变输入,输入变输出,最后再根据得到的信息单线输出,判断一下

fentianyou 发表于 2018-2-27 22:03 | 显示全部楼层
这个使用中断。
xiaoyaodz 发表于 2018-2-27 22:04 | 显示全部楼层
只能通过扫描实现了。
febgxu 发表于 2018-2-27 22:04 | 显示全部楼层
楼主要实现什么功能?
sdlls 发表于 2018-2-27 22:04 | 显示全部楼层
使用外部中断。
pixhw 发表于 2018-2-27 22:05 | 显示全部楼层
两个IO可以接在一个中断上。
fentianyou 发表于 2018-2-27 22:07 | 显示全部楼层
两个中断同时相应。
xiaoyaodz 发表于 2018-2-27 22:07 | 显示全部楼层
扫描的速度非常慢了。
pixhw 发表于 2018-2-27 22:07 | 显示全部楼层
如果一个中断触发,判断两个IO是否有电平。
sdlls 发表于 2018-2-27 22:07 | 显示全部楼层
这样是速度如何怎么判断呢
febgxu 发表于 2018-2-27 22:07 | 显示全部楼层
检测串口可以使用两个IO状态。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

154

主题

763

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部