一種可靠的按鍵消抖方法

2022-09-11 07:45:10 字數 1131 閱讀 2775

按一定的間隔取樣,連續多次都處於按下狀態才判定為按下狀態,可以有效的減少誤操作。具體實現如下:

#ifndef	__key_h__

#define __key_h__

#include typedef struct key_t key_t;

#ifdef __cplusplus

extern "c"

//清除按鍵的按下事件標誌

static inline void key_clearpressevent(key_t* key)

//檢查按鍵是否存在鬆開事件

static inline uint8_t key_hasreleaseevent(key_t* key)

//清除按鍵鬆開事件標誌

static inline void key_clearreleaseevent(key_t* key)

#ifdef __cplusplus

}#endif

#endif //__key_h__

#include "key.h"

#include uint8_t key_getpinstate(key_t* key)

else

}//計算乙個數字裡面為1的位的個數

static inline uint8_t countone(uint8_t num)

; return table[high] + table[low];

}void key_init(key_t* key, uint8_t pin)

uint8_t key_scan(key_t* key)

else }}

return press;

}

#include #include "key.h"

#define led1 p1_0 //定義led1所在引腳

#define key1 p0_1 //定義btn1所在引腳

void delayms(int ms)

}void main(void)

}}

如果要採用這個方法,請仔細測試。

一種序列幀在rem布局下的消抖方法

最近在專案中遇到了個問題,由於要在移動端使用乙個等待的動畫,但是我本人是菜鳥,canvas不是很懂,所以只能讓ui做了個序列幀動畫來替換。我頁面是使用rem布局的,所以在使用序列幀中,出現了序列幀動畫抖動的問題,可檢視如圖 可從圖中明顯看到,此動畫會有明顯的左右抖動問題。當前的的css如下圖 htm...

udp可靠傳輸的一種

udp廣播示例 unix套接字可靠傳輸 只能客戶端到服務端,服務端無法sendto 接收端recvfrom介紹 本地程序間通訊方式的一種,unix可靠傳輸 接收端rec.c include include see notes include include include include inclu...

關於按鍵消抖以及LED燈控制的乙個例項

要求 1.未按建則所有led全黑 2.按k1按鈕,則用前8個led燈二進位制顯示25 3.按k2按鈕,則12只led合併顯示流水燈效果,3個led點亮並向右流水。注 是hr 240b fpga 創新實驗系統,其核心板的核心晶元為 epm240t100c5n 分析 led是共陰極,所以點亮led需要高...