想用记录按键次数来实现,即偶数次为闪烁,奇数次为熄灭。请问下面的程序错在哪里?怎么就是不行? void main()
{ while(1)
{ if(k==0) //按键按下
{ delay1ms(20);//延时
if(k==0&&n%2==0) //确定按键按下并且n为偶数(定义初始n为偶数)
{ ledflash(); //灯闪烁
n=n++;//n加1 }
else {
P0=0xff; //否则灯灭,n加1
n=n++;} }
具体是怎么个不行法。
像你这种按键程序
因为单片机速度非常快,在你按一下按键时,单片机已经循环了很多次程序。
因此这样就会导致,当你按下时,其实k一直==0 一直在执行动作。
所以这种按键需要判断按键是第一次按下(由弹起状态下按下)。而不是一直按着导致的动作。
方法:建一个变量保存上一次按键的值
char LastKey;