注册 登录
编程论坛 单片机编程

51 单片机独立键盘控制发光二极管和蜂鸣器问题

小代帅帅 发布于 2014-10-27 20:36, 4777 次点击
各位过往牛人,帮忙看一下一下程序,本人有一个疑问,为什么第二个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;
   }
  }
}
}
2 回复
#2
雨中浊玉2014-10-28 15:45
第二个if语句会执行吗?
#3
wyw198808092014-10-30 14:19
额 看不太懂你的这个东西...s2是P3^4 只有两种状态0和1
1