文档库 最新最全的文档下载
当前位置:文档库 › 51单片机单按键长短处理

51单片机单按键长短处理


本帖最后由 zico1998 于 2009-9-2 08:34 编辑


遇到的问题,始终只显示长按,不知为何

//均为全局变量,其他程序里定时KeyT每10ms扫描一次P06口的T按键,k_temp送数码管显示,长按2秒显示2,短按显示1
// bit KeyT;

uchar KeyT_Scan()
{

if(!KeyT) //T按键按下
{
if(fsong==0) //松开标志,表示之前送开过
{
k_cnt++; //按下后计数
K_cnt_l=0;
if(k_cnt>=200) //2S到?
{
k_cnt=0;
fsong=1;
fchang=1; //2S到则置长按标志
}
}
}

else //松开
{
k_cnt_l++; //松开后计数
if(k_cnt_l>=50)
{
k_cnt_l=0;
fsong=0;
k_cnt=0;
}
}
if(fsong)k_temp=2; //长按显示2
if(k_cnt) k_temp=1; //短按显示1
return k_temp;
}

相关文档
相关文档 最新文档