欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
請問單片機怎么用延時做按鍵長按延時?
[打印本頁]
作者:
新手青島小胡
時間:
2019-11-21 22:35
標題:
請問單片機怎么用延時做按鍵長按延時?
大神們你們好,本人單片機新手,在做萬年歷的時候為了節省一個按鍵,想把加的那個按鍵,做成功能是:單次按下只加一次,長按開始快速遞增,但是只能做出來前半部分功能,關于這個功能的代碼如下:
if(i==333)
{ if(KEY2==1)
{
i=0;
}
goto j;
}
else
{
while(!KEY2)
{
delay(5);
i++; }
}
j :{;}
求解答,問題比較白癡,希望不要笑話哈哈,感謝大家
作者:
pcbboy
時間:
2019-11-22 08:06
檢測時給個時間比如超過300mS算長按,小于300算短按。操作時再調整.
作者:
笨笨兔
時間:
2019-11-22 08:33
按鍵是怎么掃描,怎么消小抖的呢?
如果是用定時器方式,很好辦的;確認按鍵位置后,時間長短根據進中斷次數即可區分長按鍵和短按鍵。
作者:
zhy111
時間:
2019-11-22 09:05
用狀態機進行掃描
作者:
moluxiyan
時間:
2019-11-22 09:11
你這按鍵問題比較大呀
作者:
黃youhui
時間:
2019-11-22 09:12
if(i== 300)然 厚if(KEY2 ==1)i=0
else whlle(!KEY2){ i++}
你的定義的變量 i 是什么?是按鍵時間還是計數器
作者:
wulin
時間:
2019-11-22 10:31
給你一個長、短按鍵示例參考。
#include <REG51.H>
#define uint unsigned int //宏定義數據類型uint
#define uchar unsigned char //宏定義數據類型uchar
#define key_S 500 //宏定義短按(約20ms)
#define key_L 16000 //宏定義長按(約2/3s)
#define key_M 11000 //宏定義長按間隔(約1/3s)
sbit key1=P3^6; //加鍵
sbit key2=P3^7; //減鍵
uchar num=1;
void keyscan() //按鍵掃描
{
static uint count1=0,count2=0; //計數變量
if(!key1)
{
count1++;
if(count1>=key_L) //長按
{
if(num<255)
num++;
count1=key_M;
}
}
else //按鍵抬起
{
if(count1>key_S && count1<key_L)//短按
{
if(num<255)
num++;
}
count1=0; //count清0
}
if(!key2)
{
count2++;
if(count2>=key_L) //長按
{
if(num>0)
num--;
count2=key_M;
}
}
else //按鍵抬起
{
if(count2>key_S && count2<key_L)//短按
{
if(num>0)
num--;
}
count2=0; //count清0
}
}
void main()
{
while(1) //12MHz晶振主循環周期33~41us
{
keyscan(); //按鍵掃描
P1=~num; //LED低電平顯示
}
}
復制代碼
作者:
yzwzfyz
時間:
2019-11-23 10:59
1、別人的按鍵動作,你是無法延時的,因為你不能控制別人的手。
2、按鍵后是否響應卻是你可以控制的。
3、檢測到按鍵后,你就起動一個定時器,定時器動作后,你再響應按鍵的“動作需求”,這就OK了。當然你還要考慮中途取消等等問題,這是你需要做的。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1