打印

写程序过程中有这么一个疑问,请大家帮忙

[复制链接]
1706|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
海川先生|  楼主 | 2013-10-30 09:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pic, pi, se, ST, tc
  •                 case 2:{
  •                         if(PORTC & 0b01111110 == 0b01111110){  //按键被释放状态改变
  •                                 key_state = 0;
  •                         }        
  •                         break;
  •                 }

                  case 2:{
                        key_tmp = PORTC & 0b01111110;
                        if(key_tmp == 0b01111110){       //按键被释放状态转移
                                key_state = 0;                       
                        }
                        break;
                 }

按键扫描的程序,这两个执行结果为什么不一样呢,不就是一个直接读端口就判断,另个一
是先读出来暂存一下再判断,怎么会有差别。用的是PIC16F690  PICC的编译器。
               



相关帖子

沙发
ayb_ice| | 2013-10-30 09:42 | 只看该作者
在不同的状态判断按键而已,然后转入新的状态而已

使用特权

评论回复
板凳
dirtwillfly| | 2013-10-30 09:43 | 只看该作者
要考虑按键的颤抖

使用特权

评论回复
地板
lirunze| | 2013-10-30 09:46 | 只看该作者
也可硬件防抖啊

使用特权

评论回复
5
香水城主| | 2013-10-30 10:13 | 只看该作者
加个括号:
if ((PORTC & 0b01111110) == 0b01111110){  //按键被释放状态改变

& 的优先级比 == 的优先级低,你的写法相当于:
if(PORTC & (0b01111110 == 0b01111110)){  //按键被释放状态改变

使用特权

评论回复
6
海川先生|  楼主 | 2013-10-30 10:50 | 只看该作者
香水城主 发表于 2013-10-30 10:13
加个括号:
if ((PORTC & 0b01111110) == 0b01111110){  //按键被释放状态改变

谢谢 你说的对。

使用特权

评论回复
7
黄小俊| | 2013-10-30 19:31 | 只看该作者
香水城主 发表于 2013-10-30 10:13
加个括号:
if ((PORTC & 0b01111110) == 0b01111110){  //按键被释放状态改变

不对吧。&是放在括号里的,括号的优先级可是最高的。

使用特权

评论回复
8
qqlvjh| | 2013-10-30 21:01 | 只看该作者
优先级呀

使用特权

评论回复
9
outstanding| | 2013-10-31 08:23 | 只看该作者
应该是一样的,难道你的PORTC 的值不一样?

使用特权

评论回复
10
yanyanyan168| | 2013-10-31 08:29 | 只看该作者
同意5#

使用特权

评论回复
11
peugeoter| | 2013-11-1 17:45 | 只看该作者
吃过优先级苦的飘过,现在桌面上就贴了张优先级表,哈哈。找这种BUG会搞死人的

使用特权

评论回复
12
海川先生|  楼主 | 2013-11-1 20:18 | 只看该作者
peugeoter 发表于 2013-11-1 17:45
吃过优先级苦的飘过,现在桌面上就贴了张优先级表,哈哈。找这种BUG会搞死人的 ...

同意

使用特权

评论回复
13
lhchen922| | 2013-11-1 20:31 | 只看该作者
同意5#

使用特权

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

本版积分规则

17

主题

200

帖子

1

粉丝