微機實驗綜合實驗報告_第1頁
微機實驗綜合實驗報告_第2頁
微機實驗綜合實驗報告_第3頁
微機實驗綜合實驗報告_第4頁
微機實驗綜合實驗報告_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、【摘要】實現(xiàn)類似FLAPPY BIRD的效果,用單脈沖觸發(fā)IRQ中斷來控制向上運動,同時在數(shù)碼管上顯示當前分數(shù),并在每得一分時發(fā)出提示音【】 并行接口8255A、定時/計數(shù)器8253、中斷控制器 8259、微機內(nèi)8255A、8253及揚聲器一、目標要求1. 利用1616LED點陣實現(xiàn)FLAPPY BIRD效果2. 通過點擊單脈沖出發(fā)IRQ中斷來控制向上運動3. 實現(xiàn)分數(shù)在數(shù)碼管上實時顯示4. 每得一分通過微機內(nèi)揚聲器發(fā)出提示音5. 實現(xiàn)的初始界面和結(jié)束界面二、設計和實施方案1. 設計方案選擇與論述FLAPPY BIRD是最近在APP STORE上非?;鸬囊豢?,由于該的簡單易玩性,再由示例代碼L

2、ED6PKU,使我聯(lián)想到用LED點陣加上單脈沖中斷的組合來實現(xiàn)的基本功能。(一)界面LED點陣LED點陣可以分為兩個部分,一是地圖的顯示,即不斷向后運動的柱子,該部分可以通過預先設好的地圖在LED點陣上循環(huán)顯示;另一部分即“小鳥”的顯示,由于LED點陣的局限性,所以選擇用LED點陣上的一個點來代表“小鳥”,同時用一個向量“小鳥”的高度。然后就是將兩部分相結(jié)合,即判斷當LED點陣刷新到“小鳥”所在的列時,將高度向量和要刷新的地圖合并輸出。最后就是LED點陣刷新控制,在該實驗中利用定時器8253,通過設置初值,來控制LED點陣的刷新時間間隔。(二)控制單脈沖觸發(fā)IRQ中斷由于考慮到IRQ中斷響應的

3、實時性,所以采用中斷控制更能精確的控制“小鳥”,每次觸發(fā)中斷時“小鳥”即上升一格,除此之外還“小鳥”下降,為了模擬重力加速度的效果,從上一次單脈沖觸發(fā)開始計時,通過計時來使“小鳥”降落的速度越來越快。(三)其他功能首先是的計分功能,通過判斷“小鳥”是否成功通過一個柱子來計分,并通過8255在數(shù)碼管上實時顯示當前的得分。然后由于微機也配備了一片8253,其GATE2由微機所配備的8255A的PB0控制、CLK2 的輸入時鐘頻率為1.19MHz、OUT2 輸出和8255A的PB1相“與”后經(jīng)過驅(qū)動連接到了微機的揚聲器上,利用這一資源實現(xiàn)當每得一分時驅(qū)動揚聲器最后就是的初始界面和結(jié)束界面,初始界面實

4、現(xiàn)在LED點陣上循環(huán)顯示的名稱“FLY DOT”,按任意鍵開始,當失敗后,LED點陣顯示“LOSE”,按ESC退出游戲,按其他鍵返回初始界面2. 對硬件資源的利用和分配(1)8255A:利用了兩片8255A,其中一片用于控制LED點陣的輸出,另一片C口用于輸出數(shù)碼管,B口用于控制數(shù)碼管顯示以及A口用于接受8253定時器信號(2)8253:利用實驗板上的1MHz脈沖計數(shù),來控制LED刷新延遲(3)單脈沖:用于觸發(fā)IRQ中斷(4)微機內(nèi)8255A、8253及揚聲器:用于發(fā)出提示音3. 電路連線圖8255A0E488HRESET8255A0E48BHCSPB01PA0PC8253LED 點陣1MHz

5、+5VCLK0GATE0OUT0數(shù)碼管控制 S0,S1數(shù)碼管IRQCS0E480H單脈沖4.流程圖中斷服務程序CS RESET主程序5.主要模塊說明主要函數(shù)及其功能主程序:刷新顯示LED 點陣DELAY:刷新延時函數(shù)DOWN:控制“小鳥”下落DISP1,DISP2:分別控制輸出數(shù)碼管 1 和數(shù)碼管 2,顯示分數(shù)的十位和個位 BEEP:發(fā)出得分時的提示音E:顯示歡迎界面及結(jié)束界面IRQ:中斷處理程序,控制“小鳥”向上運動三、實施條件微機一臺、并行接口8255A、定時/計數(shù)器8253、中斷控制器8259、微機內(nèi)8255A、8253及揚聲器、LED點陣、七段數(shù)碼管四、功能測試及結(jié)果分析1. 功能及使

