北京理工大學(xué)ZHZH_第1頁
北京理工大學(xué)ZHZH_第2頁
北京理工大學(xué)ZHZH_第3頁
北京理工大學(xué)ZHZH_第4頁
北京理工大學(xué)ZHZH_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上北京理工大學(xué)微機原理與接口技術(shù)實驗報告實驗內(nèi)容:微機原理綜合設(shè)計 組別: 姓名: 班級: 學(xué)號:1、 實驗?zāi)康?.利用所學(xué)知識設(shè)計簡單計算器。2、 實驗內(nèi)容利用8255控制試驗箱上的鍵盤,實現(xiàn)2位十進制數(shù)以內(nèi)的加減乘除運算,將運算結(jié)果通過8250發(fā)送到上位機。鍵盤為10個數(shù)字鍵0-9,六個功能鍵 +、-、*、/、=、復(fù)位。三、實驗方法1.設(shè)計思路.根據(jù)題目要求首先應(yīng)該實現(xiàn)試驗箱上的鍵盤掃描功能,計算按下鍵碼的鍵值(鍵值檢測中應(yīng)該加入相應(yīng)的延時程序以達(dá)到精確掃描的目的)。再進行加減乘除算數(shù)運算,通過8250芯片發(fā)送到上位機,利用串口小助手實現(xiàn)算數(shù)。開始2.實驗程序流程圖

2、。 初始化 N按鍵閉合? Y按鍵掃描N按鍵恢復(fù)?Y保存鍵值進行算數(shù)運算輸出結(jié)果結(jié)束四、實驗源程序(必要的文字注釋)1.簡單計算器程序。ASSUME CS:CODECODE SEGMENT ORG 100HSTART: MOV DX,04A6H;控制寄存器地址 MOV AX,90H;設(shè)置為A口輸入,;B口輸出,C輸出 OUT DX,AX ;8255初始化 MOV AX,0 MOV DS,AXAAA: MOV DI,2000H MOV CX,10CCC1: MOV DS:DI,0 INC DI LOOP CCC1 MOV DI,2000HMOV DX,486H MOV AX,80H OUT DX,

3、AX MOV DX,480H MOV AX,12 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,486H MOV AX,7 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,48AH IN AX,DX MOV DX,480H IN AX,DX CHECK0: ;CHECK0檢測是否有健被按下 MOV AX,OOH ;C口的PC0、PC1、PC2作為行選擇線 MOV DX,04A4H ;C口地址 OUT DX,AX; 寫入C口內(nèi)容00H,即令所有行為低電平 MOV DX,04A0H ;A口地址 IN

4、AX,DX ;讀入A口的內(nèi)容 CMP AL,OFFH ;判定是否有列線為低電平 JE CHECK0 ;沒有,無閉合鍵,則循環(huán)等待 MOV CX,05FFH ;延遲常數(shù),可以修改來改變延時時間 DELAY: LOOP DELAY;有,則延遲清除抖動,當(dāng)cx=0時則停止該循環(huán)行 掃描鍵盤和列掃描鍵盤,確定被按鍵的行值和列值 MOV CL,3 ;行數(shù) MOV AH,0 MOV AL,0FBH ; 0fbh=1111 1011B CONTIN: PUSH AL ;將ax的內(nèi)容(0fbh)入棧保存 MOV DX,04A4H ;C口地址 OUT DX,AL ;寫入C口內(nèi)容0fbh=1111 1011B,即

5、將第三行置為低電平 MOV DX,04A0H ;A口地址 IN AL,DX ;讀入A口的內(nèi)容 MOV AH,AL ;將A口的內(nèi)容送入ah CMP GH,0FFH ;判斷是否有列線為低電平 JNE NEXT ;比較結(jié)果不等于0則轉(zhuǎn)移,即有列線為低電平 POP AX ; 比較結(jié)果等于0,即沒有列線為低電平,(ax)=00fbh ROR AL,1 ; fbh(1111 1011B)循環(huán)右移,(al)=1111 1101檢測下一行 LOOP CONTIN ;循環(huán)掃描下一行,確定行 JMP CHECK0 ;若所有行都沒有被按下,則返回check0重新檢測 NEXT: MOV CH,CL ;保存行值至ch

6、 MOV CL,7 ;列值從0開始編號0-7 BEGIN0: SHL AH,1 ; ah為A口的內(nèi)容,邏輯左移1位,末位補0 JNC GOON ;無進位則轉(zhuǎn)移,即可確定列 LOOP BEGIN0 ;繼續(xù)循環(huán),確定列 JMP CHECK0 GOON: ;計算顯示碼在discode中的位置:(行數(shù)-1)*8 +列值 MOV BL,CL ;保存列值至BL DEC CH ;行數(shù)減1 MOV CL,3 SHL CH,CL ;左移三位即相當(dāng)于減1之后的行數(shù)*8 ADD DL,CH ;確定顯示碼在discode表中的偏移量,即(行數(shù)-1)*8+列值 MOV BH,0 MOV CX,BX ;顯示碼在disco

