msp430f5529按键问题

2019-07-15 15:52发布

while(1)
          {
              if(!(P1IN&0x02)){//判断P1.1是否按下
                  Delay10ms(1);//消除抖动
                  if(!(P1IN&0x02)){//再次检测按键是否按下
                         if(i<9){
                         P1OUT^=BIT0;
                         i++;
                        }
              }
              }

按键按下放开一次 i 值应该加1,但是却加的不是1,而是大于1的随机数,请各位大神解答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
人中狼
1楼-- · 2019-07-15 20:10
没有做按键释放判断
章鱼小姐
2楼-- · 2019-07-15 22:33
人中狼 发表于 2017-5-13 12:42
没有做按键释放判断

while(1)
          {
              if(!(P1IN&0x02)){//判断P1.1是否按下
                  Delay10ms(1);//消除抖动
                  if(!(P1IN&0x02)){//再次检测按键是否按下
                         if(i<9){
                         P1OUT^=BIT0;
                         i++;
                        }
                         int j=0;
                         while(j<50&&P1IN&0x02){
                             Delay10ms(1);
                             j++;
                         }
              }
              }
加了之后问题依然一样
人中狼
3楼-- · 2019-07-16 02:53
判断按键释放是指判断按键是否断开,你这里在j>50后就退出了按键判断,并不确定按键是否断开,所以你这个判断可以说只是一个纯粹的延时而已
章鱼小姐
4楼-- · 2019-07-16 08:44
人中狼 发表于 2017-5-13 13:06
判断按键释放是指判断按键是否断开,你这里在j>50后就退出了按键判断,并不确定按键是否断开,所以你这个判断可以说只是一个纯粹的延时而已

那应该怎么写呢
人中狼
5楼-- · 2019-07-16 09:20
没用过这个芯片,如果if(!(P1IN&0x02))是判断按下的话,那应该把!去掉就可以了,如果按键按下是判断引脚是否等于0的话,那释放就是判断引脚是否等于1了
章鱼小姐
6楼-- · 2019-07-16 10:51
 精彩回答 2  元偷偷看……

一周热门 更多>