【正文】
e MOV AL,TON[BX] CMP AL,1 JE ISLOW CMP AL,2 JE ISMID CMP AL,3 JE ISHIGISLOW:MOV AL,LOU[SI] 。 READ PROC 。MUSIC MACRO 。AX=TRHY*0FFH LOPA: MOV CX,0FFFFHLOPC: NOP LOOP LOPC 。STACK39。12Three beat. RHY DB 4,2,2,2,2 DB 4,4,4 DB 4,2,2,2,2 DB 4,4,4 DB 4,2,2,2,2 DB 4,2,2,2,2 DB 4,2,2,2,2 DB 12 DB 4,2,2,2,2 DB 4,4,4 DB 4,2,2,2,2 DB 4,4,4 DB 4,2,2,2,2 DB 4,2,2,2,2 DB 4,2,2,2,2 DB 12 DB 4,2,2,2,2 DB 4,2,2,2,2 DB 4,2,2,2,2 DB 4,2,2,4 DB 2,2,2,2,2,2 DB 4,4,4 DB 4,4,4 DB 12 DB 4,2,2,4 DB 4,2,2,4 DB 4,4,4 DB 2,2,2,2,4 DB 2,2,2,2,2,2 DB 4,4,4 DB 2,2,4,4 DB 12 KEY DB 21H,0F4H,0F1H,39H,0D9H,0DDH,61H。RHY 1Quarter beat。流程圖源代碼DATA SEGMENT 。能在數(shù)據(jù)段存儲:音符(1~7)、音階(高中低)、音長(~3拍),等曲譜信息。實驗三 8253計數(shù)器/定時器的應(yīng)用一、實驗?zāi)康膶W(xué)習(xí)掌握8253用作定時器的編程原理。 CODE ENDS END MAIN六、實驗總結(jié) 本次實驗比較綜合:在實驗一的基礎(chǔ)上,利用I/O端口芯片進行綜合編程,也為實驗三打下基礎(chǔ)。 DELAY PROC 。Display 6 digits PUSH CX PUSH DX PUSH AX MOV BP,000FHLOPP:XOR SI,SI MOV CX,06H MOV DX,0E800H MOV AH,00000001BLOPD:MOV AL,ID[SI] OUT DX,AL MOV AL,AH 。Read Row info MOV BL,AL MOV DX,0E803H MOV AL,88H OUT DX,AL MOV AL,00H MOV DX,0E802H OUT DX,AL IN AL,DX 。All display unit has been occupied JE CLEAR JMP NEXTNFD: NOP 。No:wait until it is 。Key D means delete one digit JE DELETE CMP DI,14 JE EXIT 。Is the key 0~9? JBE ISNUM 。Set: DI + 1 MOV CX,16 MOV DI,OFFSET ARRAY REPNZ SCASB 。Read key state CMP AL,0FFH 。Clear all ID value INC SI LOOP LOPCDELETE: CMP DX,0 。 DB 100 DUP(0)STACK ENDS 。0~5 DB 0D9H,0DDH,61H,0FDH,0F9H 。IF BIT6=0 THEN PAUSE, NONINC SI INC SINONINC: CMP SI,BX JZ NEXT JMP DISPLAYNEXT: MOV SI,POINT JMP DISPLAYDELAY1MS PROC PUSH CX MOV CX,50OUTER: PUSH CX MOV CX,4000INNER: LOOP INNER POP CX LOOP OUTER POP CX RETDELAY1MS ENDPSTOP: MOV AL,0 MOV DX,AddrA OUT DX,AL MOV DX,AddrB OUT DX,AL MOV AH,4CH INT 21HCOD ENDS END START五、實驗結(jié)果(擴展部分)程序說明采用 行反轉(zhuǎn)法識別閉合鍵,把兩次讀取到的值相或; 16個按鍵分別對應(yīng)于16個這樣的值,依數(shù)值大小存成ARRAY數(shù)組;把向或得到的值與數(shù)組中的值比較,用在數(shù)組中的偏移量確定該按鍵所對應(yīng)的數(shù)值。MOV CX,83。5 CALL DELAY JMP DISPLAY。1 CALL DELAY SHOW 04H,c0 。7 CALL DELAY SHOW 10H,c8 。BIT0=1 FOR LZALDD: SHOW 01H,c2 。 6 位數(shù)碼管動態(tài)顯示 在數(shù)碼管電路 1-6 位數(shù)碼管上按下圖所示的規(guī)律,動態(tài)顯示字符串 HELLO,當(dāng)主機鍵盤按下任意鍵時結(jié)束。 3.了解七段數(shù)碼管顯示數(shù)字的原理。在最終版代碼中,創(chuàng)新性地在數(shù)據(jù)段中,使用了類似數(shù)組的存儲結(jié)構(gòu),存儲每個燈型的8次輸出對應(yīng)值,取代移位方法,打破了移位對燈型的限制。FOR OUTPUT INC SI CALL DELAY。AH IS A COPY OF AL AND AL,80H CMP AL,80H JNZ STOP。CHECK PAUSE OR STOP 。FOR DEBUG IN AL,DX。FOR OUTER LOOP MOV BL,0FFH。AH IS A COPY OF AL AND AL,30H。lighted leds 1by1 R to L S6 db 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH, 7EH 。1 led R to L S2 db 7FH, 7FH,0DFH,0DFH,0F7H,0F7H,0FDH,0FDH 。 B.通過輸出端口控制燈的工作狀態(tài)(低電平燈亮三、實驗結(jié)果程序說明跑馬燈程序共實現(xiàn):16種燈型、4種速度、暫停、退出等功能。北京郵電大學(xué)微機原理硬件實驗報告實驗1: 熟悉實驗環(huán)境及IO的使用 實驗2: 8255A并行接口應(yīng)用 實驗3: 8253計數(shù)器/定時器的應(yīng)用 班級:2010211128 序號: 9 學(xué)號: 10210775 姓名: 林鎮(zhèn)安 序號:14 學(xué)號: 10210780 姓名: 李達(dá)達(dá) 目錄實驗一 熟悉實驗環(huán)境及IO的使用 2一、實驗?zāi)康?2二、實驗內(nèi)容及要求 2三、實驗結(jié)果 2程序說明 2流程圖 4源代碼 6四、實驗總結(jié) 9實驗二 8255A并行接口應(yīng)用 9一、實驗?zāi)康?9二、實驗任務(wù)及內(nèi)容 96 位數(shù)碼管靜態(tài)顯示 106 位數(shù)碼管動態(tài)顯示 10擴展部分 10三、實驗結(jié)果1(6位數(shù)碼管靜態(tài)顯示) 10程序說明 10流程圖 11源代碼 11四、實驗結(jié)果2(6位數(shù)碼管動態(tài)顯示) 13程序說明 13流程圖 14源代碼 15五、實驗結(jié)果(擴展部分) 17程序說明 17流程圖 18源代碼 18六、實驗總結(jié) 22實驗三 8253計數(shù)器/定時器的應(yīng)用 22一、實驗?zāi)康?22二、實驗任務(wù)及內(nèi)容 221.音樂發(fā)生器 222.?dāng)U展部分 23三、實驗結(jié)果1(音樂發(fā)生器) 23程序說明 23流程圖 23源代碼 24四、實驗結(jié)果2(擴展部分) 29程序說明 29流程圖 29源代碼 30五、實驗總結(jié) 34實驗一 熟悉實驗環(huán)境及IO的使用一、實驗?zāi)康? . 通過實驗了解和熟悉實驗臺的結(jié)構(gòu),功能及使用方法。(使用 EDIT編輯工具)實現(xiàn)功能 A.通過讀入端口狀態(tài)(ON為低電平),選擇工作模式(燈的閃爍方式、速度等)。1 led L to R S1 db 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH, 7FH 。lighted leds 1by1 L to R S5 db 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H, 80H, 00H 。CHECK SPEED MOV AH,AL。 MOV BH,AL。MOV AL,40H。THE LAST CASESHAPEOK: MOV CX,08HBLINK: 。FOR INPUT MOV AH,AL。IF BIT3=1 THEN NOT MOV AL,[SI] JMP OUTPUTGETNOT: MOV AL,[SI] NOT ALOUTPUT: OUT DX,AL。在