设置定时器(建设100ms),在设嫌闭置一个变量x,(100ms自加1)
在主循环中判断按键是否按下,并判断x的值大小;
假设 x每隔100ms加1
y是按键状态(为1表示按孙核下,为0 表示未按)
z记录则者掘按键状态的(初始值0)
b 记录长安 a记录短按
eg:
if(!z)
{
if(y)
{
a=1;
z=1
}
}
else if(x>10)// 1s
{
b=1
}
if(key==1){
delay(10)//小延时防抖
if(key==1)
{
delay(200)//短长分界线
if(key==0)
led1=!led1//即如果短时间过后,按键松开,记为短按。取反led1
else//若短时橘握宽间内还按着
{
delays(2);//过2s再次检测
皮备if(key==1)//若此时key还为1,这说明为长按
{
led2=!led2//长按,取反led2
while(key)//检测完长按后,就用循环等待按键松开。
//这样你圆亮按键按多久,led2的状态都不会变
}
}
}
}
这里设置按键key,按下为=1,松开为=0。这需要你按此接电路。
你还需要一个延时很小的函数delay(),和延时一秒的延时函数delays()。
放定时器呗,将按钮闭合作为计时器的弯销悔输入条件,当你按按斗芹钮,计时器就开始计时,然后计时器的数值,可以拿出比较,判断时间长短。当然也可以放计数器,用定埋正时脉冲检测按钮,按钮闭合就计数,从而判断时间长短欢迎分享,转载请注明来源:内存溢出
评论列表(0条)