你没有松手监测呀!就是在按键处理程序后要加一个while(k1!=0);就是只有你松开按键后才认为本次按键执行完毕,不然就会一直重复执行按键按下的程序,那么你的d1一直就会执行亮灭操作!
你没要延迟去抖动
void delay(uint z)
{ int x,y;
for(x=z;x>0,x--)
for(y=110;y>0;y--)
}
delay(20) 在你的按键那个地方延迟20就好了
if(s1==0)
delay(20)
if(s1==0)
d1=!d1
while(!k1);//等待放开才继续.
#include
sbit P32=P3^2;
main ()
{int x,i;
while(1)
{ if (P32==0)
{for (i=0;i<=30000;i++);
if(P32==0)
{x++;
x=x%2;
}
}
if(x==1)
P0=0x00;
else
P0=0xff;
}
}
自己的号……