1. 程式人生 > >微控制器三種按鍵模式 單擊 雙擊 長按

微控制器三種按鍵模式 單擊 雙擊 長按

最近在做平衡車 ,關於平衡車的內容還未整理好,先來個不錯的小技術貼!

認為好的可以關注我哦      知識在於交流

/************************************************************************** 函式功能:按鍵掃描 入口引數:雙擊等待時間 返回 值:按鍵狀態 0:無動作 1:單擊 2:雙擊 key=0是按下的意思 **************************************************************************/ u8 click_N_Double (u8 time) { static u8 flag_key,count_key,double_key; static u16 count_single,Forever_count; if(KEY2==0) Forever_count++; //長按標誌位未置1 else Forever_count=0; if(0==KEY2&&0==flag_key) flag_key=1; if(0==count_key) { if(flag_key==1)//單擊一次進去一次
{ double_key++; count_key=1; } if(double_key==2)//判斷雙擊 { double_key=0; count_single=0; return 2;//雙擊執行的指令 } } if(1==KEY2) flag_key=0,count_key=0; if(1==double_key) { count_single++; if(count_single>time&&Forever_count<time) { //中間間隔時間太長 判斷為的單擊 double_key=0; count_single=0; return 1;//單擊執行的指令 } if(Forever_count>time) { //長按不放
double_key=0; count_single=0; } } return 0; } /************************************************************************** 函式功能:按鍵掃描(這裡的操作主要是為了單擊) 入口引數:無 返回 值:按鍵狀態 0:無動作 1:單擊 **************************************************************************/ u8 click(void) { static u8 flag_key=1;//按鍵按鬆開標誌 if(flag_key&&KEY==0) { flag_key=0; return 1; // 按鍵按下 } else if(1==KEY) flag_key=1; return 0;//無按鍵按下 } /**************************************************************************
函式功能:長按檢測 入口引數:無 返回 值:按鍵狀態 0:無動作 1:長按2s **************************************************************************/ u8 Long_Press(void) { static u16 Long_Press_count,Long_Press; if(Long_Press==0&&KEY==0) Long_Press_count++; //長按標誌位未置1 else Long_Press_count=0; if(Long_Press_count>200) { Long_Press=1; //這裡是為了控制長按時間 Long_Press_count=0; return 1; } if(Long_Press==1) //長按標誌位置1 { Long_Press=0; } return 0; }

相關推薦

微控制器按鍵模式

最近在做平衡車 ,關於平衡車的內容還未整理好,先來個不錯的小技術貼! 認為好的可以關注我哦      知識在於交流 /**************************************************************************

avr微控制器時鐘模式

AVR微控制器時鐘有三種模式: 1、內部時鐘源,可分為內部晶振和外部晶振,用的是微控制器內部的振盪電路。內部晶振可以設定1M、2M、4M、8MHz晶振頻率,外部可支援到16MHz(MEGA16或者MEGA16A)MEGA16L可支援最高8MHz的外部晶振(通過熔絲設定)。

計算機網路的通訊模式播,廣播,組播)小結

1.單播(Unicast) 單播在傳送者和每一接收者之間實現點對點網路連線。 如果一臺傳送者同時給多個的接收者傳輸相同 的資料,也必須相應的複製多份的相同資料包。如果有大量主機希望獲得資料包的同一份拷貝時, 將 導致傳送者負擔沉重、延遲長、網路擁塞;為保證一定

js繫結事件

$("#text").bind("click",function(){ alert("我的id為text,你點選時觸發"); }); $("#text1").on("click",function(){ alert("hellworl"); }); $("#text2

計算機網路通訊模式播、廣播、組播)小結

1、單播定義:單播在傳送者和每一接收者之間實現點對點網路連線。如果一臺傳送者同時給多個接收者傳輸相同的資料,也必須相應的複製多份的相同資料包。如果有大量主機希望獲得資料包的同一份拷貝時,將導致傳送者負擔沉重、延遲長、網路擁塞,為保證一定的服務質量需增加硬體和頻寬。單播優點:1

簡單的模式小例子

第一種 public class SingtenDemo1 { private volatile static SingtenDemo1 singleton; private

通過fsharp 使用Enterprise Library Unity 3 - 攔截模式的探索

clean stc ane adding clas 是什麽 idc 內部函數 ash 這篇就三種攔截模式進行一下探索。 特性總結 類型 特點 其它 InterfaceInter

設計模式工廠模式(JAVA)

bsp ati int abs @override 手機 分配 ron size 一:簡單工廠: 有一個實際工廠,這個工廠只能造一類的產品,這一類產品就是一個產品接口,會有多個具體產品實現這個接口,例 如,一個手機廠,生產蘋果手機,三星手機;

Java的代理模式

value 增加方法 三種 原始的 攔截 tro asm 必須 額外 1.代理模式 代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操作,即擴展目標對象的功能.這裏使用到

apache的工作模式

httpdweb服務器Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模式)它們分別是prefork、worker和event,它們同時也代表這Apache的 演變和發展使用httpd -V命令查看Apache的工作模式,如我安裝的httpd-2.2版本[[e

EF3:Entity Framework開發模式實現數據訪問

支持 代碼 sql blog flow cli guid 自動完成 main 前言 Entity Framework支持Database First、Model First和Code Only三種開發模式,各模式的開發流程大相徑庭,開發體驗完全不一樣。三種開發模式各有優缺

原生js選項卡效果(點

eight void log utf 觸發 nts lin type position 第一種:選項卡單擊點擊切換 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /&g

雲計算的服務模式:IaaS,PaaS和SaaS

雲服務 互聯網 src 部分 stand googl 而且 vnc rackspace   雲服務”現在已經成了一個家喻戶曉的詞了。如果你不知道PaaS, IaaS 和SaaS的區別,那麽也沒啥,因為很多人確實不知道。  “雲”其實是互聯網的一個隱喻,“雲計算”其實就是使用

PHP常用的設計模式

寫代碼 comment 獲得 return interface 高級 對象 檢測 mys 本文為大家介紹常用的三種php設計模式:單例模式、工廠模式、觀察者模式,有需要的朋友可以參考下。 一、首先來看,單例模式 所謂單例模式,就是確保某個類只有一個實例,而且自行實例化並向整

Apache工作模式介紹與配置

Apache工作模式查看方法 查看Apache編譯安裝的參數 worker模式原理及配置方法 prefork模式原理及配置方法 event模式原理及配置方法 Apache三種工作模式介紹與配置一、Apache的三種工作模式介紹及相關查看方法1、Apache三種工作模式簡介Apache目前一

zookeeper的安裝模式

count 最好 profile quest 清單 XA cfg 可用 故障 zookeeper的安裝分為三種模式:單機模式、集群模式和偽集群模式。 1、單機模式 首先,從Apache官網下載一個Zookeeper穩定版本,本次教程采用的是zookeeper-3.4.9版本

CentOS6.5下搭建ftp服務器(認證模式:匿名用戶、本地用戶、虛擬用戶)

所有者 start 生效 用戶權限 密碼 新建 over 使用 則無 CentOS 6.5下搭建ftp服務器 vsftpd(very secure ftp daemon,非常安全的FTP守護進程)是一款運行在Linux操作系統上的FTP服務程序,不僅完全開源而且免費,此外,

Vsftpd文件傳輸服務(認證模式:匿名開放 、本地用戶、虛擬用戶)

mkdir 作用 HA 客戶端 .so ces cad art r文件 FTP是一種在互聯網中進行中文件傳輸的協議,基於客戶端/服務器端模式,默認使用20、21號端口,其中端口20(數據端口)用於進行數據傳輸,端口21(命令端口)用於接受客戶端發出的相關FTP命令與參數。

常用的設計模式 PHP代碼

static bsp urn php代碼 ati for val pri single    // 工廠模式 interface Iuser { public function getUserName(); } class UserFactory {

Apache工作模式

技術分享 允許 domain ges 當前 ipv 適用於 ESS device Apache的三種工作模式分別是:prefork、worker、event。 1. prefork模式(默認模式) profork模式實現了一種非線程、預派生的Web服務器,用的是進程去處理