




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計實驗報告010812#跳舞機(jī)設(shè)計一.設(shè)計目的:掌握矩陣鍵盤和顯示接口的硬件設(shè)計方法掌握鍵盤掃描程序和顯示程序的編程方法實用程序設(shè)計及學(xué)習(xí)DOS、BIOS調(diào)用1.基本功能設(shè)計:至少設(shè)計4個數(shù)碼管和4個按鍵數(shù)碼管顯示的舞蹈動作是隨機(jī)的可以統(tǒng)計游戲者的分?jǐn)?shù)2.擴(kuò)展功能:電腦和實驗版上可以加一些聲光電的效果3.創(chuàng)新功能:, 作為正常,當(dāng)作反向應(yīng)用,即。二.系統(tǒng)方案:設(shè)計思路如下:產(chǎn)生4個隨機(jī)數(shù),將隨機(jī)數(shù)和方向?qū)?yīng)。將隨機(jī)方向顯示在數(shù)碼管上,從按鍵獲得方向輸入,比較兩方向的值。時間結(jié)束將統(tǒng)計到的正確值轉(zhuǎn)換成評分,輸出評分等級。程序分為以下幾大部分:主程序,RDNUM,DISPLAY,SCANNU
2、M1,CMPNUM。其中RDNUM 調(diào)用系統(tǒng)時間規(guī)范化產(chǎn)生隨機(jī)數(shù),載入BUF,;DISPLAY則將BUF1的數(shù)值在TABEL2查詢獲得數(shù)碼管值,并將內(nèi)容顯示出來;SCANNUM1循環(huán)調(diào)用DISPLAY以維持在掃描鍵值期間的數(shù)碼管顯示,同時監(jiān)控按鍵獲得鍵值,查詢TABE1將鍵值轉(zhuǎn)換為數(shù)值,超時則記為-1;CMPNUM調(diào)整鍵值和隨機(jī)數(shù),將他們的對應(yīng)域統(tǒng)一,形成映射,比較二者的值;主程序通過循環(huán)調(diào)用SCANNUM1持續(xù)監(jiān)控按鍵直到超時,4次調(diào)用CMPNUM,統(tǒng)計正確數(shù),最后對結(jié)果評分等級NICE,GOOD,PASS,FAIL,調(diào)用DISPLAY顯示評分。1.主程序:MOV AX,DATAMOV DS
3、,AX ;數(shù)據(jù)段段址送DS。MOV AX,STACKMOV SS,AX ;堆棧段段址送SS。MOV SP,OFFSET TOP ;獲取堆棧指針。MOV DX,0EE03H ;DX指向8255的D口。MOV AL,10001001B ;工作方式狀態(tài)控制字,表示方式0,端口C輸出。OUT DX,AL ;完成8255初始化。STEP1:CALL FAR PTR RDNUM ;調(diào)用RDNUM生成隨機(jī)數(shù),存儲于BUF。LEA DI,BUF ;DI傳遞當(dāng)前正在比較的隨機(jī)數(shù)。MOV CX,4 STEP2:CALL FAR PTR SCANNUM1 ;掃描鍵值,返回值star t初始化8255產(chǎn)生隨機(jī)數(shù),存入
4、緩存掃描鍵盤,將掃描到的鍵值存入緩存,超時則標(biāo)記-1比較隨機(jī)數(shù)和鍵值統(tǒng)計正確值數(shù)碼管顯示評分等級end存于BL。CALL FAR PTR CMPNUM ;比較數(shù)值。INC DI ;讀取下一個隨機(jī)數(shù)。LOOP STEP2;循環(huán)四次逐個鍵值掃描,比較。STEP3: ;將成績轉(zhuǎn)換對應(yīng)評分。MOV AX,RESULTCMP AL,4JE NICECMP AL,3JE GOODCMP AL,2JE PASSFAIL: ;成績小于2輸出FAIL。MOV AH,0FHMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,1HMOV BUF2,AHMOV BUF3,AHJMP STEP
5、4PASS: ;成績?yōu)?輸出PASS。MOV AH,21HMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,5HMOV BUF2,AHMOV BUF3,AHJMP STEP4GOOD: ;成績?yōu)?輸出GOOD。MOV AH,6HMOV BUF0,AHMOV AH,22HMOV BUF1,AHMOV BUF2,AHMOV AH,0HMOV BUF3,AHJMP STEP4NICE: ;成績?yōu)?輸出NICE。MOV AH,10HMOV BUF0,AHMOV AH,1HMOV BUF1,AHMOV AH,0CHMOV BUF2,AHMOV AH,0EHMOV BUF3,A
6、HJMP STEP4STEP4:MOV CX,9000STP5:CALL FAR PTR DISPLAY ;顯示評分。LOOP STP5 ;閃爍維持評分顯示。MOV AH,4CHINT 21HCODE1 SEGMENTASSUME CS:CODE1RDNUM PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DI ;寄存器保護(hù)。DO1:MOV AH,2CH ;2CH號功能調(diào)用,取系統(tǒng)時間:DL存放毫秒INT 21HMOV AL,DL ;將毫秒值除以5,調(diào)整隨機(jī)偏移量的取值在0-4之間。MOV AH,0MOV BL,5DIV BL ;AH是一個0-4的隨機(jī)數(shù)去查詢
7、偽隨機(jī)表。RDNU MRET獲取系統(tǒng)時間產(chǎn)生隨機(jī)數(shù)隨機(jī)數(shù)查表獲得偽隨機(jī)序列序列依次載入B UFLEA DI,TABLE3RDSCAN:MOV AL,DI ;將隨機(jī)表內(nèi)容放入AL。INC DIINC DI ;指向轉(zhuǎn)換表下一個查找字節(jié)。CMP AL,AH ;比較AL,AH。JNZ RDSCAN ;不等則繼續(xù)查找。MOV AL,DI-1 ;相等則開始查表對BUF賦值。MOV BUF0,ALMOV AL,DI+1MOV BUF1,AL MOV AL,SI+3 MOV BUF2,AL MOV AL,SI+5 MOV BUF3,ALPOP DIPOP DXPOP CXPOP BXPOP AXRET ;返回
8、。RDNUM ENDP CODE1 ENDSCODE2 SEGMENTASSUME CS:CODE2DISPLA Y PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIPUSH SI ;寄存器保護(hù)。MOV CX,4 ;循環(huán)顯示4個數(shù)碼管。LEA DI, BUF ;DI指向輸入的數(shù)據(jù)。MOV AH,00001000B ;由左至右顯示。DO2:MOV BL,DI ;將輸入數(shù)據(jù)放入BL。LEA SI,TABLE2 ;SI指向由BUF到LED數(shù)碼管的轉(zhuǎn)換表。MOV DX,0EE00H ;DX指向A口地址。MOV AL,0FFH ;顯示為空。OUT DX,AL ;將A
9、L內(nèi)容顯示。DO3:MOV BH,SI ;將轉(zhuǎn)換表內(nèi)容放入BH。MOV DH,0FFHINC SIINC SI ;指向轉(zhuǎn)換表下一個查找字節(jié)。CMP BL,BH ;比較BL,BH。JNZ DO3 ;在轉(zhuǎn)換表中查找對應(yīng)值。MOV DX,0EE01H ;將DX指向B口。MOV AL,AH ;給AL賦值(應(yīng)顯示那個數(shù)碼管。OUT DX,AL ;控制哪個管顯示。MOV DX,0EE00H ;將DX指向A口。MOV AL,SI-1 ;查找到的數(shù)碼管值寫入AL。OUT DX,ALDELAY: ;維持顯示,使數(shù)碼管數(shù)據(jù)顯示清晰。PUSH CXPUSH AXMOV AX,200REP1: ;用兩個循環(huán)來控制時延
10、。MOV CX,1000REP2:CX=4隨機(jī)數(shù)查表轉(zhuǎn)換8255輸出待顯值時延,維持顯示更新待顯值和數(shù)碼管CX=0?RETCX-1DISP LAYLOOP REP2DEC AXCMP AX,0JNZ REP1;AX不為0繼續(xù)循環(huán)。POP AXPOP CXROR AH,1 ;循環(huán)左移。INC DI ;更換下一個顯示數(shù)據(jù)。LOOP DO2 ;POP SIPOP DIPOP DXPOP CXPOP BXPOP AXRETDISPLA Y ENDP CODE2 ENDSCODE3 SEGMENTASSUME CS:CODE3SCANNUM1 PROC FARPUSH AXPUSH CXPUSH DXP
11、USH DIPUSH SI ;寄存器保護(hù),將BX作為參數(shù)傳遞的方式,不壓棧。MOV CX,SCANNUM ;控制掃描循環(huán)次數(shù)。SCANLOOP1:CALL FAR PTR DISPLAY ;調(diào)用DISPLAY 顯示。MOV AL,00001111BMOV DX,0EE05HAND AL,LEDOUT DX,AL ;74L374口高位置零。MOV DX,0EE02H ;控制C口。IN AL,DX ;將C口內(nèi)容讀到AL。AND AL,00001111B;取出AL低四位。CMP AL,00001111B ;判斷是否有鍵按下(無鍵按下時為全1。JE SCANLOOP3 ;無鍵值時跳轉(zhuǎn)。MOV AH,1
12、1101111B ;掃描第一行。SCANLOOP2:MOV AL,AH ;有鍵按下則開始掃描。MOV DX,0EE05HOUT DX,ALMOV DX,0EE02HIN AL,DXAND AL,00001111B;取出AL低四位。CMP AL,00001111B ;判斷是否有鍵按下(無鍵按下時為全1。JNE SCANLOOP4 ;有則譯鍵碼。ROL AH,1 ;AH左移讀取下一行。CMP AH,11111110B ;循環(huán)四次,各行掃完結(jié)束?JNZ SCANLOOP2 ;沒有則進(jìn)行下一次掃描。SCANLOOP3:LOOP SCANLOOP1MOV BL,0FFH ;超時標(biāo)記。JMP SCANLO
13、OP7 ;循環(huán)結(jié)束,跳出掃描。SCANLOOP4: ;鍵值查表。SCAN調(diào)用DISPLAY,顯示行輸出全0列輸入值=1111?行輸出初值A(chǔ)H=1110 1111行輸出 AH列輸入值=1111?AH左環(huán)移4行掃描完否?NNYNY調(diào)用DISPLAY,消抖讀入列值列輸入值=1111?調(diào)用DISPLAY,消抖獲得鍵值將鍵值譯碼放入BLDECXYRETCX=0?BL=-1Y(CX-1CXNNAND AH,0F0H ;AH帶有行號特征, AND后行特征位為0。MOV BL,ALOR BL,AH ;行列OR獲得鍵值。MOV DI,OFFSET TABLE1 ;獲取鍵值對應(yīng)表的地址。SCANLOOP5: ;鍵
14、值和隨機(jī)數(shù)映射。MOV BH,DIINC DIINC DICMP BL,BH ;鍵值和查表比較。JNZ SCANLOOP5MOV BL,DI-1 ;查到值放入BL。SCANLOOP6:CALL FAR PTR DISPLAY ;調(diào)用顯示。IN AL,DXAND AL,00001111BCMP AL,00001111B ;判斷按鍵是否松開。JNE SCANLOOP6 ;沒有繼續(xù)監(jiān)聽。SCANLOOP7:CALL FAR PTR DISPLAY ;消抖。POP SIPOP DIPOP DXPOP CXPOP AXRETSCANNUM1 ENDPCODE3 ENDSCODE4 SEGMENTASSU
15、ME CS:CODE4CMPNUM PROC FARPUSH CXPUSH DXPUSH SI ;寄存器壓棧保護(hù)。MOV BH,DI ;BH裝載隨機(jī)數(shù),BL裝載鍵值。CHANGE1: ;鍵值映射范圍調(diào)整。PUSH BXPUSH AXMOV AL,BLMOV AH,0 ;數(shù)值載入AX。MOV BL,4 ;除以4。DIV BLMOV DL,AH ;余數(shù)載入DL。POP AXPOP BXCHANGE2: ;隨機(jī)數(shù)映射范圍調(diào)整。PUSH BXPUSH AXMOV AL,BHSUB AL,10H ;將之前加上的10H減除。MOV AH,0 ;數(shù)值載入AX。MOV BL,4 ;除以4。DIV BLMOV
16、DH,AH ;余數(shù)載入DH。POP AXPOP BXCMP DL,DHJNZ WRONG1 ;不等則報錯。MOV CX,RESULTINC CXMOV RESULT,CX ;正確則計數(shù)。JMP END1WRONG1:MOV DL,07H ;按鍵出錯后主板上的蜂鳴器報警。MOV AH,02H ;調(diào)用系統(tǒng)報錯。CMPN UMBX載入隨機(jī)數(shù)和鍵值取余將值與四方向?qū)?yīng)比較隨機(jī)數(shù)與鍵值報錯相等?成績加1RET INT 21H END1: POP SI POP DXPOP CX RETCMPNUM ENDP CODE4 ENDS8255硬件原理及電路原理圖 一 與CPU 連接部分8255能并行傳送8位數(shù)據(jù)
17、,所以其數(shù)據(jù)線為8根D0D7。由于8255具有3個通道A 、B 、C ,所以只要兩根地址線就能尋址A 、B 、C 口及控制寄存器,故地址線為兩根A0A1。此外CPU 要對8255進(jìn)行讀、寫與片選操作,所以控制線為片選、復(fù)位、讀、寫信號。各信號的引腳編號如下:(1數(shù)據(jù)總線DB :編號為D0D7,用于8255與CPU 傳送8位數(shù)據(jù)。(2地址總線AB :編號為A0A1,用于選擇A 、B 、C 口與控制寄存器。(3控制總線CB :片選信號、復(fù)位信號RST 、寫信號、讀信號。當(dāng)CPU 要對8255進(jìn)行讀、寫操作時,必須先向8255發(fā)片選信號選中8255芯片,然后發(fā)讀信號或?qū)懶盘枌?255進(jìn)行讀或?qū)憯?shù)據(jù)的
18、操作。二 與外設(shè)接口部分根據(jù)定義,8255有3個通道A 、B 、C 與外設(shè)連接,每個通道又有8根線與外設(shè)連接,所以8255可以用24根線與外設(shè)連接,若進(jìn)行開關(guān)量控制,則8255可同時控制24路開關(guān)。各通道的引腳編號如下:(1A 口:編號為PA0PA7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù)。 (2B 口:編號為PB0PB7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù)。(3C 口:編號為PC0PC7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù),當(dāng)8255工作于應(yīng)答I/O 方式時,C 口用于應(yīng)答信號的通信。三 控制器8255將3個通道分為兩組,即PA0PA7與PC4PC7組成A 組,PB0PB7與PC0P
19、C3組成B 組。如圖7.5所示,相應(yīng)的控制器也分為A 組控制器與B 組控制器,各組控制器的作用如下:(1A 組控制器:控制A 口與上C 口的輸入與輸出。 (2B 組控制器:控制B 口與下C 口的輸入與輸出。當(dāng)向A1=1,A0=1的端口寄存器(即控制寄存器發(fā)送D7=1的控制字時,其作用為方式控制字,各個位的含義如圖所示 74LS374硬件原理及電路原理圖74LS374的管腳圖如圖:74LS374作為八上升沿D 觸發(fā)器,主要端口的含義: D0D7 數(shù)據(jù)輸入端OE 三態(tài)允許控制端(低電平有效 CP 時鐘輸入端 O0-O7 輸出端 電路接線如下:8255AP A 4P A 5P A 6P A 7P B
20、 7P B 6P B 5P B 4P B 3P A 3P A 2P A 1P A 0P C 7P C 6P C 5P C 4P C 3P C 2P C 1P C 0P B 0P B 1P B 2+5V 123456789def g DpC O M5a f bg C O MDpc d e 74LS374D 7D 6D 5D 4D 0D 1D 2D 3COM 4COMCOM 3COMCOM 2COMCOM 1COM COM 0COMP C 2P C 3P C 1P C 0D 4D 5D 6D 7ab c d e f gD pC O M 0C O M 1C O M 2C O M 3C O M 4C
21、O M 5三.其它技術(shù)要點(diǎn)LED 數(shù)碼顯示器擴(kuò)展:字型和字型碼對應(yīng):0,0C0H,01H,0F9H,05H,92H,06H,82H,0AH,88H,0CH,0C6H,0DH,0A1H,0EH,86H,0FH,84H,21H,8CH,22H,0A3H,10H,0C8H,11H,0F0H,12H,0C1H,13H,0C6H,14H,0F7H,15H,0CFH,16H,0FEH,17H,0F9H 。其中21H,22H 代表P 和O 。10H-17H表示,。 動態(tài)顯示原理:建立顯示緩沖區(qū)BUF:存放字形代碼,由運(yùn)算程序?qū)懭隑UF 顯示子程序DISPLAY 動態(tài)掃描顯示: 關(guān)顯示器:位選信號無效(全0
22、送字形代碼 送位選信號當(dāng)前位亮2ms 左右 重復(fù)亮下一位 顯示子程序DISPLAY:調(diào)用一次掃描6位,約12ms 每秒調(diào)用24次左右 DISPLAY 可用作延時矩陣鍵盤的擴(kuò)展:鍵盤采用行輸入列輸出的方式進(jìn)行控制,輸出不同的數(shù)值,讓不同的行生效,通過列輸入判斷列數(shù)值,把輸出數(shù)據(jù)和輸入數(shù)據(jù)組合起來計算鍵值。完成按鍵的確認(rèn)。 行輸出值 列輸入值 1110 1111 無鍵按下 1110 0 1101 1 1011 2 0111 3 1101 1111 無鍵按下 1110 41101 5 1011 6 0111 7 1011 鍵值轉(zhuǎn)換:采用查詢方式獲得鍵值,建立了TABLE1存儲對應(yīng)鍵值和特征值:TAB
23、LE1 DB 11101110B,0,11101101B,01H,11101011B,02H,.鍵盤的消除抖動處理:當(dāng)按鍵被按下時會引起抖動,抖動時間不超過15ms 。 ab cdef g DpCOM a f bg COM Dpc d e 引腳圖.COMa b c d e f gDp.共陽極按鍵按下前沿抖動后沿抖動處理的方法是:(1當(dāng)某按鍵被按下后,調(diào)用DISPLAY子程序,前沿消抖(2識別按鍵是否抬起(3按鍵抬起時也應(yīng)消除抖動隨機(jī)序列生成:系統(tǒng)調(diào)用產(chǎn)生隨機(jī)時間值,在循環(huán)調(diào)用時數(shù)值有很大的相關(guān)性,隨機(jī)性得不到保證。采用偽隨機(jī)碼列表查詢的方式由隨機(jī)時間值查詢序列獲得隨機(jī)序列,保證了隨機(jī)值的不重復(fù)
24、性。四.心得體會:通過本次設(shè)計,我們復(fù)習(xí)了微機(jī)原理與接口技術(shù)的相關(guān)知識,熟悉了8255, 74LS374的相關(guān)技術(shù),加深了對于匯編的理解和運(yùn)用,掌握矩陣鍵盤和顯示接口的硬件的設(shè)計方法,掌握鍵盤掃描程序和顯示程序的編程方法,無論是軟件還是硬件的相關(guān)方面,都有所收獲。由于設(shè)計的工作量比較大,代碼較長,使得我們形成了工作規(guī)劃的習(xí)慣與分治策略:將每個小功能模塊獨(dú)立以便于維護(hù)和可讀性,同時還加深了團(tuán)隊協(xié)作能力和溝通技巧。實踐出真知。我們雖然學(xué)習(xí)過微機(jī)原理與接口技術(shù),但是時間久遠(yuǎn),有點(diǎn)陌生了。通過本次設(shè)計,自己查詢資料,自己寫代碼并維護(hù),一個小小的失誤都導(dǎo)致運(yùn)行出錯,由此每一個程序的錯誤都記憶深刻,在設(shè)計
25、過程中必須萬分謹(jǐn)慎,牢記每個知識點(diǎn),這比書本上告訴我們的要來的高效得多。最后,感謝在本次設(shè)計幫助過我們的老師,同學(xué)。補(bǔ)充:完整代碼DA TA SEGMENTBUF DB 4 DUP(0 ;存儲隨機(jī)數(shù)。TABLE1 DB11101110B,0,11101101B,01H,11101011B,02H,11100111B,03H,11011110B,04H,11011101B,05H,11011011B,06H, 11010111B,07HDB10111110B,08H,10111101B,09H,10111011B,0AH,10110111B,0BH,01111110B,0CH,01111101B
26、,0DH,01111011B, 0EH,01110111B,0FH ;鍵值對應(yīng)表。TABLE2 DB 0,0C0H,01H,0F9H,05H,92H,06H,82H,0AH,88H,0CH,0C6H,0DH,0A1H,0EH,86H,0FH,8EHDB21H,8CH,22H,0A3H,10H,0C8H,11H,0F0H,12H,0C1H,13H,0C6H,14H,0F7H,15H,0CFH,16H,0FEH,17H,0 F9H ;鍵值對應(yīng)顯示表。TABLE3 DB 0,17H,1,11H,2,13H,3,15H,4,10H,5,12H,6,14H,7,16H ;定義偽隨機(jī)表SCANNUM DW
27、 9000 ;定義掃描次數(shù)。RESULT DW 0 ;定義成績。LED DB 11111010BDA TA ENDSSTACK SEGMENT STACKDW 256 DUP(? ;定義堆棧,預(yù)留256個單元。TOP LABEL WORD ;標(biāo)記棧頂。STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AX ;數(shù)據(jù)段段址送DS。MOV SS,AX ;堆棧段段址送SS。MOV SP,OFFSET TOP ;獲取堆棧指針。MOV DX,0EE03H ;DX指向8255的D口。MOV AL,1000
28、1001B ;工作方式狀態(tài)控制字,表示方式0,端口C輸出。OUT DX,AL ;完成8255初始化。STEP1:CALL FAR PTR RDNUM ;調(diào)用RDNUM生成隨機(jī)數(shù),存儲于BUF。LEA DI,BUF ;DI傳遞當(dāng)前正在比較的隨機(jī)數(shù)。MOV CX,4STEP2:CALL FAR PTR SCANNUM1 ;掃描鍵值,返回值存于BL。CALL FAR PTR CMPNUM ;比較數(shù)值。INC DI ;讀取下一個隨機(jī)數(shù)。LOOP STEP2;循環(huán)四次逐個鍵值掃描,比較。STEP3: ;將成績轉(zhuǎn)換對應(yīng)評分。MOV AX,RESULTCMP AL,4JE NICECMP AL,3JE GO
29、ODCMP AL,2JE PASSFAIL: ;成績小于2輸出FAIL。MOV AH,0FHMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,1HMOV BUF2,AHMOV BUF3,AHJMP STEP4PASS: ;成績?yōu)?輸出PASS。MOV AH,21HMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,5HMOV BUF2,AHMOV BUF3,AHJMP STEP4GOOD: ;成績?yōu)?輸出GOOD。MOV AH,6HMOV BUF0,AHMOV AH,22HMOV BUF1,AHMOV BUF2,AHMOV AH,0HMOV
30、 BUF3,AHJMP STEP4NICE: ;成績?yōu)?輸出NICE。MOV AH,10HMOV BUF0,AHMOV AH,1HMOV BUF1,AHMOV AH,0CHMOV BUF2,AHMOV AH,0EHMOV BUF3,AHJMP STEP4STEP4:STP5:CALL FAR PTR DISPLAY ;顯示評分。LOOP STP5 ;閃爍維持評分顯示。MOV AH,4CHINT 21HCODE ENDSCODE1 SEGMENTASSUME CS:CODE1RDNUM PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DI ;寄存器保護(hù)。DO1:
31、MOV AH,2CH ;2CH號功能調(diào)用,取系統(tǒng)時間:DL存放毫秒INT 21HMOV AL,DL ;將毫秒值除以5,調(diào)整隨機(jī)偏移量的取值在0-4之間。MOV AH,0MOV BL,5DIV BL ;AH是一個0-4的隨機(jī)數(shù)去查詢偽隨機(jī)表。LEA DI,TABLE3RDSCAN:MOV AL,DI ;將隨機(jī)表內(nèi)容放入AL。INC DIINC DI ;指向轉(zhuǎn)換表下一個查找字節(jié)。CMP AL,AH ;比較AL,AH。JNZ RDSCAN ;不等則繼續(xù)查找。MOV AL,DI-1 ;相等則開始查表對BUF賦值。MOV BUF0,ALMOV AL,DI+1MOV BUF1,ALMOV AL,DI+3M
32、OV BUF2,ALMOV AL,DI+5MOV BUF3,ALPOP DIPOP DXPOP CXPOP BXPOP AXRET ;返回。RDNUM ENDPCODE1 ENDSCODE2 SEGMENTASSUME CS:CODE2DISPLA Y PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIPUSH SI ;寄存器保護(hù)。MOV CX,4 ;循環(huán)顯示4個數(shù)碼管。LEA DI, BUF ;DI指向輸入的數(shù)據(jù)。MOV AH,00001000B ;(共陽管由左至右顯示。DO2:MOV BL,DI ;將輸入數(shù)據(jù)放入BL。LEA SI,TABLE2 ;SI指
33、向由BUF到LED數(shù)碼管的轉(zhuǎn)換表。MOV DX,0EE00H ;DX指向A口地址。MOV AL,0FFH ;顯示為空。OUT DX,AL ;將AL內(nèi)容顯示。DO3:MOV BH,SI ;將轉(zhuǎn)換表內(nèi)容(每相鄰兩個字節(jié)的第一字節(jié)放入BH。MOV DH,0FFHINC SIINC SI ;指向轉(zhuǎn)換表下一個查找字節(jié)。CMP BL,BH ;比較BL,BH。JNZ DO3 ;在轉(zhuǎn)換表中查找對應(yīng)值。MOV DX,0EE01H ;將DX指向B口。MOV AL,AH ;給AL賦值(應(yīng)顯示那個數(shù)碼管。OUT DX,AL ;控制哪個管顯示。MOV DX,0EE00H ;將DX指向A口。MOV AL,SI-1 ;查找
34、到的數(shù)碼管值寫入AL。OUT DX,ALDELAY: ;維持顯示,使數(shù)碼管數(shù)據(jù)顯示清晰。PUSH CXPUSH AXMOV AX,200REP1: ;用兩個循環(huán)來控制時延。MOV CX,1000REP2:LOOP REP2DEC AXCMP AX,0JNZ REP1;AX不為0繼續(xù)循環(huán)。POP AXPOP CXROR AH,1 ;循環(huán)左移。INC DI ;更換下一個顯示數(shù)據(jù)。LOOP DO2 ;POP SIPOP DIPOP DXPOP CXPOP BXPOP AXRETDISPLA Y ENDPCODE2 ENDSCODE3 SEGMENTASSUME CS:CODE3SCANNUM1 PR
35、OC FARPUSH AXPUSH CXPUSH DXPUSH DIPUSH SI ;寄存器保護(hù),將BX作為參數(shù)傳遞的方式,不壓棧。MOV CX,SCANNUM ;控制掃描循環(huán)次數(shù)。SCANLOOP1:CALL FAR PTR DISPLAY ;調(diào)用DISPLAY顯示隨機(jī)數(shù)。MOV AL,00001111BMOV DX,0EE05HAND AL,LEDOUT DX,AL ;74L374口高位置零。MOV DX,0EE02H ;控制C口。IN AL,DX ;將C口內(nèi)容讀到AL。AND AL,00001111B;取出AL低四位。CMP AL,00001111B ;判斷是否有鍵按下(無鍵按下時為全1。JE SCANLOOP3 ;無鍵值時跳轉(zhuǎn)。MOV AH,11101111B ;掃描第一行。SCANLOOP2:MOV AL,AH ;有鍵按下則開始掃描。MOV DX,0EE05HOUT DX,ALMOV DX,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 1584-2023 低壓電源系統(tǒng)的電涌保護(hù)器(SPD)
- 二零二五年度專業(yè)技術(shù)師徒傳承合作合同
- 2025年度門店合作線上線下融合營銷協(xié)議
- 二零二五年度不占股份分紅權(quán)益共享協(xié)議
- 二零二五年度招商引資合同中的政府與企業(yè)合作模式創(chuàng)新
- 2025年度終止供貨協(xié)議函范文模板與簽訂程序指導(dǎo)
- 二零二五年度綠色建筑產(chǎn)業(yè)廠房租賃服務(wù)協(xié)議
- 二零二五年度勞動合同法未簽訂合同員工競業(yè)禁止協(xié)議
- 二零二五年度物業(yè)安全管理人員勞動合同范本
- 二零二五年度消防安全設(shè)施設(shè)備安全評估與整改服務(wù)合同
- 《Spring框架》教學(xué)課件
- 七年級下冊《平行線的判定》課件與練習(xí)
- 2025年中考英語時文閱讀 6篇有關(guān)電影哪吒2和 DeepSeek的英語閱讀(含答案)
- 第四次工業(yè)革命ppt課件
- 水利工程水庫混凝土防滲墻施工方案
- 公路工程試驗常規(guī)檢測項目、檢測標(biāo)準(zhǔn)、檢測頻率、取樣方法(標(biāo)準(zhǔn)版)
- 圖解調(diào)音臺使用說明(共14頁)
- 員工人事檔案登記表(最終版)
- 服裝測量方法及圖示
- 地基承載力與擊數(shù)對照表(輕)
- 大連理工大學(xué)機(jī)械制圖習(xí)題集答案
評論
0/150
提交評論