菜鸟遭遇的键盘应用大问题

[复制链接]
2357|2
 楼主| 52mcu 发表于 2008-4-2 20:19 | 显示全部楼层 |阅读模式
按键处理问题。菜鸟经过努力。用了两种方式检测按键都得不到好的效果,这该咋办啊??大虾&nbsp;help&nbsp;me!!!<br /><br />方案1:主循环扫描方式。<br />&nbsp;a。当不调用GetADValue()做ad转换时,按键检测效果很好。但程序不能只做一个按键检测。<br />&nbsp;b。一旦调用GetADValue()做ad转换&nbsp;按键检测迟钝。就有按键检测不到。<br /><br />&nbsp;/*a。如下方式按键检测效果很好*/<br />&nbsp;while(1)&nbsp;{<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ScanKey();&nbsp;&nbsp;//扫描按键<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MainDisplay();&nbsp;//显示按键结果<br />}<br />//----------------------------------------------------------<br />/*b。加入ad转换后&nbsp;按键检测效果糟糕,按键不能及时响应*/<br />while(1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;GetADValue();&nbsp;//读取ad转换值???????<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ScanKey();&nbsp;&nbsp;//扫描按键<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MainDisplay();&nbsp;//显示按键结果<br />&nbsp;}<br /><br /><br /><br />方案2:定时中断扫描方式。<br />a。当不调用GetADValue()做ad转换时,按键检测过敏,按一次键显示结果跳了好多次<br />b。一旦调用GetADValue()做ad转换&nbsp;按键检测迟钝。就有按键检测不到。<br />&nbsp;<br />&nbsp;/*a。如下方式按键检测效果糟糕,按一次键显示结果跳了好多次*/&nbsp;<br />Timer0Init();&nbsp;//初始化定时中断<br />while(1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;ScanKey();&nbsp;&nbsp;//循环扫描按键<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;MainDisplay();&nbsp;//显示按键结果<br />}<br /><br />void&nbsp;interrupt&nbsp;timer0_isr(void)<br />{<br />&nbsp;ScanKey();&nbsp;&nbsp;//扫描按键<br /><br />}<br /><br />&nbsp;/b。*如下方式按键检测效果糟糕,按键检测迟钝。就有按键检测不到*/&nbsp;<br />Timer0Init();&nbsp;//初始化定时中断<br />while(1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;GetADValue();&nbsp;//读取ad转换值???????<br />&nbsp;&nbsp;&nbsp;&nbsp;ScanKey();&nbsp;&nbsp;//循环扫描按键<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MainDisplay();&nbsp;//显示按键结果<br />&nbsp;}<br /><br />void&nbsp;interrupt&nbsp;timer0_isr(void)<br />{<br />&nbsp;ScanKey();&nbsp;&nbsp;//扫描按键<br /><br />}<br /><br /><br />
xieyuanbin 发表于 2008-4-2 20:24 | 显示全部楼层

按键响应速度和消抖之间的矛盾

按键的响应速度,一般在20-100mS之内响应一次均可接受,而消抖,至少在检测到按键状态变化之后,连续10-100次状态无变化才可确认按键被按下或放开.
ocon 发表于 2008-4-4 06:18 | 显示全部楼层

两种方案都没有问题,是你的程序有BUG。

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

157

主题

292

帖子

0

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