7、de表中的偏移量送CX DISPLAY:;顯示輸出 MOV SI, OFFSET DISCODE ADD SI,CX ;顯示碼偏移地址 MOV DX,040AH ;C口地址 MOV AL,0FH OUT DX,AL ;寫入C口內(nèi)容,使位控(LED1)有效 MOVAL,CS:SI ; 取被按鍵的顯示字形碼送入al MOV DX,04A2H;B口地址 OUT DX,AL ; 將顯示字形碼送B口輸出顯示 NOP NOP CMP AL,3fh JNZ L1 MOV AH,0 JMP NEXT1 L1: ;定義鍵碼子程序L1 CMP AL,06h JNZ L2 MOV AH,1 JMP NEXT1 L2

8、: ;定義鍵碼子程序L2 CMP AL,5bh JNZ L3 MOV AH,2 JMP NEXT1 L3: ;定義鍵碼子程序L3 CMP AL,4fh JNZ L4 MOV AH,3 JMP NEXT1 L4: ;定義鍵碼子程序L4 CMP AL,66h JNZ L5 MOV AH,4 JMP NEXT1 L5: ;定義鍵碼子程序L5 CMP AL,6dh JNZ L6 MOV AH,5 JMP NEXT1 L6: ;定義鍵碼子程序L6 CMP AL,7dh JNZ L7 MOV AH,6 JMP NEXT1 L7: CMP AL,07h JNZ L8 MOV AH,7 JMP NEXT1 L

9、8: ;定義鍵碼子程序L8 CMP AL,7fh JNZ L9 JMP NEXT1 L9: CMP AL,6fh ;AL與6FH比較 JNZ L10 ;若ZF=0則存入L10中 MOV AH,9 JMP NEXT1 L10: CMP AL,77h JNZ L11 MOV AH,10 JMP NEXT1 L11: CMP AL,7ch JNZ L12 MOV AH,11 JMP NEXT1 L12: CMP AL,39h JNZ L13 MOV AH,12 JMP NEXT1 L13: CMP AL,5eh JNZ L14 MOV AH,13 JMP NEXT1 L14: CMP AL,79h

10、JNZ L15 JMP NEXT1 L15: CMP AL,71h JMP AAA NEXT1: MOV DS:DI,AH INC DI CMP DI,2004H CALL DELAY1 JE ACLT JMP CHECK0 ACLT: MOV AX,0 MOV DX,0 MOV DI,2000H ;將2000H送入DI MOV AL,DS:DI ;將DS:DI的地址送入AL MOV DL,DS:DI+2 MOV BL,DS:DI+1 CMP BL,10 JNZ K1 ADD AL,DL PUSH AX ;將AX壓棧 JMP LOOP1 ;轉(zhuǎn)移到LOOP1地址 K1: CMP BL,11 JN

11、Z K2 SUB AL,DL PUSH AX JMP LOOP1K2: CMP BL,12 JNZ K3 MUL DL PUSH AX JMP LOOP1 K3:CMP BL,13 JNZ LOOP1 DIV DL PUSH AX JMP LOOP1 PPP: LOOP1: CALL DELAY1 CALL SEND JMP KKK DELAY1: ;延時子程序 MOV CX,0FFFFH LLL: LOOP LLL RET SEND: PUSH AX MOV DX,48AH SEND1: IN AX,DX JNZ SEND2 JMP SEND1 SEND2: POP AX MOV DX,48

12、0H OUT DX,AL RET KKK: JMP CHECK0 DISCODE DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h;(0-7) ;定義各鍵碼 DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h ;(8-F) DB 01h,02h,04h,08h,10h,20h,40h,80h;(abcdefgh) ;顯示字形碼表 CODE ENDS ;代碼段結(jié)束 END START ;程序段結(jié)束 五.實驗結(jié)果 簡單計算器1位十進制實驗結(jié)果截圖。 六.實驗中遇到的問題及解決辦法。 1.開始的時候自己編寫的程序是按照4x4鍵盤編寫,但實驗室中所用到的試驗箱是3x8的鍵位分布。原本編寫的鍵盤掃描程序要進行修改。經(jīng)過第一次的嘗試我們失敗了。之后我們經(jīng)過請教同學(xué)和自己修改終于讓我們看到了希望,程序能過成功的進行鍵盤掃描。2.之后的實驗結(jié)果再一次無情的打擊到我,實驗并未能按照預(yù)期的要求實現(xiàn)2位十進制數(shù)的計算而只能進行一位十進制數(shù)的計算,兩位十進制數(shù)無法正常的輸入。由于自身知識掌握的不夠扎實最后并未成功的解決。七、心得體會與建議我的心得真的太多,

溫馨提示

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

評論

0/150

提交評論