打印

新手做的扫描按键,一次能扫描多个,欢迎指点

[复制链接]
1096|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hceng|  楼主 | 2014-1-10 17:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hceng 于 2014-1-10 22:08 编辑

新手勿喷!!
里面有Proteus仿真文件,
希望高手指出不足,还有如何做能响应按键释放,谢谢


五楼有稳定版,能分别响应按下和释放

为了响应按下和释放调试的快吐血,不过还是做出来,兴奋………………

KeyScan1.03.rar

75.88 KB

相关帖子

沙发
hceng|  楼主 | 2014-1-10 18:38 | 只看该作者
本帖最后由 hceng 于 2014-1-10 22:09 编辑

响应释放的方式只要做下面修改
/********************************************************************
函数功能:扫描没有按下的键是否是刚刚释放的
入口参数:shu 竖坐标 hen横坐标
返    回:1表示是释放的键,0表示不是
备    注:
********************************************************************/
bit ClearKeyState(uchar8 shu,uchar8 hen)
{
struct state *p=&Last;
switch(bKeyShuNum[shu]+hen)
        {
        case Key1:if(p->key1==1){p->key1=0;return 1;}
                                else return 0;         
        case Key2:if(p->key2==1){p->key2=0;return 1;}
                                else return 0;
         case Key3:if(p->key3==1){p->key3=0;return 1;}
                           else return 0;
        case Key4:if(p->key4==1){p->key4=0;return 1;}
                                else return 0;
        case Key5:if(p->key5==1){p->key5=0;return 1;}
                                 else return 0;
        case Key6:if(p->key6==1){p->key6=0;return 1;}
                                else return 0;
        case Key7:if(p->key7==1){p->key7=0;return 1;}
                                else return 0;
        case Key8:if(p->key8==1){p->key8=0;return 1;}
                                else return 0;
        case Key9:if(p->key9==1){p->key9=0;return 1;}
                                else return 0;
        case Key10:if(p->key10==1){p->key10=0;return 1;}
                                else return 0;
        case VP1Key11:if(p->vp1key11==1){p->vp1key11=0;return 1;}
                                   else return 0;
        case VP2Key12:if(p->vp2key12==1){p->vp2key12=0;return 1;}
                                   else return 0;
        case LEFT:if(p->left==1){p->left=0;return 1;}
                                   else return 0;
        case RIGHT:if(p->right==10){p->right=0;return 1;}
                                  else return 0;
        case UP: if(p->up==1){p->up=0;return 1;}
                                  else return 0;
        case DOWN: if(p->down==1){p->down=0;return 1;}
                                  else return 0;
        case MACRO:if(p->macro==1){p->macro=0;return 1;}
                                  else return 0;
        case SETG:if(p->setg==1){p->setg=0;return 1;}
                                  else return 0;
        case MODE:if(p->mode==1){p->mode=0;return 1;}
                                else return 0;
        default:break;
        }
return 0;
}

使用特权

评论回复
板凳
hceng|  楼主 | 2014-1-10 18:38 | 只看该作者
欢迎指点不足

使用特权

评论回复
地板
dirtwillfly| | 2014-1-10 20:14 | 只看该作者
谢谢楼主分享

使用特权

评论回复
5
hceng|  楼主 | 2014-1-10 22:05 | 只看该作者
修改各种BUG之后稳定版

KeyScan1.03.rar

77.25 KB

使用特权

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

本版积分规则

17

主题

48

帖子

0

粉丝