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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C51按鍵程序編寫的基礎(chǔ)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:127542 發(fā)表于 2016-6-21 16:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

其實忽略了一個重要的問題,那就是現(xiàn)實中按鍵按下時候的電平變化有一個從不穩(wěn)定狀態(tài)到穩(wěn)定的狀態(tài)變化。
實際中,由于按鍵的彈片接觸的時候,并不是一接觸就緊緊的閉合,它還存在一定的抖動,盡管這個時間非常的短暫,但是對于我們執(zhí)行時間以us為計算單位的微控制器來說,它太漫長了。因而,實際的波形圖應(yīng)該如下面這幅示意圖一樣。
這樣便存在這樣一個問題。假設(shè)我們的系統(tǒng)有這樣功能需求:在檢測到按鍵按下的時候,將某個I/O的狀態(tài)取反。由于這種抖動的存在,使得我們的微控制器誤以為是多次按鍵的按下,從而將某個I/O的狀態(tài)不斷取反,這并不是我們想要的效果,假如該I/O控制著系統(tǒng)中某個重要的執(zhí)行的部件,那結(jié)果更不是我們所期待的。于是乎有人便提出了軟件消除抖動的思想,道理很簡單:抖動的時間長度是一定的,只要我們避開這段抖動時期,檢測穩(wěn)定的時候的電平不久可以了嗎?聽起來確實不錯,而且實際應(yīng)用起來效果也還可以。于是,各種各樣的書籍中,在提到按鍵檢測的時候,總也不忘說道軟件消抖。就像下面的偽代碼所描述的一樣。(假設(shè)按鍵按下時候,低電平有效)
If(0 == io_KeyEnter)            //如果有鍵按下了
{
    Delayms(20) ;            //先延時20ms避開抖動時期
    If(0 == io_KeyEnter)        //然后再檢測,如果還是檢測到有鍵按下
    {
        return KeyValue ;          //是真的按下了,返回鍵值
    }
    else
{
    return KEY_NULL        //是抖動,返回空的鍵值
}
    while(0 == io_KeyEnter) ;    //等待按鍵釋放
}
乍看上去,確實挺不錯,實際中呢?在實際的系統(tǒng)中,一般是不允許這么樣做的。為什么呢?首先,這里的Delayms(20) , 讓微控制器在這里白白等待了20 ms 的時間,啥也沒干,考慮我在《學(xué)會釋放CPU》一章中所提及的幾點,這是不可取的。其次while(0 == io_KeyEnter) 所以合理的分配好微控制的處理時間,是編寫按鍵程序的基礎(chǔ)。J;更是程序設(shè)計中的大忌(極少的特殊情況例外)。任何非極端情況下,都不要使用這樣語句來堵塞微控制器的執(zhí)行進程。原本是等待按鍵釋放,結(jié)果CPU就一直死死的盯住該按鍵,其它事情都不管了,那其它事情不干了嗎?你同意別人可不會同意

◎消除抖動有必要嗎?
的確,軟件上的消抖確實可以保證按鍵的有效檢測。但是,這種消抖確實有必要嗎?有人提出了這樣的疑問。抖動是按鍵按下的過程中產(chǎn)生的,如果按鍵沒有按下,抖動會產(chǎn)生嗎?如果沒有按鍵按下,抖動也會在I/O上出現(xiàn),我會立刻把這個微控制器錘了,永遠不用這樣一款微控制器。所以抖動的出現(xiàn)即意味著按鍵已經(jīng)按下,盡管這個電平還沒有穩(wěn)定。所以只要我們檢測到按鍵按下,即可以返回鍵值,問題的關(guān)鍵是,在你執(zhí)行完其它任務(wù)的時候,再次執(zhí)行我們的按鍵任務(wù)的時候,抖動過程還沒有結(jié)束,這樣便有可能造成重復(fù)檢測。所以,如何在返回鍵值后,避免重復(fù)檢測,或者在按鍵一按下就執(zhí)行功能函數(shù),當(dāng)功能函數(shù)的執(zhí)行時間小于抖動時間時候,如何避免再次執(zhí)行功能函數(shù),就成為我們要考慮的問題了。這是一個仁者見仁,智者見智的問題,就留給大家去思考吧。所以消除抖動的目的是:防止按鍵一次按下,多次響應(yīng)。


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色免费网站在线看 | 影视先锋av资源噜噜 | 99re在线视频观看 | 国产精品一区二区av | 99久久免费精品国产男女高不卡 | 欧美日韩视频在线播放 | 色综合天天天天做夜夜夜夜做 | 久久99久久| 欧美激情一区 | 国产免费拔擦拔擦8x高清 | 久久久久久久久毛片 | 6996成人影院网在线播放 | 国产黄色网址在线观看 | 81精品国产乱码久久久久久 | 97在线播放 | 久久成人一区 | 亚洲一区二区免费看 | 欧美日韩综合 | 国产精品久久亚洲7777 | 日韩精品一区二区三区视频播放 | 91久久精品国产免费一区 | av入口 | 国产乱码精品1区2区3区 | 中文字幕在线一区二区三区 | 亚洲欧美在线视频 | 精品少妇一区二区三区日产乱码 | 久久精品美女 | 精品一区二区三区电影 | 欧美福利网站 | www.av在线| 午夜免费在线电影 | 精品在线一区 | 欧美日韩一区二区三区四区 | 四虎影音 | 中文字幕韩在线第一页 | 国产日韩精品一区 | 亚洲高清视频一区二区 | 2018国产大陆天天弄 | 看羞羞视频| 久久精品超碰 | 在线看av的网址 |