打印

小程序怪现象

[复制链接]
1390|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我想写一个按键控制LED灯的程序,按一次亮再按一次灭,每按一次就翻转一次。算法就是没按一次,让一个变量累加,然后对2取余,即偶数灭,奇数亮。
程序如图2所示,但是上电后灯一直闪,按一次后灯亮,再按一次还是闪烁,不断循环....后来我调成程序如图1,结果上电灯灭,按一次灯亮,只能循环4次....
这是什么原因啊????

图2.png (14.19 KB )

图2

图2

图1.png (13.49 KB )

图1

图1

相关帖子

沙发
NE5532| | 2014-8-22 22:31 | 只看该作者
这哪里需要对2取余数呢?直接XOR 0x01以后看是0是1不就OK了啊?至于第二个程序,当变量的值超过4以后,没有任何一个Case条件匹配,当然就不动咯。

至于楼主说的“循环亮”,我觉得楼主的case里面是不是忘了加{ }了?

使用特权

评论回复
板凳
lnulibin| | 2014-8-22 22:49 | 只看该作者
主要是stat[0].bonoff这个变量,是如何随着按键按下和抬起而变化的。
是按下按键一直加,还是抬起按键才加一,还是其他的加一方式。
这个很重要。

使用特权

评论回复
地板
caigehao112|  楼主 | 2014-8-23 00:15 | 只看该作者
lnulibin 发表于 2014-8-22 22:49
主要是stat[0].bonoff这个变量,是如何随着按键按下和抬起而变化的。
是按下按键一直加,还是抬起按键才加 ...

触摸按键来的,不存在消抖问题,按一次就加1,从图一的程序正常运行可以看出没问题的,关键是对2取余后判断就出错了....

使用特权

评论回复
5
caigehao112|  楼主 | 2014-8-23 00:19 | 只看该作者
NE5532 发表于 2014-8-22 22:31
这哪里需要对2取余数呢?直接XOR 0x01以后看是0是1不就OK了啊?至于第二个程序,当变量的值超过4以后,没有 ...

在C中怎么对一个变量异或运算?后面那个程序我是用来测试的,说明变量正常增加,程序正常运行,但是判断条件改成对2取余就出错了  我想知道原因...还有就是哪有什么方法实现按一次交替显示?

使用特权

评论回复
6
diweo| | 2014-8-23 10:09 | 只看该作者
caigehao112 发表于 2014-8-23 00:19
在C中怎么对一个变量异或运算?后面那个程序我是用来测试的,说明变量正常增加,程序正常运行,但是判断 ...

异或运算符^表示很受伤。。。。
其实也不用异或,直接&0x01判断最低位就可以了。

使用特权

评论回复
7
NWPU_CHEN| | 2014-8-23 15:51 | 只看该作者
如果你的按键不存在消抖和释放问题,那更简单了,每按一次改变状态即可,0和1之间改变就行,只需要判断状态即可,为什么要连续加?越做越麻烦,难道你的switch中要写几万中情况???楼上说的也可以,如果你执意用自加,取第一位判断状态也可以,至于异或也是可以的不过显得多此一举.

使用特权

评论回复
8
cjseng| | 2014-8-23 15:56 | 只看该作者
用一个位变量判断更简单。

使用特权

评论回复
9
创隆电子| | 2014-8-24 21:20 | 只看该作者
队!!用为变量更简单些

使用特权

评论回复
10
创隆电子| | 2014-8-24 21:22 | 只看该作者
简单就是标志位,用来判断是第几次按下,再到程序中判断按键与标志位,这样就行了,我就是这样用的

使用特权

评论回复
11
icecut| | 2014-8-25 09:22 | 只看该作者
你初始化了吗?状态默认值是多少?
程序结束加while(1)之类防止跑飞吗?

使用特权

评论回复
12
ayb_ice| | 2014-8-25 09:35 | 只看该作者
求余的算法是可以的,应该是变量增加不正常

可以测试每间隔一秒,变量自动加一,取代按键操作

使用特权

评论回复
13
caigehao112|  楼主 | 2014-8-25 15:35 | 只看该作者
diweo 发表于 2014-8-23 10:09
异或运算符^表示很受伤。。。。
其实也不用异或,直接&0x01判断最低位就可以了。 ...

懂了  谢谢!

使用特权

评论回复
14
caigehao112|  楼主 | 2014-8-25 15:36 | 只看该作者
NWPU_CHEN 发表于 2014-8-23 15:51
如果你的按键不存在消抖和释放问题,那更简单了,每按一次改变状态即可,0和1之间改变就行,只需要判断状态 ...

有道理!:handshake

使用特权

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

本版积分规则

14

主题

49

帖子

0

粉丝