//按下LED闪动,再按下灭;
#include
sbit S1=P3^2 ;
sbit LED=P0^0;
unsigned int XD1;
bit M0;
bit M1;
bit X1;
void Delay_Task(unsigned int d)
{
unsigned int i,j;
for(i=0;i
for(j=0;j<1500;j++);
}
/*******主程序**************************/
void main(void)
{
S1=1; //按键复位
LED=1; //LED复位
XD1=0; //消抖值复位
X1=1; //软按键复位
M1=1; //辅助标志复位
while(1)
{
//按键按下开始消抖
if(S1==0)
{
if(XD1>=100)X1=0; //消抖后开始确定按键按下
else XD1++; //消抖开始开始
}
else {XD1=0;X1=1;} //按键松开复位
//按键按下标志位取反
if(X1==0 && M1==1){M0=~M0;M1=0;}//加M1是防止重复输出
if(X1==1 && M1==0)M1=1;
//闪动程序
if(M0==0)
{
LED=~LED;
Delay_Task(10); //修改括号值可以改变闪动频率
}else LED=1;
}
}
11-02-16 12:43