打印

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

[复制链接]
1634|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
52mcu|  楼主 | 2008-4-2 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按键处理问题。菜鸟经过努力。用了两种方式检测按键都得不到好的效果,这该咋办啊??大虾 help me!!!

方案1:主循环扫描方式。
 a。当不调用GetADValue()做ad转换时,按键检测效果很好。但程序不能只做一个按键检测。
 b。一旦调用GetADValue()做ad转换 按键检测迟钝。就有按键检测不到。

 /*a。如下方式按键检测效果很好*/
 while(1) {
 
    ScanKey();  //扫描按键
 
    MainDisplay(); //显示按键结果
}
//----------------------------------------------------------
/*b。加入ad转换后 按键检测效果糟糕,按键不能及时响应*/
while(1) {
    GetADValue(); //读取ad转换值???????

    ScanKey();  //扫描按键
 
    MainDisplay(); //显示按键结果
 }



方案2:定时中断扫描方式。
a。当不调用GetADValue()做ad转换时,按键检测过敏,按一次键显示结果跳了好多次
b。一旦调用GetADValue()做ad转换 按键检测迟钝。就有按键检测不到。
 
 /*a。如下方式按键检测效果糟糕,按一次键显示结果跳了好多次*/ 
Timer0Init(); //初始化定时中断
while(1) {
   
   ScanKey();  //循环扫描按键
 
   MainDisplay(); //显示按键结果
}

void interrupt timer0_isr(void)
{
 ScanKey();  //扫描按键

}

 /b。*如下方式按键检测效果糟糕,按键检测迟钝。就有按键检测不到*/ 
Timer0Init(); //初始化定时中断
while(1) {
    GetADValue(); //读取ad转换值???????
    ScanKey();  //循环扫描按键
 
    MainDisplay(); //显示按键结果
 }

void interrupt timer0_isr(void)
{
 ScanKey();  //扫描按键

}


沙发
xieyuanbin| | 2008-4-2 20:24 | 只看该作者

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

按键的响应速度,一般在20-100mS之内响应一次均可接受,而消抖,至少在检测到按键状态变化之后,连续10-100次状态无变化才可确认按键被按下或放开.

使用特权

评论回复
板凳
ocon| | 2008-4-4 06:18 | 只看该作者

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

157

主题

292

帖子

0

粉丝