久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標題:從單片機初學者邁向單片機工程師,之KEY主題討論第二章,基于狀

1樓
wangxinxin 發表于:2010-12-8 10:47:17
關于這部分的按鍵處理,我基本上是沒有按照原作者的思路了。因為前幾章節作者都是把所有的代碼都放出來,我只要稍作修改就能在自己的板子上看到結果,這一章節原作者僅僅貼出部分代碼。而且原作者一次性把多個按鍵,單擊,連發都一次性解決了,對于我這種菜鳥來說,一時還真反應不過來。于是自己重新查找了些資料,個人感覺還是能把這部分弄懂了。要看原作者的文章請進入:http://www.eehome.cn/read-htm-tid-30530.html。我這里主要是通過馬潮的《基于AVR的單片嵌入式系統原理與實踐應用》來講解的。http://wenku.baidu.com/view/c98cc97931b765ce050814 98.html

  好了,言歸正傳。上一節我們已經講到按鍵的一些基本情況。這章節我主要講講怎么用狀態機的方式來處理按鍵。我們把單個按鍵作為一個簡單的系統,根據狀態機的原理對其動作和確認的過程進行分析,并用狀態圖表示出來,然后根據狀態圖編寫出按鍵接口程序。把單個按鍵看成是一個狀態機話,首先需要對一次按鍵操作和確認的實際過程進行分析,根據實際的情況和系統的需要確定按鍵在整個過程的狀態,每個狀態的輸入信號和輸出信號,以及狀態之間的轉換關系。最后還要考慮時間序列的間隔。采用狀態機對一個系統進行分析是一項非常細致的工作,它實際上是建立在對真實系統有了全面深入的了解和認識的基礎之上,進行綜合和抽象化的模型建立的過程。這個模型必須與真實的系統相吻合,既能正確和全面的對系統進行描述,也能夠適合使用軟件或硬件方式來實現。在一個嵌入式系統中,按鍵的操作是隨機的,因此系統軟件對按鍵需要一直循環查詢。由于按鍵的檢測過程需要進行消抖處理,因此取狀態機的時間序列的周期為10ms左右,這樣不僅可以跳過按鍵抖動的影響,同時也遠小于按鍵0.3-0.5秒的穩定閉合期,不會將按鍵操作過程丟失。很明顯,系統的輸入信號是與按鍵連接的I/O口電平,"1"表示按鍵處于開放狀態,"0"表示按鍵處于閉合狀態。而系統的輸出信號則表示檢測和確認到一次按鍵的閉合操作,用"1"表示。

  上圖給出了一個簡單按鍵狀態機的狀態轉換圖。在圖中,將一次按鍵完整的操作過程分解為3個狀態,采用時間序列周期為10ms。下面對該圖做進一步的分析和說明,并根據狀態圖給出軟件的實現方法。首先,讀者要充分體會時間序列的作用。在這個系統中,采用的時間序列周期為10ms,它意味著,每隔10ms檢測一次按鍵的輸入信號,并輸出一次按鍵的確認信號,同時按鍵的狀態也發生一次轉換。圖中"狀態0"為按鍵的初始狀態,當按鍵輸入為"1"時,表示按鍵處于開放,輸出"0"(1/0),下一狀態仍舊為"狀態0"。當按鍵輸入為"0",表示按鍵閉合,但輸出還是"0"(0/0)(沒有經過消抖,不能確認按鍵真正按下),下一狀態進入"狀態1"。"狀態1"為按鍵閉合確認狀態,它表示了在10ms前按鍵為閉合的,因此當再次檢測到按鍵輸入為"0"時,可以確認按鍵被按下了(經過10ms的消抖),輸出"1"表示確認按鍵閉合(0/1),下一狀態進入"狀態2"。而當再次檢測到按鍵的輸入為"1"時,表示按鍵可能處在抖動干擾,輸出為"0"(1/0),下一狀態返回到"狀態0"。這樣,利用狀態1,實現了按鍵的消抖處理。"狀態2"為等待按鍵釋放狀態,因為只有等按鍵釋放后,一次完整的按鍵操作過程才算完成。從對上圖的分析中可以知道,在一次按鍵操作的整個過程,按鍵的狀態是從"狀態0"->"狀態1"->"狀態2",最后返回到"狀態0"的。并且在整個過程中,按鍵的輸出信號僅在"狀態1"時給出了唯一的一次確認按鍵閉合的信號"1"(其它狀態均輸出"0")。所以上面狀態機所表示的按鍵系統,不僅克服了按鍵抖動的問題,同時也確保在一次按鍵整個的過程中,系統只輸出一次按鍵閉合信號("1")。換句話講,不管按鍵被按下的時間保持多長,在這個按鍵的整個過程中都只給出了一次確認的輸出,因此在這個設計中,按鍵沒有"連發"功能,它是一個最簡單和基本的按鍵。一旦有了正確的狀態轉換圖,就可以根據狀態轉換圖編寫軟件了。在軟件中實現狀態機的方法和程序結構通常使用多分支結構(IF-ELSEIF-ELSE、CASE等)實現。下面是根據上圖、基于狀態機方式編寫的簡單按鍵接口函數GetKey()。

  uchar GetKey()

  {

  uchar keyRetu=0; //返回的按鍵值

  static uchar s_keyState=0; //按鍵狀態

  switch (s_keyState)

  {

  case 0:

  if(key1==0) //檢測到有按鍵,轉到狀態1,相當于是消抖過程

  {

  s_keyState=1;

  }

  break;

  case 1:

  if(key1==0) //再次檢測到有按鍵,確認按鍵按下,返回一個值,并轉到狀態2

  {

  keyRetu=1;

  s_keyState=2;

  }

  else

  {

  s_keyState=0; //沒有檢測到按鍵,說明狀態0檢測到是一個抖動,重新轉到狀態0

  }

  break;

  case 2:

  if(key1==1) //檢測到按鍵松開,狀態轉到狀態0,一次完整的按鍵過程結束

  {

  s_keyState=0;

  }

  break;

  }

  return keyRetu;

  }

  該簡單按鍵接口函數GetKey()在整個系統程序中應每隔10ms調用執行一次,每次執行時進入用switch結構構成的狀態機。switch結構中的case語句分別實現了3個不同狀態的處理判別過程,在每個狀態中將根據狀態的不同,以及key1的值(狀態機的輸入)確定輸出值(keyRetu),和確定下一次按鍵的狀態值(s_keyState)。函數GetKey()的返回參數提供上層程序使用。返回值為0時,表示按鍵無動作;而返回1表示有一次按鍵閉合動作,需要進入按鍵處理程序做相應的鍵處理。在函數GetKey()中定義了2個局部變量,其中keyRetu為一般普通的局部變量,每次函數執行時,key_return為函數的返回值,總是先初始化為0,只有在狀態1中重新置1,作為表示按鍵確認的標志返回。變量s_keyState非常重要,它保存著按鍵的狀態值,該變量的值在函數調用結束后不能消失,必須保留原值,因此在程序中定義為"局部靜態變量",用static聲明。如果使用的語言環境不支持static類型的局部變量,則應將s_keyState定義為全局變量(關于局部靜態變量的特點請參考我以前的文章:http://hi.baidu.com/dxstar/blog/item/90bdbe02d9e50 c8be950cdcd.html)。

  最后,我們來測試一下效果。這里要達到的效果就是:數碼管循環顯示00-99,每按一次鍵,數字加1。

  -----------------------const.h-------------------- -------

  #ifndef _CONST_H_

  #define _CONST_H_

  typedef unsigned char uchar;

  typedef unsigned int uint;

  #endif

  -----------------------main.c--------------------- --

  #include<reg52.h>

  #include"const.h"

  #include"Timer.h"

  #include"Display.h"

  #include"key.h"

  void main()

  {

  Timer0Init();

  EA=1;

  while(1)

  {

  if(g_systTime2Ms) //每2ms掃描顯示

  {

  g_systTime2Ms=0;

  DsipNum();

  }

  if(g_time10Ms) //每10ms掃描一次按鍵

  {

  g_time10Ms=0;

  if(GetKey()==1) //接收到的值是否為1,即是否按鍵按下

  {

  if(++g_num>=100)

  {

  g_num=0;
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .01563 s, 2 queries.
久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
欧美日韩国产区一| 国产精品全国免费观看高清 | 国产精品免费一区二区三区观看| 一区二区在线高清视频| 国产欧美日韩精品一区| 极品少妇xxxx精品少妇| 免费h精品视频在线播放| 精品第一国产综合精品aⅴ| 日本在线不卡视频| 日韩国产在线一区| 中文字幕在线视频一区| kk眼镜猥琐国模调教系列一区二区 | 成人黄色a**站在线观看| 亚洲成人蜜桃| 亚洲人亚洲人成电影网站色| 91在线小视频| 日韩一区二区电影| 久久91精品国产91久久小草| 日韩免费三级| 亚洲九九爱视频| 精品乱码一区二区三区| 国产亚洲视频系列| 99re8在线精品视频免费播放| 欧美疯狂性受xxxxx喷水图片| 日韩成人一区二区| 亚洲精品视频一区二区三区| 亚洲美女视频一区| 九九九九九精品| 中文一区在线播放| 91精品国产高清久久久久久91裸体 | 人人狠狠综合久久亚洲| 日韩一区不卡| 亚洲国产视频a| 亚洲欧美日韩国产成人综合一二三区| 亚洲欧美影音先锋| 九九九久久久| 亚洲久草在线视频| 欧美高清一区二区| 一区二区高清在线| 日韩欧美视频一区二区| 午夜影院在线观看欧美| 亚洲欧洲精品在线观看| 偷拍日韩校园综合在线| 一本大道久久a久久精二百| 三级在线观看一区二区| 日本久久一区二区| 激情欧美一区二区三区在线观看| 在线精品视频小说1| 狠狠色综合色综合网络| 3751色影院一区二区三区| 国产成人综合在线播放| 精品理论电影在线| 91国产丝袜在线放| 国产精品国产三级国产a| 久久久综合亚洲91久久98| 亚洲自拍偷拍图区| 在线观看福利一区| 国产乱对白刺激视频不卡| 精品美女被调教视频大全网站| 91精品国产高清久久久久久91裸体 | 欧美揉bbbbb揉bbbbb| 精东粉嫩av免费一区二区三区| 日韩一区二区精品葵司在线| 1区1区3区4区产品乱码芒果精品| 国产精品国产a| 亚洲二区自拍| 激情文学综合网| 久久一二三国产| 噜噜噜噜噜久久久久久91| 亚洲一二三专区| 欧美日韩精品一区二区三区四区| 成人精品免费看| 国产精品伦理在线| 中文字幕免费在线不卡| 国产成人在线观看| 中文字幕一区三区| 日本精品一区二区三区高清| 懂色av一区二区夜夜嗨| 中文字幕人成不卡一区| 色综合欧美在线视频区| www.亚洲色图.com| 国产精品进线69影院| 在线免费观看成人网| 成人短视频下载| 亚洲一线二线三线久久久| 7777精品伊人久久久大香线蕉的 | 色综合天天综合在线视频| 国产黄人亚洲片| 亚洲丝袜精品丝袜在线| 欧美日韩中文国产| 国产伦精品一区二区三区视频免费| 亚洲一级电影视频| 精品国产乱码久久久久久闺蜜| 人偷久久久久久久偷女厕| 国产一区二区调教| 亚洲女子a中天字幕| 在线播放91灌醉迷j高跟美女| 国产欧美综合精品一区二区| 免费欧美在线视频| 国产精品国产三级国产| 欧美视频在线一区| 精品蜜桃传媒| 国产精品白丝jk白祙喷水网站| 亚洲视频一区二区免费在线观看| 欧美高清一级片在线| 久久综合入口| www.亚洲在线| 蜜桃视频免费观看一区| 国产精品久久久久影院亚瑟| 欧美裸体一区二区三区| 任我爽在线视频精品一| 99麻豆久久久国产精品免费| 青青草精品视频| 亚洲色图第一区| 精品久久久久久久一区二区蜜臀| 在线视频不卡一区二区三区| 91九色极品视频| 国产中文一区二区三区| 亚洲精品亚洲人成人网| 精品久久久久香蕉网| 91国偷自产一区二区开放时间| 狠狠色综合网站久久久久久久| 国产成人免费视| 日韩av午夜在线观看| 国产精品成人午夜| 精品久久久影院| 欧美日韩久久一区| 一本色道久久综合亚洲精品婷婷| 国产精品v欧美精品v日韩精品| 国产精品一级在线| 日韩电影在线观看电影| 亚洲人123区| 久久久久国色av免费看影院| 欧美久久久久久久久中文字幕| 亚洲欧美日韩国产yyy| 久久久精品国产一区二区三区| 成人激情综合网站| 久久99久国产精品黄毛片色诱| 亚洲成人av一区| 亚洲欧美日韩国产综合| 久久久久九九视频| 欧美xxxxxxxxx| 91精品国产色综合久久ai换脸| 色88888久久久久久影院野外| 日本不卡一区二区三区视频| 国产一区二区三区四区五区在线 | 国产不卡在线播放| 看片的网站亚洲| 日韩va欧美va亚洲va久久| 一区二区三区四区中文字幕| 国产精品五月天| 中文字幕不卡一区| 国产欧美日韩在线看| 精品成人私密视频| 精品久久久久久无| 欧美www视频| 欧美成人艳星乳罩| 欧美tickling网站挠脚心| 日韩亚洲欧美成人一区| 欧美一区二区在线播放| 欧美一区二区三区在线观看| 7777精品久久久大香线蕉 | 洋洋成人永久网站入口| 亚洲精品乱码久久久久久黑人| 中文字幕一区二区三区在线观看 | 亚洲午夜av在线| 亚洲美女视频一区| 亚洲精品成人天堂一二三| 一区二区三区在线观看国产 | 久久久久网址| 蜜桃麻豆www久久国产精品| 欧美精品一区二区三区四区五区 | 亚洲激情自拍视频| 亚洲成a人在线观看| 视频在线观看一区| 精品一区二区综合| 国产a久久麻豆| 91网站视频在线观看| 国产欧美一区二区在线播放| 欧美日韩国产一二| 一本大道久久a久久精品综合| 欧美亚洲高清一区| 精品日韩在线观看| 国产免费成人在线视频| 一区二区三区久久久| 日本成人超碰在线观看| 国内精品国产成人| 波多野结衣中文字幕一区 | 日韩欧美亚洲另类制服综合在线| 欧美videos大乳护士334| 久久久激情视频| 亚洲欧美日韩国产另类专区 | 久久天天狠狠| 亚洲乱码国产乱码精品天美传媒| 欧美在线免费视屏| 欧美本精品男人aⅴ天堂| 国产精品久久网站| 视频一区视频二区在线观看| 激情五月婷婷综合网| 91丨九色丨黑人外教|