蘇州大學(xué)實(shí)驗(yàn)報(bào)告-實(shí)驗(yàn)三鍵盤中斷實(shí)驗(yàn)報(bào)告_第1頁
蘇州大學(xué)實(shí)驗(yàn)報(bào)告-實(shí)驗(yàn)三鍵盤中斷實(shí)驗(yàn)報(bào)告_第2頁
蘇州大學(xué)實(shí)驗(yàn)報(bào)告-實(shí)驗(yàn)三鍵盤中斷實(shí)驗(yàn)報(bào)告_第3頁
蘇州大學(xué)實(shí)驗(yàn)報(bào)告-實(shí)驗(yàn)三鍵盤中斷實(shí)驗(yàn)報(bào)告_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.蘇州大學(xué)實(shí)驗(yàn)報(bào)告院、系年級(jí)專業(yè)姓名學(xué)號(hào)課程名稱成績(jī)指導(dǎo)教師同組實(shí)驗(yàn)者實(shí)驗(yàn)日期實(shí)驗(yàn)名稱: 鍵盤中斷實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康耐ㄟ^該實(shí)驗(yàn)實(shí)習(xí),能夠熟練運(yùn)用MT-IDE嵌入式開發(fā)系統(tǒng)環(huán)境、匯編和C語言以及調(diào)試方式;復(fù)習(xí)SCI的內(nèi)容;加強(qiáng)鍵盤中斷的基本原理及編程原理的理解;能夠理解“行掃描”法的原理并且運(yùn)用它進(jìn)行鍵盤中斷的編程。 二實(shí)驗(yàn)內(nèi)容理解鍵盤模塊和鍵盤中斷點(diǎn)的原理,使用“行掃描”法編寫一個(gè)中斷方式的的鍵盤程序,并轉(zhuǎn)化成定義值后,通過串口分別發(fā)往PC機(jī)的VB編寫的界面中顯示。三實(shí)驗(yàn)過程(一)接線圖MCU內(nèi)部電阻圖1 鍵盤接線原理圖87654321行線m1 m2 m3 m4列線 n1 n2 n3 n4(二)基

2、本原理GP32的A口的8根引腳與鍵盤中斷模塊(KBI)的引腳復(fù)用。作為KBI引腳時(shí),8個(gè)引腳分別稱為KBIE7- KBIE0。它們提供了以中斷方式識(shí)別是否有按鍵按下的硬件手段。當(dāng)然,如果不以中斷方式識(shí)別鍵盤按鍵,可以屏蔽鍵盤中斷,把A口作為一般I/O口對(duì)待。 CPU對(duì)鍵盤掃描可以采取程序控制的隨機(jī)方式,CPU可以在空閑時(shí)掃描鍵盤。也可以采用定時(shí)控制,每隔一定時(shí)間,對(duì)鍵盤掃描一次,CPU可以隨時(shí)響應(yīng)鍵盤輸入中斷。采用中斷方式,當(dāng)鍵盤上有鍵閉合時(shí),鍵盤向CPU請(qǐng)求中斷,CPU響應(yīng)鍵盤輸入中斷,對(duì)鍵盤掃描,以識(shí)別哪一個(gè)鍵處于閉合狀態(tài),并對(duì)鍵盤輸入信息作出響應(yīng)處理。CPU對(duì)鍵盤上閉合鍵的鍵號(hào)確定,可以

3、根據(jù)行線和列線的狀態(tài)計(jì)算求得,也可以通過行線和列線的狀態(tài)查表求得。四編程(一)流程圖開始開始SCI初始化子程序頭文件和聲明等待鍵盤按鍵中斷事件的發(fā)生掃描鍵盤得到鍵值發(fā)往串口顯示鍵盤初始化子程序查表取得鍵值對(duì)應(yīng)的定義值設(shè)置鍵盤中斷允許,開放總中斷,把B口置為輸出,初始暗發(fā)往串口顯示PTB鍵定義值結(jié)束人工復(fù)位1 ?結(jié)束圖2 鍵盤中斷流程圖(中斷方式主程序及其中斷子程序)(二)所用寄存器名稱及其各個(gè)位鍵盤狀態(tài)和控制寄存器(Keyboard Status and Control Register,INTKBSCR)數(shù)據(jù)位 D7 D6 D5 D4 D3 D2 D1 D0定義 KEY ACKK IMASK

4、K MODEK復(fù)位 0 0 0 0 0 0 0 0鍵盤中斷允許寄存器(Keyboard Interrupt Enable Register,INTBIER)數(shù)據(jù)位 D7 D6 D5 D4 D3 D2 D1 D0定義KBIE7 KBIE6 KBIE5 KBIE4 KBIE3 KBIE2 KBIE1 KBIE0復(fù)位 0 0 0 0 0 0 0 0(三)主要代碼段1 匯編方式:鍵盤中斷方式的主程序及其中斷子程序部分代碼MainInit: /復(fù)位后程序從此開始執(zhí)行 /系統(tǒng)初始化 SEI /關(guān)中斷 /1.堆棧初始化為RAM最高端 LDHX #RAMEndAddr /HX=#RAMEndAddr TXS

