普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 6112|回复: 1

[已解决] 独立按键处理函数中 while(!k1)问题

[复制链接]

2

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2021-1-16 17:29:53 | 显示全部楼层 |阅读模式
1金钱
单片机小白,刚学51,想问一下各位独立按键检测按键是否松开,我理解的是刚开始按下之后k1==0,如果松开就结束按键判断函数,即取反 while(k1==1);
但是普中程序给的是while(!k1);这两个不是等价的吗 ,为什么下载程序后while(k1==1);无论按键按几下都是亮的。而while(!k1)是对的?
以下是按键处理函数:
/* 函 数 名         : keypros
函数功能                   : 按键处理函数,判断按键K1是否按下*/

void keypros()
{
        if(k1==0)                  //检测按键K1是否按下
        {       
                delay(1000);   //消除抖动 一般大约10ms
                if(k1==0)         //再次判断按键是否按下
                {
                        led=~led;          //led状态取反
                }
                while(!k1);         //检测按键是否松开
        }               
}

多谢!!!

最佳答案

我也是刚学 我是这样理解的  K1=0  按键按下 !K1   就是 就是1  while (1) 就是真值 条件成立 WHILE 就会一直循环   按键松开 K=1 !K1  就是0 &n ...

回复

使用道具 举报

10

主题

44

帖子

278

积分

中级会员

Rank: 3Rank: 3

积分
278
发表于 2021-1-16 18:37:01 | 显示全部楼层
我也是刚学 我是这样理解的  K1=0  按键按下 !K1   就是 就是1  while (1) 就是真值 条件成立 WHILE 就会一直循环   按键松开 K=1 !K1  就是0  WHILE(0)条件不成立  就会退出 while 循环     你写的while(k1==1)  是给K1赋值 1  1就是真 我是这样理解的 不对的大佬们指正
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-25 01:34 , Processed in 0.085517 second(s), 31 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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