6、用方法說明運行程序,LED點陣開始顯示歡迎界面,即循環(huán)顯示“FLY DOT”字母,按下鍵盤任意按鍵即可開始,點陣的點即為“小鳥”,過程中,點擊單脈沖可以操作“小鳥”向上運動,數(shù)碼管上顯示當前的分數(shù),每得一分會有提示音,“小鳥”裝上柱子后,即為失敗,此時顯示失敗界面,點陣上循環(huán)顯示“LOSE”字母,按ESC即可退出,按其他鍵可返回歡迎界面重新開始。2. 測試及結(jié)果分析程序基本可以按照上述過程進行,調(diào)試過程中,有時會發(fā)生中斷異常,即也可能會出現(xiàn)“小鳥”突然從點陣上的情況,經(jīng)各種DEBUG也沒有完全發(fā)現(xiàn)出錯的原因,出現(xiàn)異常后重啟或是更換機器可以暫時解決,這也是程序的一個隱患吧。五、該程序基本實現(xiàn)了類

7、似FLAPPY BIRD的功能,但還是有很多可以改進的地方,例如可以增加難度的選擇,這個可以通過改變地圖以及提高速度來實現(xiàn),另外數(shù)碼管只實現(xiàn)了顯示兩位數(shù)的功能,并未實現(xiàn)顯示三位數(shù)的功能。六、結(jié)束語短短的半個學期轉(zhuǎn)眼就過去,從這門課還是學到了不少知識,特別是對于微機原理書本上的知識有了更深入的了解,在調(diào)試綜合實驗的過程中,也提高了自己的動手能力、以及獨立處理問題的能力,熟練掌握了并行接口8255A、定時/計數(shù)器8253的基本用法,雖然這些都已經(jīng)過時,但其中的原理對于今后更深入的學習還是非常有幫助的,最后也感謝楊老師的耐心指導。七、附錄程序代碼及注釋STACK SEGMENT PARA STACK

8、DW 128H DUP(0) STACK ENDSdata segmentLED DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 67H, 77H, 7CH, 39H, 5EH, 79H, 71H;play1地圖db 080h, 0F8h, 0F8h, 080h, 080h, 080h, 0F0h, 0F0h, 080h, 080h, 080h, 0F8h, 0F8h,080h, 080h, 080hplay2db 001h, 01Fh, 01Fh, 001h, 001h, 001h, 03Fh, 03Fh, 001h, 001h, 001h

9、, 07Fh, 07Fh,001h, 001h, 001h;歡迎界面we1db 0ffh, 090h, 090h, 000h, 000h, 0ffh, 001h, 001h, 001h, 000h, 080h, 060h, 01Fh, 060h,080h, 000hwe2db 000h, 07Fh, 041h, 041h, 03Eh, 000h, 03Eh, 041h, 041h, 041h, 03Eh, 000h, 040h, 07Fh,040h, 000h;失敗界面lo1db 000h, 0ffh, 000h, 000h, 07Fh, 080h, 080h, 07Fh, 000h, 0FF

10、h, 081h, 081h, 000h, 0FFh,081h, 081hlo2db 000h, 0ffh, 001h, 001h, 0FEh, 001h, 001h, 0FEh, 000h, 001h, 001h, 0FFh, 000h, 0FFh,001h, 001hindex db 00h looptimer db 00h lose db 00h FALL DB 00H FALLTIME DB 00H;控制小鳥下降FALLDOWN DB 00H, 00H, 00h, 01H, 00H, 00H, 01H, 00H, 01H, 01H, 01H, 01H, 01H ,01H, 01H, 01

11、H, 01H, 01H, 01H, 01H, 01HSCORE DB 00H GETSCORE DB 00H EXC DB 00H HEIGHT DW 0100Hdata endscode segment;當前得分;小鳥當前位置astart:me cs:code, ds:dataMOV MOV MOVMOVAX,DS,DX,AX, 21HCS AXOFFSET IRQ250EH;初始化IRQ中斷CLI MOV MOV OUT INC MOVOUTDX,AL,DX, DX AL,DX,0EC4CH43H AL1DHALIN AL, 21HAND OUT MOVMOVAL, 10111111B 2

12、1H, ALAX, DATADS, AXMOV MOVOUTDX, 0E4BBH AL, 10010000BDX, AL;初始化8255,用于數(shù)碼管的顯示again:MOV MOVmov mov MOVMOVINDEX, 00H LOOPTIMER, 00Hlose, 00h height, 0100h FALL, 00HFALLTIME, 00H;初始化全局參數(shù)CALLEmov mov outmovdx,0e48bh al,80h dx,albx,00hs0:movmovdx,0e488hal,index;apush bxmovbx, offset play2;在點陣上刷新地圖xlatpxc

