久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4394|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機狀態(tài)機的學(xué)習(xí)與分享

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:190577 發(fā)表于 2019-10-8 16:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有限狀態(tài)機由有限的狀態(tài)和相互之間的轉(zhuǎn)移構(gòu)成,在任何時候只
能處于給定數(shù)目的狀態(tài)中的一個。當接收到一個輸入事件時,狀態(tài)機產(chǎn)生一個輸出,同時也可能伴隨著狀態(tài)的轉(zhuǎn)移。
#define key_input    PIND.7      // 按鍵輸入口
#define key_state_0  0
#define key_state_1  1
#define key_state_2  2
char read_key(void)
{
static char key_state = 0;
char key_press, key_return = 0;
key_press = key_input;        // 讀按鍵 I/O (狀態(tài)機的輸入)
switch (key_state)
{
case key_state_0:        // 按鍵初始態(tài)
        if (!key_press) key_state = key_state_1;  // 鍵被按下,狀態(tài)轉(zhuǎn)換到鍵確認態(tài) , 確定下一次按鍵的狀態(tài)值
break;
case key_state_1:        // 按鍵確認態(tài)
if (!key_press)
{
            key_return = 1;      // 按鍵仍按下,按鍵確認輸出為“1”
            key_state = key_state_2;  // 狀態(tài)轉(zhuǎn)換到鍵釋放態(tài)
}
else
            key_state = key_state_0;  // 按鍵已抬起,轉(zhuǎn)換到 按鍵初始態(tài)
       break;
case key_state_2:
            if (key_press) key_state = key_state_0;  //按鍵已釋放,轉(zhuǎn)換到按鍵初始態(tài)
       break;
}  
      return key_return;
}
該簡單按鍵接口函數(shù) read_key()在整個系統(tǒng)程序中應(yīng)每隔10ms
調(diào)用執(zhí)行一次,每次執(zhí)行時將先讀取與按鍵連接的 I/O 的電平到變量 key_press 中,然后進入用 switch 結(jié)構(gòu)構(gòu)成的狀態(tài)機。switch 結(jié)構(gòu)中的 case 語句分別實現(xiàn)了 3 個不同狀態(tài)的處理判別過程,在每個狀態(tài)中將根據(jù)狀態(tài)的不同,以及 key_press 的值(狀態(tài)機的輸入)確定輸出值(key_return),和確定下一次按鍵的狀態(tài)值(key_state) 。 函數(shù) read_key()的返回參數(shù)提供上層程序使用。返回值為 0 時,表示按鍵無動作;而返回 1 表示有一次按鍵閉合動作,需要進入按鍵處理程序做相應(yīng)的鍵處理。在函數(shù) read_key()中定義了 3 個局部變量,其中 key_press和key_return為一般普通的局部變量,每次函數(shù)執(zhí)行時,key_press 中保存著剛檢測的按鍵值。key_return 為函數(shù)的返回值,總是先初始化為 0,只有在狀態(tài) 1 中重新置 1,作為表示按鍵確認的標志返回。變量 key_state 非常重要,它保存著按鍵的狀態(tài)值,該變量的值在函數(shù)調(diào)用結(jié)束后不能消失,
必須保留原值,因此在程序中定義為“局部靜態(tài)變量” ,用static 聲明。如果使用的語言環(huán)境不支持 static 類型的局部變量,應(yīng)將 key_state 定義為全局變量(關(guān)于局部靜態(tài)變量的特點請參考相關(guān)介紹 C 語言程序設(shè)計的書籍) 。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:621334 發(fā)表于 2019-10-10 22:28 | 只看該作者
如果程序的用Tab鍵排版那就更好了,讀起來不會很亂
回復(fù)

使用道具 舉報

板凳
ID:253767 發(fā)表于 2019-10-11 07:30 | 只看該作者
謝謝分享!!!
回復(fù)

使用道具 舉報

地板
ID:190577 發(fā)表于 2019-10-13 17:29 | 只看該作者

技術(shù)在于交流,我看了您寫請工程化,定制化你的單片機代碼帖子,很不錯,技術(shù)在于交流,我現(xiàn)在在學(xué)PIC單片機,我也會分享自己學(xué)習(xí)的點點滴滴,希望能幫助需要幫助的人。
回復(fù)

使用道具 舉報

5#
ID:190577 發(fā)表于 2019-10-13 17:30 | 只看該作者
晨晨晨晨晨晨 發(fā)表于 2019-10-10 22:28
如果程序的用Tab鍵排版那就更好了,讀起來不會很亂

好的,謝謝好的建議。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品免费av | 在线视频一区二区三区 | 男人的天堂久久 | 欧美黄色一区 | 久免费视频| 久久久久国产一区二区三区 | 亚洲精品视频免费 | 97国产精品| 日韩在线精品强乱中文字幕 | 四虎在线观看 | 欧美色综合 | 精品三级在线观看 | 美女一级毛片 | 国产日韩一区二区三免费高清 | 日韩精品一区二区久久 | 亚洲成人日韩 | 国产偷久久一级精品60部 | 国产精品久久久久久一区二区三区 | 欧美激情精品久久久久久免费 | 日韩国产精品一区二区三区 | 老牛嫩草一区二区三区av | 久久高清国产视频 | 精品一区二区在线观看 | 欧美视频在线播放 | 伊人精品在线视频 | 亚洲欧美中文字幕在线观看 | 国产一区二区在线播放 | 日本一区二区高清不卡 | 国产91精品久久久久久久网曝门 | 亚洲精品久久久久久久久久吃药 | 国产成人精品999在线观看 | 日本在线视频不卡 | 亚洲精选一区二区 | 国产精品免费一区二区 | 日韩美女一区二区三区在线观看 | 狠狠做深爱婷婷综合一区 | 国产丝袜人妖cd露出 | 超碰人人人人 | 美日韩精品| 国产精品欧美一区二区三区不卡 | 一区二区三区回区在观看免费视频 |