按键按住不放的问题


我现在想要实现按键加减数码管动态扫描显示数据的功能。
每按键一下加或减1。这个已经实现
但是如果按键不放超过1.5秒则数值快速加减1,如每秒加减10个数值,相当于连续按了10次按键一样。这个应该怎么实现编程呢? 请高手们说说编程思路,给个流程图~~~~~

我也来说两句 查看全部回复

最新回复

  • ybzjllj (2008-7-14 14:32:48)

    在判断"键释放"的部分加个计数变量,计数到若干时,调用连加.键释放后,清零计数变量.
  • ybzjllj (2008-7-14 15:02:47)

    CODE:

    void main(void)
    { uchar keyTimeCount;
    keyTimeCount=0;
    dispNum=0;
    while(1){
    if(!key_add){
    display();
    if(!key_add){
    dispNum=dispNum<99999999?++dispNum:0;
    while(!key_add){
    NumToBuf(dispNum); display();
    if(keyTimeCount<50) keyTimeCount+=1;
    else dispNum=dispNum<99999999?++dispNum:0;
    }
    keyTimeCount=0;
    }
    }
    if(!key_sub){
    display();
    if(!key_sub){
    dispNum=dispNum==0?99999999:--dispNum;
    while(!key_sub){
    NumToBuf(dispNum); display();
    if(keyTimeCount<50) keyTimeCount+=1;
    else dispNum=dispNum==0?99999999:--dispNum;
    }
    keyTimeCount=0;
    }
    }
    NumToBuf(dispNum);
    display();
    }
    }

    3B数码管动态扫描(连加).rar
    (2008-07-14 15:02:47, Size: 17.5 KB, Downloads: 4)

  • hu44778 (2008-7-14 15:45:13)

  • lysh1983 (2008-7-15 08:39:17)

    非常感谢各位的帮忙~~~~~~~~~~~~~~~~~~~~~~·
  • lysh1983 (2008-7-15 15:27:38)

    用软件仿真没有问题了,但是硬件仿真就出错,数值有时候随着按键同时变化。
    比如现在是222,按一下+键应该变为223,但是却变成了33333333
  • ybzjllj (2008-7-15 16:49:14)

    程序有问题.                                                       .