久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機狀態機方式按鍵處理程序,可實現長按,無法實現短按
[打印本頁]
作者:
Tobby
時間:
2022-7-12 17:07
標題:
單片機狀態機方式按鍵處理程序,可實現長按,無法實現短按
/******************************************************************************************/
//函數:Key_add
//功能:狀態機方式
//輸出參數:
//輸入參數:
/****************************************************************************************/
u16 key_AddCnt;
u8 Key_add(void)
{
static u8 key_state=0;
u8 key_return=0;
switch(key_state)
{
case Key_state_0:
{
if(KEY_UP==0)
{
key_state=Key_state_1;
}
key_AddCnt=0;
}break;
case Key_state_1:
{
if(KEY_UP==0)
{
key_state=Key_state_2;
}
else
{
key_state=Key_state_0;
}
}break;
case Key_state_2:
{
key_AddCnt++;
if(KEY_UP)//按鍵松開
{
key_state=Key_state_0;
if(key_AddCnt<=key_short_time)//按鍵時間小于短按時間30ms
{
// key_AddCnt=0;
key_return=Key_upPress;
}
}
else
{
if(key_AddCnt>=key_long_time)
{
key_AddCnt=0;
key_return=Key_uplongprss;
key_state=Key_state_3;
}
}
}break;
case Key_state_3:
{
if(KEY_UP)//按鍵松開
{
key_state=Key_state_0;
}
}
}
return key_return;
}
作者:
lkc8210
時間:
2022-7-12 22:05
Key_add()在哪里運行?
key_short_time的值是多少?
key_long_time的值是多少?
作者:
Tobby
時間:
2022-7-26 09:43
lkc8210 發表于 2022-7-12 22:05
Key_add()在哪里運行?
key_short_time的值是多少?
key_long_time的值是多少?
放在定時器中運行,10ms運行一次,問題已解決,是key_short_time設置時間過短,設置是3,也就是30ms短按時間,數值改為20,也是就200ms,問題解決,感謝
作者:
bbxyliyang
時間:
2022-7-26 22:37
// 按鍵
#define key_state_0 0
#define key_state_1 1
#define key_state_2 2
#define key_state_3 3
#define key_no 0
#define key_click 1
#define key_double 2
#define key_long 3
sbit KEY = P0^4;
sbit key1=P5^0;// 紅光
sbit key2=P3^0;//綠光開關
sbit key3=P0^2; //藍
sbit key4=P4^0; //白
sbit key5=P0^3; //加濕度
sbit key6=P5^2;//自動
static unsigned char key_read(void)
{
static unsigned char key_state_buffer1 = key_state_0;
static unsigned char key_timer_cnt1 = 0;
static unsigned char temp=0;
unsigned char key_return = key_no;
// unsigned char key;
//key = KEY; //read the I/O states
switch(key_state_buffer1)
{
case key_state_0:
if((KEY == 0)||(key1 == 0)||(key2==0)||(key3==0)||(key4==0)||(key5==0)||(key6==0))
{ key_state_buffer1 = key_state_1; temp=0;
return 0;
}
//按鍵被按下,狀態轉換到按鍵消抖和確認狀態//
break;
case key_state_1:
if(KEY== 0)
{
temp=1;
key_timer_cnt1 = 0;
key_state_buffer1 = key_state_2;
//按鍵仍然處于按下狀態
//消抖完成,key_timer開始準備計時
//狀態切換到按下時間計時狀態
}
else if(key1==0)
{
temp=2;
// key_timer_cnt1 = 0;
key_state_buffer1 = key_state_2;
}
else if(key2==0)
{
temp=4;
// key_timer_cnt1 = 0;
key_state_buffer1 = key_state_2;
}
else if(key3==0)
{
temp=5;
// key_timer_cnt1 = 0;
key_state_buffer1 = key_state_2;
}
else if(key4==0)
{
temp=6;
// key_timer_cnt1 = 0;
key_state_buffer1 = key_state_2;
}
else if(key5==0)
{
temp=7;
// key_timer_cnt1 = 0;
key_state_buffer1 = key_state_2;
}
else if(key6==0)
{
temp=8;
// key_timer_cnt1 = 0;
key_state_buffer1 = key_state_2;
}
else
{
key_state_buffer1 = key_state_0; temp=0;
}
//按鍵已經抬起,回到按鍵初始狀態
break; //完成軟件消抖
case key_state_2:
if((KEY == 0)||(key1 == 0)||(key2==0)||(key3==0)||(key4==0)||(key5==0)||(key6==0))
{
key_state_buffer1 = key_state_2;
if(temp==1)
{
if(++key_timer_cnt1 >= 100) //按鍵繼續按下,計時超過1000ms
{
key_return = key_long; //送回長按事件
key_state_buffer1 = key_state_3; //轉換到等待按鍵釋放狀態
}
}
}
else
{
key_return = temp; //按鍵抬起,產生一次click操作
key_state_buffer1 = key_state_0; //轉換到按鍵初始狀態
}
/* if(KEY == 1)
{
key_return = key_click; //按鍵抬起,產生一次click操作
key_state_buffer1 = key_state_0; //轉換到按鍵初始狀態
}
else if(++key_timer_cnt1 >= 100) //按鍵繼續按下,計時超過1000ms
{
key_return = key_long; //送回長按事件
key_state_buffer1 = key_state_3; //轉換到等待按鍵釋放狀態
} */
break;
case key_state_3: //等待按鍵釋放
if((KEY == 0)||(key1 == 0)||(key2==0)||(key3==0)||(key4==0)||(key5==0)||(key6==0)) //按鍵釋放
key_state_buffer1 = key_state_3; //切回按鍵初始狀態
else //按鍵釋放
key_state_buffer1 = key_state_0; //切回按鍵初始狀態
break;
}
return key_return;
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
在线观看中文字幕视频
|
高清黄色
|
亚洲丝袜天堂
|
国产精品久久国产愉拍
|
在线免费观看成年人视频
|
高清视频一区二区三区
|
日本一区二区三区免费观看
|
激情五月婷婷综合
|
欧美日韩成人在线
|
亚洲精品乱码久久久久久蜜桃
|
久久国产一区二区
|
亚洲狠狠
|
日韩精品视频在线
|
国产精品久久久久婷婷二区次
|
国产精品久久久久久久久久妞妞
|
久草视频在线播放
|
国产视频精品在线
|
成人亚洲综合
|
欧美日韩一区二区三区四区
|
国产高清在线观看
|
日韩综合在线
|
韩国av一区二区
|
国内精品免费久久久久软件老师
|
99re视频这里只有精品
|
91久久精品国产
|
一级黄片一级毛片
|
黄色一级免费观看
|
国产成人99久久亚洲综合精品
|
久久午夜剧场
|
久久久福利
|
欧美亚洲国产成人
|
人人鲁人人莫人人爱精品
|
日韩欧美第一页
|
欧美精品在线一区
|
中文字幕一区二区三区四区
|
爱爱爱av
|
精品欧美一区二区精品久久久
|
日韩三级在线
|
真人一级毛片
|
日本久久www成人免 成人久久久久
|
妖精视频一区二区三区
|