久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
單片機(jī)按鍵單擊雙擊長(zhǎng)按程序
[打印本頁(yè)]
作者:
李尋歡123
時(shí)間:
2022-12-20 12:36
標(biāo)題:
單片機(jī)按鍵單擊雙擊長(zhǎng)按程序
如何實(shí)現(xiàn)一個(gè)按鍵多種功能,這里介紹了按鍵單擊,雙擊,長(zhǎng)按,源代碼,親測(cè)有效,模塊獨(dú)立,包括.c和.h文件
my_key.c
/**
* @file my_key.c
* @author xxb
* @version V1.0
* @date 07/29/
* @brief This file provides all the KEY firmware functions.
*/
#define KEY_GLOBAL
#include "..\inc\my_key.h"
#include "..\inc\my_led.h"
/****************************************************************************
【功能說明】按鍵掃描程序
****************************************************************************/
U8 Key_Scan(void)
{
U8 key_val=NO_KEY;
//這里添加讀口線的代碼
// if(!_pa0)
// {
// key_val=MyKEY_NAME1;
// }
// else if(!_pa2)
// {
// key_val=MyKEY_NAME2;
// }
return (key_val);
}
/****************************************************************************
【功能說明】獲取鍵值
****************************************************************************/
U8 Get_KeyValue(void)
{
U8 new_val;
U8 ret=NO_KEY;
static U8 press_time=0;
new_val=Key_Scan(); //掃描按鍵
switch (key_state)
{
case 0:
if(new_val<NO_KEY) //如果有鍵按下,轉(zhuǎn)到狀態(tài)1。
{
old_val=new_val;
press_time=0;
key_state=1;
}
break;
case 1:
if (old_val==new_val) //確實(shí)有鍵按下(消抖)
{
key_state=2;
}
else key_state=0;
break;
case 2:
if (old_val==new_val) //繼續(xù)按著開始計(jì)時(shí)
{
if(++press_time>=100) //100x10=1000MS
{
ret=new_val+10; //在短按鍵值基礎(chǔ)上加10就是長(zhǎng)按
key_state=3;
}
}
else //松開了返回短按
{
ret=new_val; //返回短按
key_state=3;
}
break;
case 3:
if (new_val==NO_KEY) //如果松開鍵
{
key_state=4; //轉(zhuǎn)到狀態(tài)4 (消抖)
}
break;
case 4:
if (new_val==NO_KEY) //如果確實(shí)松開
{
key_state=0; //轉(zhuǎn)到狀態(tài)0
}
else key_state=3;
break;
}
return (ret);
}
/**
* @brief KEY Process program (10MS調(diào)一次,最短不能低于5MS,最長(zhǎng)不大于32MS)
* @param None
* @retval None
*/
void Key_Process(void)
{
U8 key_val=Get_KeyValue();
switch(key_val)
{
case MyKEY_NAME1:
//短按鍵1處理
break;
case MyKEY_NAME2:
//短按鍵2處理
break;
case MyKEY_NAME1_LONG:
//長(zhǎng)按鍵1處理
break;
}
}
復(fù)制代碼
my_key.h
/**
* @file my_key.h
* @author xxb
* @version V1.0
* @date 07/29/2017
* @brief This file contains all the functions prototypes for the KEY firmware
*/
#ifndef __MY_KEY_H__
#define __MY_KEY_H__
#include "..\inc\cpu.h"
#ifdef KEY_GLOBAL
#define KEY_EXT
#else
#define KEY_EXT extern
#endif
#define NO_KEY 0xFF
#define MyKEY_NAME1 1
#define MyKEY_NAME2 2
#define MyKEY_NAME1_LONG MyKEY_NAME1+10
KEY_EXT U8 key_state;
KEY_EXT U8 old_val;
void Key_Process(void);
#endif
復(fù)制代碼
作者:
joe069
時(shí)間:
2023-2-24 16:09
51有你更精彩,收藏了
作者:
jovew
時(shí)間:
2023-2-24 19:38
..\inc\my_led.h" 這個(gè)文件沒有,可以發(fā)一下嗎?
程序有錯(cuò)誤!
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品久久久久香蕉网
|
亚洲狠狠
|
久草免费福利
|
日本在线免费
|
久久极品
|
免费在线观看av网址
|
欧美日韩视频
|
亚洲国产精品成人综合久久久
|
午夜影晥
|
国产亚洲网站
|
在线不卡视频
|
精品国产aⅴ
|
日韩在线观看网站
|
av中文天堂
|
亚洲国产精品视频一区
|
精品丝袜在线
|
免费一级毛片
|
国产精品视频一区二区三区四区国
|
最近中文字幕在线视频1
|
日韩在线xx
|
国产精品乱码一二三区的特点
|
涩涩导航
|
999久久久久久久久 国产欧美在线观看
|
一区二区小视频
|
国产在线视频三区
|
成人毛片视频免费
|
男女啪啪高潮无遮挡免费动态
|
天天插天天狠天天透
|
国产在线视频一区二区
|
国产婷婷色一区二区三区
|
国产高清一区二区三区
|
羞羞的视频免费在线观看
|
一区二区视频在线观看
|
国产a区
|
亚洲 中文 欧美 日韩 在线观看
|
91精品国产日韩91久久久久久
|
色综合久
|
欧美成人a
|
国产做a爱片久久毛片
|
狠狠操av
|
成人免费视频网站在线观看
|