char scan_k(char k)
{
int i=0;//定義壹個變量用來累計長按的時間
if((KEY1&&KEY2&&KEY3&&KEY4&&KEY5&&KEY6)==0)//如果有按鍵按下
{
while(!KEY1)//如果按鍵1按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=11;//按鍵1長按
}
else
{
k=1;//按鍵1短按
}
}
i=0;
while(!KEY2)//如果按鍵2按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=21;//按鍵2長按
}
else
{
k=2;//按鍵2短按
}
}
i=0;//在下壹個按鍵按下之前清空i的值
while(!KEY3)//如果按鍵3按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=31;//按鍵3長按
}
else
{
k=3;//按鍵3短按
}
}
i=0;
while(!KEY4)//如果按鍵4按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=41;//按鍵4長按
}
else
{
k=4;//按鍵4短按
}
}
i=0;
while(!KEY5)//如果按鍵5按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=51;//按鍵5長按
}
else
{
k=5;//按鍵5短按
}
}
i=0;
while(!KEY6)//如果按鍵6按下
{
xianshi(neirong);//執行顯示
delay_ms(1);//延時
i++;//每次i自加1
if(i>=1000)
{
k=61;//按鍵6長按
}
else
{
k=6;//按鍵6短按
}
}
i=0;
}
return k;//返回按鍵的值
}
以上代碼,不帶操作系統,不包含中斷,請根據實際情況調整妳想要的長按時間,按鍵按下的時候,如果妳的消抖時間太長,數碼管會有明顯的閃爍或者變暗,請根據自己的需求進行調整