执行结果是什么

[复制链接]
380|14
手机看帖
扫描二维码
随时随地手机跟帖
wangzsa|  楼主 | 2018-4-12 09:11 | 显示全部楼层 |阅读模式
if(G_Key_Flag==4)     
            if(!G_Key2)
              delay_ms(100);
               if(!G_Key2)
                  G_Counter3++;
                     if(G_Counter3==100)
                     {
                        G_Counter3=1;
                       }
1.  G_Key_Flag是一个状态量;
2.G_Key2是一个按键量;
3.G_Counter3是一个变量;
这一段的执行结果是什么还有就是为什么按键按下结果加的不是1?
zhuww| | 2018-4-12 09:15 | 显示全部楼层

真正要完成的目的是啥啊

使用特权

评论回复
wangzsa|  楼主 | 2018-4-12 09:20 | 显示全部楼层
按一下G_Key2加1,一直按着G_Key2就连续加1.

使用特权

评论回复
zhanglli| | 2018-4-12 09:23 | 显示全部楼层
想法没错,建议打断点跟踪一下,程序流程是不是按照你的设计在跑。

使用特权

评论回复
wangzsa|  楼主 | 2018-4-12 09:27 | 显示全部楼层
就这里不是   其他的地方都是

使用特权

评论回复
yufe| | 2018-4-12 09:32 | 显示全部楼层
那你的断点看到哪些程序没执行呢?控制程序跳转流程的...

使用特权

评论回复
llia| | 2018-4-12 09:39 | 显示全部楼层
因为按键按下后,变量一直做加法(哪怕按下的时间很短),所以加的不是1。

使用特权

评论回复
wangpe| | 2018-4-12 09:39 | 显示全部楼层
好像忘了清0了
if(flag_1s==1)
{
          G_Counter3++;    //1s做一次加1。
          flag_1s=0;
}

使用特权

评论回复
langgq| | 2018-4-12 09:41 | 显示全部楼层
我觉得他出现连续加的问题是最后没有检测按键抬起  应该检测一下 就不会连加了

使用特权

评论回复
zhuww| | 2018-4-12 09:43 | 显示全部楼层
这段程序的功能是:
如果G_Key_Flag=4,就判断按键是否按下
如果按键按下,则变量G_Counter3自加一(一直按住,则连续加,不过要看G_Key_Flag的条件是否满足)
如果G_Counter3=100,G_Counter3归1

使用特权

评论回复
zhanglli| | 2018-4-12 09:48 | 显示全部楼层


先判断是否有键按下,如果是,软件去抖,在判断是否有键按下,真有则执行G_Counter3++

使用特权

评论回复
guoyt| | 2018-4-12 09:52 | 显示全部楼层

程序的格式看不大懂。

自加使用 ++G_Counter3 代替 G_Counter3++吧,或者G_Counter3 += 1,不然G_Counter3的值是不会被修改的。

使用特权

评论回复
yufe| | 2018-4-12 09:56 | 显示全部楼层

当按键被按下时,该段程序已经执行了很多遍,所以不是加1。想办法使按键被按下时,只执行一次,比如:用一个状态量,在程序执行一次后改变状态量的值,使不能再次执行该段程序。

使用特权

评论回复
wangpe| | 2018-4-12 09:59 | 显示全部楼层
花括号是不是打掉了些哦?另外该代码是否被循环调用?多久调用一次?如果你定时器准确,你按一秒钟的话,G_Counter3也最多增加为10次,如果你按的时间不足100ms,你的计数器不会增加的。
我猜你主要是想实现按键功能,需要消颤,按键要达到一定时长才认为是一次有效的按键动作。
代码改成如下看看,如果是楼主期望的,请散下分哦,谢谢:
if(G_Key_Flag==4)     
{
     if(!G_Key2)
         {
            delay_ms(100);
            if(!G_Key2)
              {
                G_Counter3++;
                if(G_Counter3==100)
                    G_Counter3=1;
               }
            else
               G_Counter3 = 0;
    }
}
更多操作

使用特权

评论回复
wangzsa|  楼主 | 2018-4-12 10:02 | 显示全部楼层

结贴了,多谢大家讨论这么多哈,呵呵

使用特权

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

本版积分规则

914

主题

9040

帖子

5

粉丝