找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6246|回復(fù): 4
收起左側(cè)

各位誰能幫我做下面一道簡單51編程題,非常感謝

[復(fù)制鏈接]
ID:18392 發(fā)表于 2009-10-22 21:01 | 顯示全部樓層 |閱讀模式
 

請利用下面的條件,做一個(gè)51單片機(jī)的鍵盤去抖動(dòng)的程序,將鍵值送入數(shù)組key[10]里。

1) 要求做到程序不能延遲死等。

2) 請繼續(xù)發(fā)揮,當(dāng)按下鍵不放2秒后,自動(dòng)變?yōu)檫B按狀態(tài),每200ms便送入1次到key[]里。

       假如一個(gè)按鍵接在8051的P1.0口上,同時(shí)原程序已經(jīng)有了基本的時(shí)間節(jié)拍,即10ms信號(是用定時(shí)器循環(huán)計(jì)算和定時(shí)中斷完成的),每隔10ms后,標(biāo)志位“one_tick”被置1,見如下程序:

Void main( )

{

       Ini( ); //相關(guān)的初始化不用你寫

       While(1)

{

       If(one_tick)

{//10ms到

       one_tick=0;//清0

       //你的程序放在這里

}

}

}

回復(fù)

使用道具 舉報(bào)

ID:18336 發(fā)表于 2009-10-22 21:08 | 顯示全部樓層
幫樓主頂一下,應(yīng)該不是很難,但是快要關(guān)機(jī)房了,沒時(shí)間了
回復(fù)

使用道具 舉報(bào)

ID:6313 發(fā)表于 2009-10-23 16:12 | 顯示全部樓層

不太理解你的題目要求。是不是這樣的,就是有一個(gè)按鍵,這個(gè)按鍵如果按下的話,他的鍵值是在不斷增加的。增加間隔是沒2秒,加一個(gè)值。

[此貼子已經(jīng)被作者于2009-10-23 16:14:46編輯過]
回復(fù)

使用道具 舉報(bào)

ID:18333 發(fā)表于 2009-10-30 16:52 | 顯示全部樓層

1) 要求做到程序不能延遲死等。

    我的理解認(rèn)為是判斷按鍵松開的程序,這樣程序就會(huì)一直停留在判斷按鍵松開的死循環(huán)上了。產(chǎn)生了延遲死等,

 如果采用的方式是行列掃描,但是在按鍵檢測、鍵值判斷的時(shí)候可以采用標(biāo)志位的方式,按鍵一次后判置位標(biāo)志位,其實(shí)只是執(zhí)行一次按鍵判斷,當(dāng)響應(yīng)后在松開后,釋放標(biāo)志位。當(dāng)標(biāo)志位沒有釋放之前,不會(huì)按鍵判斷,這樣程序就不會(huì)一直停留在判斷按鍵松開的死循環(huán)上了。

2) 請繼續(xù)發(fā)揮,當(dāng)按下鍵不放2秒后,自動(dòng)變?yōu)檫B按狀態(tài),每200ms便送入1次到key[]里。

    當(dāng)按鍵被按下是就放映,之后再判斷按鍵松開的時(shí)間程序。

要是我理解對了,這程序應(yīng)該不難。

回復(fù)

使用道具 舉報(bào)

ID:18690 發(fā)表于 2009-10-31 22:49 | 顯示全部樓層
單片機(jī)交流群QQ:69100826。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表