百度知道 - 信息提示
51单片机怎么用c语言写一个按钮控制一个led的闪烁,按一下开始闪烁,再按就灭掉
bit flash;//闪烁标志位
sbit led=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
void main()
{
P01=P02=0;
flash=0;
led=0;
while(1)
{
scankey();
ledflash();
}
}
void scankey()//键盘扫描
{
P01=1;//行线给1
if(P02)//如果P02也是1则说明接通
{
delay(10);//去抖动10MS
if(P02)//再次确定按键按下
{
while(P02){flash=flash}//按住按键的动作
flash=~flash;//按键按下后执行动作
}
}
}
void ledflash()
{
if(flash)
{
led=1;//点亮
delay(100);//延时100MS
led=0;//熄灭
}
else led=0;
}
void delay(unsigned int i)
{自己根据单片机频率写个1MS带形参的演示程序}
这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)
麻烦高手指点一二,单片机(C语言)当一开关按下并持续10秒后,LED亮并保持亮,开关松开后,LED即灭。
这个很简单啊~~ 写一个嵌套判断~
if(key==0)
{
delay(100); //假设这是1s的延时,嵌套10个就是10秒的~~
if(key==0)
{
delay(100);
if(key==0)
{
flag=1; //标志位改变
}
}
}
if(flag==1)
{
led=1; //灯点亮
}
if(key==1)
{
flag=0; //标志位还原
}
if(flag==0)
{
led=0; //灯熄灭
}