13、mp bl, 0fh jne w1call disp1w1:CMP BL, 7 JNE N0call disp2call down;是否刷新到小鳥所在列;顯示得分;控制小鳥下落CMP AL, 001HJE NPCMP JNE INCMOVGETSCORE, 0 NFSCOREGETSCORE, 1;判斷是否得分CALL BEEP;發(fā)出提示音P2:JMPNFNP:NF:MOVGETSCORE, 0PUSH BXMOVmovBX, HEIGHTah, altest bl, bl jz o1OR AL, BLcmp ah, al jne o1jmp outsPX;判斷是否撞上柱子o1:N0:out

14、dx,almov dx,0e489h;mov al,0feh;088h;bmov al,indexpush bxmov bx, offset play1 xlatpxCMP BL, 7JNE N1PUSH BXMOV BX, HEIGHTmov ah, al test bh, bh jz oOR AL, BHcmp ah, al jne ojmp outsPXo:N1:out dx,alinc indexcmp index, 010h jnz goonsub index, 010hJMP GOONJ: JMP S0goon:mov movoutdx,0e48ah al,bl;09h;bldx,

15、al;cCALL DELAY;延時函數(shù)add cmp jnz mov inc cmpjnzbl,1h bl,010h;0bh;0eh;8;010h key0bl,0 looptimerlooptimer,04fhkey0sub inc cmp jnzsublooptimer,04fh indexindex, 010h key0index, 010hkey0:movah,116h s0jmpouts:mov callcmplose, 1e lose, 1je exitsjmp exits:movagainah,4ch21hDOWNPROC NEAR PUSH AX PUSH BX PUSH DX

16、PUSH DSMOVMOVAX, DATADS, AXMOV INC MOV CMPJNEBL, FALLTIME BLFALLTIME, BLbl, 03fh QMOVMOVAL, FALLBX, OFFSET FALLDOWN;根據(jù)上次中斷后計時查表決定下落XLATMOVCL, ALMOVSHRBX, HEIGHTbx, clMOV HEIGHT, BXMOV BL, FALL INC BLMOV FALL, BLMOV FALLTIME, 0Q:POP DS POP DX P XPOP AX RETENDPDOWNDISP1 PROC NEAR PUSH AX PUSH BX PUSH

17、DXPUSH DS;顯示分數(shù)MOVMOVAX,DS,DATAAX;MOV DX, 0E4BBH;MOV AL, 10010000B;OUT DX, ALXORMOV MOVAH,AL,BL,AHSCORE 10IDIV BLPUSH AXMOV MOV OUTPOPAL,DX,DX, AX01H0E4B9H ALMOVMOVAL,BX,AHOFFSET LEDXLATMOVOUTDX,DX,0E4BAHALPOP DS POP DX P XPOP AX RETDISP1 ENDPDISP2 PROC NEAR PUSH AX PUSH BX PUSH DXPUSH DSMOVMOVAX,DS,

18、DATAAXMOV MOVOUTAL,DX,DX,02H0E4B9H ALXOR MOVMOVAH,AL,BL,AH SCORE10IDIV BLMOVBX,OFFSET LEDXLATMOVOUTDX,DX,0E4BAHALPOP POP P POPRETDS DX XAXDISP2 ENDPBEEPPROC NEAR PUSH AX PUSH BX PUSH CXMOV AL, 10110110B; 發(fā)出提示音OUT 43H, AL MOV AX, 1190 OUT 42H, AL MOV AL, AH OUT 42H, AL IN AL, 61H MOV AH, ALOR AL, 03H

19、OUTMOV MOV61H, AL CX, 0BL, 50L0:LOOP L0DEC JNZ MOV OUT POP P POP RETENDPBL L0AL, AH 61H, AL CXXAXBEEPDELAY PROC NEAR PUSH AXPUSH DX;延時函數(shù)MOV DX, 0E483H MOV AL, 10HOUT DX, ALMOV DX, 0E480H MOV AL, 80OUT DX, ALKKK:MOV DX, 0E4B8H IN AL, DX TEST AL, 01JZ KKKPOP DX POP AX RETDELAY ENDPE PROC near PUSH AX

20、PUSH BX PUSH CX PUSH DXPUSH DS;顯示歡迎和失敗界面movmovax,datads,axmov mov outmovdx,0e48bh al,80h dx,albx,0hA0:movdx,0e488h;a;mov al,07eh;33hmoval,indexpush bxcmplose, 00hje ae2mov jmpmovbx, offset lo2 be2bx, offset WE2ae2:be2:xlatpxoutmovdx,aldx,0e489h;mov al,0feh;088h;bmoval,indexpush bxcmplose, 00hje ae1mov bx, offset lo1 jmp be1mov bx, offset WE1 xlatpxae1:be1:out

溫馨提示

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

評論

0/150

提交評論