51 单片机独立键盘控制发光二极管和蜂鸣器问题
各位过往牛人,帮忙看一下一下程序,本人有一个疑问,为什么第二个if括号里的那个语句s2==?这个数字无论是几发光二级管都能得到预期效果,这是为什么呢?假如说程序被扫描到num++;这条语句时我突然把手松开,他就会接着往下扫描语句不做任何操作直到返回到最外层while语句,再进入循环后就永远检测不到按键被按下啊!但是为什么不管什么时候放开按键等能成功完成预期效果呢?请牛人指点!!万分感谢!!#include<reg52.h>
#define uchar unsigned char
uchar num;
sbit beep=P2^3;
sbit led=P1^0;
sbit s2=P3^4;
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
while(1)
{
if(s2==0)
{
delay(20); //消抖
if(s2==20)(这里的数字无论是多少都可以!????????)
{
while(!s2); //等待按键松开
num++;
}
switch(num)
{
case 1: led=0; beep=1; break;
case 2: beep=0; led=1; num=0; break;
}
}
}
}