关于按键去抖动的问题

2019-07-15 18:52发布

200989103913905561.jpg
哪位大神帮忙解答一下,我这个程序运行的时候,按键按下去,灯亮一次,再按多少次灯都不变化,但是改成                        #define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一个52 标准内核的头文件
sbit P10 = P1^0; //头文件中没有定义的IO 就要自己来定义了
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit K1= P3^2;
bit ldelay=0; //长定时溢出标记,预置是0
uchar speed=10; //设置一个变量保存默认的跑马灯的移动速度
uchar speedlever=0; //保存当前的速度档次

//用外中断方式读按键K1,点亮一个LED
   void delay(void)
           { uint i;
         for (i=3000;i>0;i--);
          }
void main(void) // 主程序
{
IT0=1; //外中断跳变产生中断
EX0=1;
EA=1; //打开总中断
  while(1)
{if (!K1)
{

delay();
           ldelay=~ldelay;

        while(!K1)
delay()  ;

        P10=ldelay;
}


}
}
这个程序后就正常了,为什么呢?急急急急
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。