5、/HX->SP /2.系統(tǒng)初始化 JSR MCUInit /初學(xué)時(shí)跳過此處 /3.串行口初始化 JSR SCIInit /4.B口初始化 LDA #0xff STA DDRB STA PTB /5.鍵盤初始化 JSR KB_Init /調(diào)鍵盤初始化子程序 BCLR #1,INTKBSCR /開放鍵盤中斷(IMASK=0) CLI /開中斷 /程序總循環(huán)入口MainLoop: NOP NOP BRA MainLoop鍵盤中斷方式的子程序部分代碼/KB_Int:鍵盤中斷處理程序-*/功能:鍵盤中斷程序,把鍵定義值從串口發(fā)送出去 */調(diào)用子程序:(1)掃描法讀取鍵值子程序(KB_Scan) *

6、/ (2)鍵值轉(zhuǎn)為定義值子程序(KB_Def) */-*KB_Int:SEI /關(guān)總中斷PSHH /保護(hù)HBSET #1,INTKBSCR /禁止鍵盤中斷NOPNOPNOPNOPNOPJSR KB_Scan /掃描鍵盤,讀取鍵值->AJSR SCISend1 /發(fā)送鍵值JSR KB_Def /轉(zhuǎn)成鍵定義值->ACBEQA #$00,KB_Int_1JSR SCISend1 /發(fā)送鍵定義值COMA STA PTB /小燈顯示按鍵的ASCII碼值KB_Int_1:JSR Delay1000JSR KB_InitBCLR #1,INTKBSCR /開放鍵盤中斷(IMASKK=0)PULH

7、 /恢復(fù)HCLI /開總中斷RTI2C語言方式:鍵盤中斷方式的主程序部分代碼/主函數(shù)void main() DisableMCUInterrupt(); /禁止總中斷 MCUInit(); /芯片初始化 SCIInit(); /串行口初始化 KB_Init(); /鍵盤模塊初始化 DDRB=0xff; /B口為輸出 PTB=0xff; /初始時(shí)燈暗 EnableKBInt(); /開放鍵盤中斷 EnableMCUInterrupt(); /開放總中斷 /主循環(huán) while(1) 鍵盤中斷方式的子程序部分代碼#pragma interrupt_handler isrKBIvoid isrKBI(

8、void) unsigned char KB_valve; DisableMCUInterrupt(); /禁止總中斷 DisableKBInt(); /屏蔽鍵盤中斷(IMASKK=1) KB_valve=KB_Scan(); /掃描鍵值 SCISend1(KB_valve); KB_valve=KB_Def(KB_valve); /鍵值轉(zhuǎn)化為定義值 if(KB_valve) SCISend1(KB_valve); PTB=KB_valve; /小燈顯示按鍵的ASCII碼值 KB_Init(); /重新初始化鍵盤 EnableKBInt(); /打開鍵盤中斷(IMASKK=0) EnableM

9、CUInterrupt(); /開放總中斷五實(shí)驗(yàn)問答(根據(jù)實(shí)驗(yàn)指導(dǎo)書所列舉的問題)1本實(shí)驗(yàn)中用的是鍵盤中斷編程方式,也可以使用查詢編程方式,請(qǐng)盡量少修改代碼改用查詢編程方式重新編寫相應(yīng)的子程序和主程序。提示:注意重鍵問題。答:只要把鍵盤中斷子程序的內(nèi)容放到主函數(shù)的循環(huán)中就可以了。同時(shí)去掉中斷向量表中關(guān)于鍵盤中斷的中斷設(shè)置。 2識(shí)別是否有鍵按下以及哪個(gè)鍵被按下有哪些方法?答:識(shí)別是否有鍵被按下,主要有查詢法、定時(shí)掃描法與中斷法。而要識(shí)別鍵盤上哪個(gè)鍵被按下主要有行掃描法和行反轉(zhuǎn)法。 3有哪些方法可以用來消除鍵盤抖動(dòng)?答:當(dāng)按下一個(gè)鍵時(shí),會(huì)出現(xiàn)所按的鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合位置的情況,當(dāng)釋放一個(gè)按鍵時(shí)也會(huì)出現(xiàn)類似情況,這就是抖動(dòng)問題。在軟件上,解決抖動(dòng)問題的方法通常是延遲等待抖動(dòng)的消失或多次識(shí)別判定。 4課本中的鍵盤中斷編程是如何解決重鍵問題?答:所謂重鍵就是有兩個(gè)及兩個(gè)以上按鍵同時(shí)處于閉合位置的情況。在軟件上,處理重鍵問題通常有連鎖法和巡回法。5課本中的樣例直接用小燈檢驗(yàn)程序的運(yùn)行情況。怎樣檢驗(yàn)?提示:用接線圖來說明。答:如果小燈的顯示結(jié)果是按鍵對(duì)應(yīng)的ASCII碼值,說明程序運(yùn)行正確,否則程序中或硬件上可能有錯(cuò)誤。 6在上題中改用萬用表來檢驗(yàn),請(qǐng)加

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論