OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2765|回复: 2

请教 怎么让if语句只执行一次

[复制链接]

3

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2019-7-21
在线时间
61 小时
发表于 2020-1-7 11:33:05 | 显示全部楼层 |阅读模式
在循环体中,if满足条件后,如果按住按键不放,i循坏一次会加一次,或者不按按键,会一直减下去,怎么样只执行一次,标志位能够实现,有啥更好的办法,请教各位大佬,感谢

int main(void)
{
     vu8 key=0;   
    u8 i=0;
    u8 j=0;            
    delay_init();            

    KEY_Init();         

    while(1)
    {
         key=KEY_Scan(1);   
           if((key==WKUP_PRES)&&(j==0))
        {                           
        
                    LED0=!LED0;   
          i++    ;        
                  j=1;
            }
        
            if((key!=WKUP_PRES)&&(j==1))
        {                           
        
                    LED1=!LED1;               
                  j=0;
                i--;
            }

        delay_ms(10);
    }     
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

211

帖子

0

精华

高级会员

Rank: 4

积分
833
金钱
833
注册时间
2019-12-17
在线时间
157 小时
发表于 2020-1-7 15:54:31 | 显示全部楼层
先判断上一次按键状态,如果上一次是按下则判断是否弹起,如果上一次已经弹起则判断是否按下,本质上也是用的标志位,省掉一个标志变量。
回复 支持 反对

使用道具 举报

3

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2019-7-21
在线时间
61 小时
 楼主| 发表于 2020-1-15 11:45:11 | 显示全部楼层
感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 16:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表