权威人物 发表于 2020-10-13 14:38 ![]() |
tanghao8887 发表于 2018-10-20 18:05 反复按动K1,LED都能在亮与灭之间转换就说明此段代码正常,否则是消抖延时不恰当。 |
tanghao8887 发表于 2018-10-20 18:05 独立按键啊,按一下开,再按一下关。程序实现是没按下一次就标志位取反。至于那个while(!k1),是你在松开按键后,这个程序才能捕获你下一次按键动作。防止你一直按下不松手,如果没有这个的话,你一直按住按键,灯会闪,间隔是你的消抖时间。 |
楼主就是小白,建议你多多看书,这程序完全是为小白准备的,这都还有注释还不清楚。以你的程序说明吧!看懂就懂,不懂建议你重头学或者别学了 |
095629wqll5s5lizo5vgvj.png (58.88 KB, 下载次数: 139)
意思是当检测到K1高低电平时执行while()循环的指令 |
上面写了 判断按键是否按下? |
zailushang316 发表于 2018-10-20 11:18 等待结束是什么意思 |
k1看成一个变量就对了 |
K1应该是返回值,!K1是非K1,如果K1不为零,!K1为零,反之亦然 |
K1==0,!k==1,while(!k1)检测时候松手 |
这个k1的读取应该是用的中断,否则当k1按下,while(!k1)会一直执行,等待k1状态变化了才会释放。 |
“在独立按键里面表示一个什么意思啊,看不懂!”,这句话我也看不懂。![]() ![]() ![]() |
zailushang316 发表于 2018-10-20 11:18 那为什么我松开了按键,那个灯并没有熄灭,而我重新按下按键灯才熄灭啊! |
while(!k1); 就是 while(k1==0); 在这儿的作用就是只要 k1为零(按键未松开),就反复执行这一条语句直到 k1为1(按键松开) |
意思是:非1(为0)的时候,无限循环;为1的时候执行下一条。 |
按下K1==0,!k==1,while(!k1)检测时候松手 |
while(!k1);就是等待按键松开,while()是循环,括号内非0就满足条件,按键是按下0,松开1,松开后这个循环条件就不满足了,等待结束。 |