查詢方式按鍵

查詢方式按鍵

ID:40849109

大?。?34.50 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2019-08-08

查詢方式按鍵_第1頁(yè)
查詢方式按鍵_第2頁(yè)
查詢方式按鍵_第3頁(yè)
查詢方式按鍵_第4頁(yè)
查詢方式按鍵_第5頁(yè)
資源描述:

《查詢方式按鍵》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、【013】查詢方式按鍵?[51]點(diǎn)擊數(shù):684????發(fā)布日期:2006-6-250:57:00??【收藏】?【評(píng)論】?【打印】?【編程愛(ài)好者論壇】?【關(guān)閉】?實(shí)驗(yàn)參考:笨笨工作室-實(shí)驗(yàn)六、查詢方式按鍵。(查看)實(shí)驗(yàn)板:??FB51A。(查看)實(shí)驗(yàn)?zāi)康?<1>掌握讀取外部按鍵時(shí)候應(yīng)該注意的事項(xiàng),掌握查詢方式響應(yīng)按鍵的方法。     <2>掌握讀取按鍵去抖動(dòng)的方法。    ?<3>掌握判直接尋址位轉(zhuǎn)移指令jb,jnb的用法。實(shí)驗(yàn)現(xiàn)象:最右面的數(shù)碼管初始顯示0,每次按下外部按鍵K1執(zhí)行加一,計(jì)數(shù)到9時(shí)重新回0。單片機(jī)響應(yīng)外部按鍵的方式有兩種,一種是查詢方式,一種是中斷方式。查詢

2、方式:?jiǎn)纹瑱C(jī)不斷的查詢是否有按鍵按下,如果有按鍵按下的話,就執(zhí)行相應(yīng)的程序,否則繼續(xù)查詢。中斷方式:?jiǎn)纹瑱C(jī)處理自己的工作,如果有按鍵按下,向單片機(jī)發(fā)出中斷請(qǐng)求。單片機(jī)停下現(xiàn)在正在處理的工作,轉(zhuǎn)去執(zhí)行中斷程序,執(zhí)行之后回來(lái)繼續(xù)剛才的工作。本實(shí)驗(yàn)是用查詢方式完成,只用到一個(gè)鍵K1,每次按下,使第一位數(shù)碼管加1顯示,計(jì)數(shù)到9里重新回0。顯示部分電路及查表顯示方法參考:【005】數(shù)碼管顯示數(shù)字?和【006】多位數(shù)碼管動(dòng)態(tài)顯示。本來(lái)想重畫(huà)個(gè)電路圖,在原來(lái)顯示部分的基礎(chǔ)上再把按鍵部分加上,但一來(lái)放在Blog上寬度有問(wèn)題,再者還是不想畫(huà)了,所以偷個(gè)懶,鍵盤部分單獨(dú)拿出來(lái)吧。顯示部分:按鍵

3、部分:由原理圖知:當(dāng)按鍵k1按下的時(shí)候,對(duì)應(yīng)P1.0輸入低電平。因此,我們要查詢k1是否按下,只要檢測(cè)到p1.0是低電平即可。在查詢鍵是否按下時(shí),要注意按鍵的去抖動(dòng)問(wèn)題,關(guān)于鍵的消抖,見(jiàn)【012】按鍵消抖。按上述方法編寫程序:???????org??0000hstart:?mov??p0,#48h??????;段碼-顯示0???????mov??p2,#01h??????;位碼-選通第一位數(shù)碼管main:??mov??r7,#0ffh?????;查表時(shí)偏移量,用來(lái)實(shí)現(xiàn)由0到9循環(huán)顯示key:???jb???p1.0,key?????;如果P1.0為高電平,則繼續(xù)執(zhí)行此句查詢

4、。???????call?del10ms???????;否則調(diào)用延時(shí)程序?qū)崿F(xiàn)軟件去抖???????jb???p1.0,key?????;再次查詢P1.0,如果是高電平,表示是抖動(dòng),繼續(xù)查詢???????dis:????????????????????????;確定按鍵按下,開(kāi)始執(zhí)行顯示程序???????inc??r7????????????;偏移量自加(第一次值為0)???????mov??a,r7???????mov??dptr,#tab????;取表首址???????movc?a,@a+dptr????;用查表指令獲取要顯示的數(shù)字???????mov??p0,a????

5、?????;得到該字段碼送入P0口顯示???????cjne?a,#48h,key??;未顯示到最后一個(gè)數(shù),繼續(xù)查詢按鍵狀態(tài)???????ljmp?main??????????;顯示到最后一個(gè)數(shù)字則重新開(kāi)始???????tab:???db???0ebh,52h,62h,0e1h,64h,44h,0eah,40h,60h,48h;段碼表del10ms:????????????????????;10ms延時(shí)子程序(12M)????????mov?r6,#20???????;2機(jī)器周期temp:???mov?r5,#248??????;2機(jī)器周期????????djnzr5,$?

6、????????;2機(jī)器周期2+2×248=498????????djnzr6,temp??????;2機(jī)器周期2×20=40????????ret????????????????;2+20×498+40=10002即10msend★將該程序下載到板上驗(yàn)證發(fā)現(xiàn)很不穩(wěn)定,按一次鍵時(shí)顯示可能會(huì)變幾次,如果按住鍵不放,將會(huì)顯示“8”,且不停在閃爍,用Porteus仿真了一下也是這個(gè)問(wèn)題。這是由于顯示了一個(gè)數(shù)字之后,單片機(jī)會(huì)返回重新查詢P1.0的狀態(tài),如果按下的時(shí)間很長(zhǎng),就會(huì)導(dǎo)致單片機(jī)又檢測(cè)到低電平,所以就繼續(xù)顯示下一個(gè)數(shù)字,常按住的話就會(huì)循環(huán)此過(guò)程,所以看到的閃爍的“8”實(shí)際上是

7、快速動(dòng)態(tài)顯示“0”到“9”時(shí)人眼的視覺(jué)暫留產(chǎn)生的。那如何使按下一次按鍵,無(wú)論時(shí)間長(zhǎng)短,只作一次按鍵處理呢?可以在顯示完一個(gè)數(shù)字后即檢測(cè)P1.0是否回到高電平(鍵放開(kāi)),若是,表示按鍵一次,繼續(xù)執(zhí)行顯示下一個(gè)數(shù);若不是則原地等待直到P1.0返回高電平。按此思路在程序中將一個(gè)段碼送入P0口顯示之后,加一判斷語(yǔ)句(紅色):???????org??0000hstart:?mov??p0,#48h??????;段碼-顯示0???????mov??p2,#01h??????;位碼-選通第一位數(shù)碼管main:??mov??r7,

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。