




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、北京郵電大學(xué)微機(jī)原理硬件實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)1: 熟悉實(shí)驗(yàn)環(huán)境及IO的使用 實(shí)驗(yàn)2: 8255A并行接口應(yīng)用 實(shí)驗(yàn)3: 8253計(jì)數(shù)器/定時(shí)器的應(yīng)用 班級(jí):2010211128序號(hào): 9 學(xué)號(hào): 10210775 姓名: 林鎮(zhèn)安 序號(hào):14 學(xué)號(hào): 10210780 姓名: 李達(dá)達(dá) 目錄 TOC o 1-3 h z u HYPERLINK l _Toc343983907 實(shí)驗(yàn)一 熟悉實(shí)驗(yàn)環(huán)境及IO的使用 PAGEREF _Toc343983907 h 2 HYPERLINK l _Toc343983908 一、實(shí)驗(yàn)?zāi)康?PAGEREF _Toc343983908 h 2 HYPERLINK l _To
2、c343983909 二、實(shí)驗(yàn)內(nèi)容及要求 PAGEREF _Toc343983909 h 2 HYPERLINK l _Toc343983910 三、實(shí)驗(yàn)結(jié)果 PAGEREF _Toc343983910 h 2 HYPERLINK l _Toc343983911 1、程序說明 PAGEREF _Toc343983911 h 2 HYPERLINK l _Toc343983912 2、流程圖 PAGEREF _Toc343983912 h 4 HYPERLINK l _Toc343983913 3、源代碼 PAGEREF _Toc343983913 h 6 HYPERLINK l _Toc343
3、983914 四、實(shí)驗(yàn)總結(jié) PAGEREF _Toc343983914 h 9 HYPERLINK l _Toc343983915 實(shí)驗(yàn)二 8255A并行接口應(yīng)用 PAGEREF _Toc343983915 h 9 HYPERLINK l _Toc343983916 一、實(shí)驗(yàn)?zāi)康?PAGEREF _Toc343983916 h 9 HYPERLINK l _Toc343983917 二、實(shí)驗(yàn)任務(wù)及內(nèi)容 PAGEREF _Toc343983917 h 9 HYPERLINK l _Toc343983918 1、6 位數(shù)碼管靜態(tài)顯示 PAGEREF _Toc343983918 h 10 HYPER
4、LINK l _Toc343983919 2、6 位數(shù)碼管動(dòng)態(tài)顯示 PAGEREF _Toc343983919 h 10 HYPERLINK l _Toc343983920 3、擴(kuò)展部分 PAGEREF _Toc343983920 h 10 HYPERLINK l _Toc343983921 三、實(shí)驗(yàn)結(jié)果1(6位數(shù)碼管靜態(tài)顯示) PAGEREF _Toc343983921 h 10 HYPERLINK l _Toc343983922 1、程序說明 PAGEREF _Toc343983922 h 10 HYPERLINK l _Toc343983923 2、流程圖 PAGEREF _Toc343
5、983923 h 11 HYPERLINK l _Toc343983924 3、源代碼 PAGEREF _Toc343983924 h 11 HYPERLINK l _Toc343983925 四、實(shí)驗(yàn)結(jié)果2(6位數(shù)碼管動(dòng)態(tài)顯示) PAGEREF _Toc343983925 h 13 HYPERLINK l _Toc343983926 1、程序說明 PAGEREF _Toc343983926 h 13 HYPERLINK l _Toc343983927 2、流程圖 PAGEREF _Toc343983927 h 14 HYPERLINK l _Toc343983928 3、源代碼 PAGERE
6、F _Toc343983928 h 15 HYPERLINK l _Toc343983929 五、實(shí)驗(yàn)結(jié)果(擴(kuò)展部分) PAGEREF _Toc343983929 h 17 HYPERLINK l _Toc343983930 1、程序說明 PAGEREF _Toc343983930 h 17 HYPERLINK l _Toc343983931 2、流程圖 PAGEREF _Toc343983931 h 18 HYPERLINK l _Toc343983932 3、源代碼 PAGEREF _Toc343983932 h 18 HYPERLINK l _Toc343983933 六、實(shí)驗(yàn)總結(jié) PA
7、GEREF _Toc343983933 h 22 HYPERLINK l _Toc343983934 實(shí)驗(yàn)三 8253計(jì)數(shù)器/定時(shí)器的應(yīng)用 PAGEREF _Toc343983934 h 22 HYPERLINK l _Toc343983935 一、實(shí)驗(yàn)?zāi)康?PAGEREF _Toc343983935 h 22 HYPERLINK l _Toc343983936 二、實(shí)驗(yàn)任務(wù)及內(nèi)容 PAGEREF _Toc343983936 h 22 HYPERLINK l _Toc343983937 1音樂發(fā)生器 PAGEREF _Toc343983937 h 22 HYPERLINK l _Toc3439
8、83938 2擴(kuò)展部分 PAGEREF _Toc343983938 h 23 HYPERLINK l _Toc343983939 三、實(shí)驗(yàn)結(jié)果1(音樂發(fā)生器) PAGEREF _Toc343983939 h 23 HYPERLINK l _Toc343983940 1、程序說明 PAGEREF _Toc343983940 h 23 HYPERLINK l _Toc343983941 2、流程圖 PAGEREF _Toc343983941 h 23 HYPERLINK l _Toc343983942 3、源代碼 PAGEREF _Toc343983942 h 24 HYPERLINK l _To
9、c343983943 四、實(shí)驗(yàn)結(jié)果2(擴(kuò)展部分) PAGEREF _Toc343983943 h 29 HYPERLINK l _Toc343983944 1、程序說明 PAGEREF _Toc343983944 h 29 HYPERLINK l _Toc343983945 2、流程圖 PAGEREF _Toc343983945 h 29 HYPERLINK l _Toc343983946 3、源代碼 PAGEREF _Toc343983946 h 30 HYPERLINK l _Toc343983947 五、實(shí)驗(yàn)總結(jié) PAGEREF _Toc343983947 h 34實(shí)驗(yàn)一 熟悉實(shí)驗(yàn)環(huán)境及
10、IO的使用一、實(shí)驗(yàn)?zāi)康? 通過實(shí)驗(yàn)了解和熟悉實(shí)驗(yàn)臺(tái)的結(jié)構(gòu),功能及使用方法。 2 通過實(shí)驗(yàn)掌握直接使用Debug 的I、O 命令來讀寫IO端口。 3 學(xué)會(huì)Debug 的使用及編寫匯編程序二、實(shí)驗(yàn)內(nèi)容及要求1 學(xué)習(xí)使用 Debug 命令,并用 I、O 命令直接對(duì)端口進(jìn)行讀寫操作, 2 用匯編語言編寫跑馬燈程序。(使用 EDIT編輯工具)實(shí)現(xiàn)功能 A通過讀入端口狀態(tài)(ON為低電平),選擇工作模式(燈的閃爍方式、速度等)。 B通過輸出端口控制燈的工作狀態(tài)(低電平燈亮三、實(shí)驗(yàn)結(jié)果1、程序說明跑馬燈程序共實(shí)現(xiàn):16種燈型、4種速度、暫停、退出等功能。16種燈型(紅色點(diǎn)亮/白色熄滅),由SW0SW3控制(S
11、W3取反)。S0S8S1S9S2S10S3S11S4S12S5S13S6S14S7S154種速度,由SW4SW5控制SW5 SW4速度計(jì)數(shù)周期0 01倍速1*FFH*7FFH0 11/2倍速2*FFH*7FFH1 01/4倍速4*FFH*7FFH1 11/6倍速6*FFH*7FFH暫停,由SW6控制(執(zhí)行程序前必須置SW6=1)SW6=1 運(yùn)行SW6=0 暫停退出,由SW7控制(執(zhí)行程序前必須置SW7=1)SW7=1 運(yùn)行SW7=0 退出(返回DOS)2、流程圖3、源代碼DAT SEGMENT S0 db 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;1 le
12、d L to R S1 db 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH, 7FH ;1 led R to L S2 db 7FH, 7FH,0DFH,0DFH,0F7H,0F7H,0FDH,0FDH ;1 led L to R skip 2 S3 db 0FEH,0FEH,0FBH,0FBH,0EFH,0EFH,0BFH,0BFH ;1 led R to L skip 2 S4 db 7FH, 3FH, 1FH, 0FH, 07H, 03H, 01H, 00H ;lighted leds 1by1 L to R S5 db 0FEH,0FCH,0F8H,0F0H,0
13、E0H,0C0H, 80H, 00H ;lighted leds 1by1 R to L S6 db 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH, 7EH ;2 leds cross S7 db 0FFH, 7EH, 3CH, 18H, 00H, 18H, 3CH, 7EH ;led curtainDAT ENDSSTA SEGMENT STACK dw 100 dup(?)STA ENDS COD SEGMENTASSUME CS:COD,DS:DAT,SS:STADELAY PROC PUSH CX IN AL,DX;CHECK SPEED MOV AH,AL;AH
14、 IS A COPY OF AL AND AL,30H;BIT5/BIT4 IS SPEED CTRL ROR AL,1 ROR AL,1 ROR AL,1 ROR AL,1 ;OR AL,0FH; MOV BH,AL;FOR OUTER LOOP MOV BL,0FFH;FOR OUTER LOOP OUTER: MOV CX,07FF0H;FOR INNER LOOPINNER: NOP LOOP INNER DEC BX JNZ OUTER POP CX RETDELAY ENDPSTART: MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV D
15、X,0E8E0H MAIN: ;MOV AL,40H;FOR DEBUG IN AL,DX;FOR INPUT MOV AH,AL;AH IS A COPY OF ALSHAPE0: MOV AL,AH AND AL,07H CMP AL,00H JNZ SHAPE1 MOV SI,OFFSET S0 JMP SHAPEOKSHAPE1: MOV AL,AH AND AL,07H CMP AL,01H JNZ SHAPE2 MOV SI,OFFSET S1 JMP SHAPEOKSHAPE2: MOV AL,AH AND AL,07H CMP AL,02H JNZ SHAPE3 MOV SI,
16、OFFSET S2 JMP SHAPEOKSHAPE3: MOV AL,AH AND AL,07H CMP AL,03H JNZ SHAPE4 MOV SI,OFFSET S3 JMP SHAPEOKSHAPE4: MOV AL,AH AND AL,07H CMP AL,04H JNZ SHAPE5 MOV SI,OFFSET S4 JMP SHAPEOKSHAPE5: MOV AL,AH AND AL,07H CMP AL,05H JNZ SHAPE6 MOV SI,OFFSET S5 JMP SHAPEOKSHAPE6: MOV AL,AH AND AL,07H CMP AL,06H JN
17、Z SHAPE7 MOV SI,OFFSET S6 JMP SHAPEOKSHAPE7: MOV SI,OFFSET S7 ;THE LAST CASESHAPEOK: MOV CX,08HBLINK: ;CHECK PAUSE OR STOP ;MOV AL,40H;FOR DEBUG IN AL,DX;FOR INPUT MOV AH,AL;AH IS A COPY OF AL AND AL,80H CMP AL,80H JNZ STOP;IF BIT7=0 THEN STOP MOV AL,AH AND AL,40H CMP AL,40H JNZ BLINK;IF BIT6=0 THEN
18、 PAUSE MOV AL,AH AND AL,08H CMP AL,08H JZ GETNOT;IF BIT3=1 THEN NOT MOV AL,SI JMP OUTPUTGETNOT: MOV AL,SI NOT ALOUTPUT: OUT DX,AL;FOR OUTPUT INC SI CALL DELAY;FOR OUTPUT DELAY LOOP BLINK JMP MAINSTOP: MOV AL,0FFH OUT DX,AL MOV AH,4CH INT 21HCOD ENDS END START四、實(shí)驗(yàn)總結(jié)通過本次實(shí)驗(yàn),我了解并熟悉了實(shí)驗(yàn)臺(tái)的結(jié)構(gòu)、功能、使用方法;掌握讀寫IO
19、端口的基本方法;學(xué)會(huì)使用Debug及編寫匯編程序。本次實(shí)驗(yàn)中的代碼,從編寫,到修改,到最后定稿,經(jīng)歷的4個(gè)版本,每個(gè)版本都較前一次有質(zhì)的飛躍。在對(duì)每一個(gè)版本改進(jìn)的過程中,我都逐漸加深了對(duì)匯編語言的理解,鍛煉了匯編編程及應(yīng)用的能力。在最終版代碼中,創(chuàng)新性地在數(shù)據(jù)段中,使用了類似數(shù)組的存儲(chǔ)結(jié)構(gòu),存儲(chǔ)每個(gè)燈型的8次輸出對(duì)應(yīng)值,取代移位方法,打破了移位對(duì)燈型的限制。利用此方法,可以實(shí)現(xiàn)任意燈型。如果完全使用8個(gè)撥碼開關(guān)控制,能在一個(gè)程序中實(shí)現(xiàn)256種燈型:只需占用數(shù)據(jù)段的256*8=2k字節(jié),代碼段幾乎不用改動(dòng)。實(shí)驗(yàn)二 8255A并行接口應(yīng)用一、實(shí)驗(yàn)?zāi)康?掌握 8255A 的功能及方式 0、1 的實(shí)現(xiàn)
20、 2熟悉 8255A 與CPU 的接口,以及傳輸數(shù)據(jù)的工作原理及編程方法。 3了解七段數(shù)碼管顯示數(shù)字的原理。 4掌握同時(shí)顯示多位數(shù)字的技術(shù)。二、實(shí)驗(yàn)任務(wù)及內(nèi)容在實(shí)驗(yàn)一的基礎(chǔ)上學(xué)習(xí) PIO 芯片(8255 )編程應(yīng)用,熟悉平臺(tái)的主要內(nèi)容。1、6 位數(shù)碼管靜態(tài)顯示 在數(shù)碼管電路上靜態(tài)地顯示 6 位學(xué)號(hào),當(dāng)主機(jī)鍵盤按下任意鍵時(shí),停止顯示,返回DOS 。 2、6 位數(shù)碼管動(dòng)態(tài)顯示 在數(shù)碼管電路 16 位數(shù)碼管上按下圖所示的規(guī)律,動(dòng)態(tài)顯示字符串 HELLO,當(dāng)主機(jī)鍵盤按下任意鍵時(shí)結(jié)束。本實(shí)驗(yàn)應(yīng)在上面實(shí)驗(yàn)的基礎(chǔ)上完成,動(dòng)態(tài)顯示的速度可控制(快或慢),利用實(shí)驗(yàn)一讀入端口的功能 3、擴(kuò)展部分完成一個(gè)掃描鍵盤(
21、PC口)輸入自己的學(xué)號(hào),并在數(shù)碼管上顯示三、實(shí)驗(yàn)結(jié)果1(6位數(shù)碼管靜態(tài)顯示)1、程序說明在數(shù)碼管上靜態(tài)顯示學(xué)號(hào),可用撥碼開關(guān)切換同組兩個(gè)人的學(xué)號(hào):SW0=1林鎮(zhèn)安210775SW0=0李達(dá)達(dá)210780撥碼開關(guān)控制程序運(yùn)行/結(jié)束:(執(zhí)行程序前必須置SW7=1)SW7=1 運(yùn)行SW7=0 結(jié)束(返回DOS)2、流程圖3、源代碼DAT SEGMENT AddrA DW 0E800H AddrB DW 0E801H AddrC DW 0E802H AddrCTL DW 0E803H c0 db 0edh c1 db 21h c2 db 0f4h c3 db 0f1h c4 db 39h c5 db
22、0d9h c6 db 0ddh c7 db 61h c8 db 0fdh c9 db 0f9hDAT ENDSSTA SEGMENT STACK DB 100H DUP (?)STA ENDSCOD SEGMENT ASSUME CS:COD,DS:DAT,SS:STASHOW MACRO X,Y MOV AL,X MOV DX,AddrB OUT DX,AL MOV AL,Y MOV DX,AddrA OUT DX,AL ENDMSTOP: MOV DX,AddrB MOV AL,0 OUT DX,AL MOV AH,4CH INT 21HSTART: MOV AX,DAT MOV DS,A
23、X MOV AX,STA MOV SS,AX MOV AL,80H MOV DX,AddrCTL OUT DX,ALDISPLAY: MOV DX,0E8E0H IN AL,DX MOV AH,AL;AH IS A COPY OF AL AND AH,80H CMP AH,80H JNZ STOP;BIT7=0 FOR STOP AND AL,01H CMP AL,01H JZ LZA;BIT0=1 FOR LZALDD: SHOW 01H,c2 ;2 CALL DELAY SHOW 02H,c1 ;1 CALL DELAY SHOW 04H,c0 ;0 CALL DELAY SHOW 08H
24、,c7 ;7 CALL DELAY SHOW 10H,c8 ;8 CALL DELAY SHOW 20H,c0 ;0 CALL DELAY JMP DISPLAYLZA: SHOW 01H,c2 ;2 CALL DELAY SHOW 02H,c1 ;1 CALL DELAY SHOW 04H,c0 ;0 CALL DELAY SHOW 08H,c7 ;7 CALL DELAY SHOW 10H,c7 ;7 CALL DELAY SHOW 20H,c5 ;5 CALL DELAY JMP DISPLAY;DELAY FOR 1MSDELAY PROC MOV CX,50OUTER: PUSH C
25、X MOV CX,4000INNER: LOOP INNER POP CX LOOP OUTER RETDELAY ENDPCOD ENDS END START四、實(shí)驗(yàn)結(jié)果2(6位數(shù)碼管動(dòng)態(tài)顯示)1、程序說明在數(shù)碼管上動(dòng)態(tài)顯示“HELLO”,4種速度可調(diào)、暫停、退出。4種速度,由SW4SW5控制SW5 SW4速度計(jì)數(shù)周期0 01倍速1*1FH0 11/2倍速2*1FH1 01/4倍速4*1FH1 11/6倍速6*1FH暫停,由SW6控制(執(zhí)行程序前必須置SW6=1)SW6=1 運(yùn)行SW6=0 暫停退出,由SW7控制(執(zhí)行程序前必須置SW7=1)SW7=1 運(yùn)行SW7=0 退出(返回DOS)2、
26、流程圖3、源代碼DAT SEGMENT AddrA DW 0E800H AddrB DW 0E801H AddrC DW 0E802H AddrCTL DW 0E803H MESG DB 0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0 POINT DW MESGDAT ENDSSTA SEGMENT STACK DW 100H DUP (?)STA ENDS COD SEGMENT ASSUME CS:COD,DS:DAT,SS:STA SHOW MACRO X,Y MOV AL,X MOV DX,AddrB OUT DX,AL MOV AL,Y MOV DX,Addr
27、A OUT DX,AL ENDM START: MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV AL,80H;A/B/C IN MODE 0, OUTPUT MOV DX,AddrCTL OUT DX,AL MOV SI,POINT MOV BX,POINT ADD BX,7 DISPLAY: MOV DX,0E8E0H IN AL,DX AND AL,30H ROL AL,1 MOV CX,1FH OR CL,AL ;MOV CX,83; 0.5/(0.001*6)=83.333333SCAN: SHOW 01H,SI CALL DELAY1MS
28、SHOW 02H,SI+1 CALL DELAY1MS SHOW 04H,SI+2 CALL DELAY1MS SHOW 08H,SI+3 CALL DELAY1MS SHOW 10H,SI+4 CALL DELAY1MS SHOW 20H,SI+5 CALL DELAY1MS MOV DX,0E8E0H IN AL,DX MOV AH,AL;AH IS A COPY OF AL AND AL,80H CMP AL,80H JNZ STOP;IF BIT7=0 THEN STOP LOOP SCAN AND AH,40H CMP AH,40H JNZ NONINC;IF BIT6=0 THEN
29、 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 S
30、TART五、實(shí)驗(yàn)結(jié)果(擴(kuò)展部分)1、程序說明采用 行反轉(zhuǎn)法識(shí)別閉合鍵,把兩次讀取到的值相或; 16個(gè)按鍵分別對(duì)應(yīng)于16個(gè)這樣的值,依數(shù)值大小存成ARRAY數(shù)組;把向或得到的值與數(shù)組中的值比較,用在數(shù)組中的偏移量確定該按鍵所對(duì)應(yīng)的數(shù)值。在讀取到按鍵鍵盤輸入后,循環(huán)讀取按鍵鍵盤直到按鍵被釋放,以實(shí)現(xiàn)防抖。按鍵鍵盤上,C鍵清除所有輸入,D鍵清除最近一個(gè)輸入,E鍵退出程序,返回DOS。2、流程圖3、源代碼DATA SEGMENT ID DB 6 DUP(0) ARRAY DB 11100111B,11101011B,11101101B,11101110B DB 11010111B,11011011B,
31、11011101B,11011110B DB 10110111B,10111011B,10111101B,10111110B DB 01110111B,01111011B,01111101B,01111110B KEY DB 0EDH,21H,0F4H,0F1H,39H ;05 DB 0D9H,0DDH,61H,0FDH,0F9H ;69 DATA ENDS ;STACK SEGMENT STACK STACK DB 100 DUP(0)STACK ENDS ;CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK ; MAIN PROC FAR MOV AX
32、,DATA MOV DS,AX MOV ES,AX MOV DX,0E823H MOV AL,16H OUT DX,ALCLEAR:XOR DX,DX ; Record how many digits has been stored MOV CX,6 MOV AL,0 XOR SI,SILOPC: MOV IDSI,AL ;Clear all ID value INC SI LOOP LOPCDELETE: CMP DX,0 ;Do nothing if no digit JE NEXT DEC DX ;Digits number decrease one MOV AL,0 MOV SI,DX
33、 MOV IDSI,AL NEXT: CALL DISP ;Display the digits CALL READ ;Read key state CMP AL,0FFH ;No Key pressed ? JE NEXT ;No key pressed ;Key pressed! CLD ;Set: DI + 1 MOV CX,16 MOV DI,OFFSET ARRAY REPNZ SCASB ;Search array to find key code CMP CX,0 JE NFD ;Usually this is not going to ;happen,except sth wr
34、ong MOV BX,OFFSET ARRAY SUB DI,BX DEC DI CMP DI,9 ;Is the key 09? JBE ISNUM ;Key A and B not defined, ;reserve for future use. CMP DI,12 JE CLEAR ;Key C means clear all input digits CMP DI,13 ;Key D means delete one digit JE DELETE CMP DI,14 JE EXIT ;Key E means Exit the program. JMP NEXT ISNUM:NOPA
35、GN: CALL READ ;Key pressed! CMP AL,0FFH ;Has the key been released? JNE AGN ;No:wait until it is ;released;Yes:begin to judge the key. MOV AL,KEYDI MOV SI,DX MOV IDSI,AL ;Store the input number to memery. INC DX CALL DISP CMP DX,7 ;All display unit has been occupied JE CLEAR JMP NEXTNFD: NOP ;Unknow
36、n state,just terminate the program.EXIT:MOV AX,4C00H INT 21HMAIN ENDP ;READ PROC NEAR ;Read keyboard state, return key code PUSH DX MOV DX,0E803H MOV AL,81H OUT DX,AL MOV AL,00H MOV DX,0E802H OUT DX,AL IN AL,DX ;Read Row info MOV BL,AL MOV DX,0E803H MOV AL,88H OUT DX,AL MOV AL,00H MOV DX,0E802H OUT
37、DX,AL IN AL,DX ;Read Colum info OR AL,BL ;Keep info in AL for SCASB POP DX RET READ ENDP;DISP PROC NEAR ;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,IDSI OUT DX,AL MOV AL,AH ;Control which char to display INC DX OUT DX,AL ;
38、Control which LED on DEC DX ROL AH,1 INC SI CALL DELAY ;Every char need to delay LOOP LOPD DEC BP JNZ LOPP POP AX POP DX POP CX RET DISP ENDP; DELAY PROC ;Delay time PUSH AX PUSH CX MOV AX,0003H ;Outer loopLOP1: MOV CX,00H ;Inner loop LOOP $ DEC AX JNZ LOP1 POP CX POP AX RETDELAY ENDP ; CODE ENDS EN
39、D MAIN六、實(shí)驗(yàn)總結(jié)本次實(shí)驗(yàn)比較綜合:在實(shí)驗(yàn)一的基礎(chǔ)上,利用I/O端口芯片進(jìn)行綜合編程,也為實(shí)驗(yàn)三打下基礎(chǔ)。程序功能較復(fù)雜,代碼較繁雜。程序設(shè)計(jì)時(shí),采用結(jié)構(gòu)程序化方法自頂向下設(shè)計(jì),使用結(jié)構(gòu)程序化的思路,編寫多個(gè)子程序和宏,互相嵌套組合,實(shí)現(xiàn)復(fù)雜的功能。在具體實(shí)踐中,需掌握:子程序的用法,標(biāo)號(hào)及跳轉(zhuǎn)的配合,if邏輯、case邏輯、for循環(huán)邏輯、while循環(huán)邏輯在匯編語言中的實(shí)現(xiàn)方法,鍛煉了邏輯思維,強(qiáng)化了匯編的能力。實(shí)驗(yàn)三 8253計(jì)數(shù)器/定時(shí)器的應(yīng)用一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)掌握8253用作定時(shí)器的編程原理。二、實(shí)驗(yàn)任務(wù)及內(nèi)容1音樂發(fā)生器完成一個(gè)音樂發(fā)生器,通過蜂鳴器放出音樂,并在數(shù)碼管上顯
40、示樂譜。根據(jù)計(jì)數(shù)器的性質(zhì),計(jì)數(shù)值音符與計(jì)數(shù)值對(duì)照(PDF中給出表格有誤)1(do)2(re)3(mi)4(fa)5(so)6(la)7(si)低音1221089791817264中音61544845403632高音302724222018162擴(kuò)展部分利用小鍵盤實(shí)現(xiàn)彈琴功能,并顯示彈奏的樂譜。三、實(shí)驗(yàn)結(jié)果1(音樂發(fā)生器)1、程序說明完成一個(gè)音樂發(fā)生器,循環(huán)播放小步舞曲全曲。能在數(shù)據(jù)段存儲(chǔ):音符(17)、音階(高中低)、音長(zhǎng)(3拍),等曲譜信息。可以通過修改代碼中的數(shù)據(jù)段,演奏任意簡(jiǎn)單(只有高中低音域)簡(jiǎn)譜(17)樂曲。數(shù)碼管第一位顯示當(dāng)前播放的音符(17,不區(qū)分高中低音)。電腦鍵盤輸入任意鍵退
41、出程序返回DOS。2、流程圖3、源代碼DATA SEGMENT ;Counter/Timer Number LOU DB 122,108,97,91,81,72,64 MID DB 61,54,48,45,40,36,32 HIG DB 30,27,24,22,20,18,16 ;SongBooK XiaoBuWuQu BOK DB 5,1,2,3,4 DB 5,1,1 DB 6,4,5,6,7 DB 1,1,1 DB 4,5,4,3,2 DB 3,4,3,2,1 DB 7,1,2,3,1 DB 2 DB 5,1,2,3,4 DB 5,1,1 DB 6,4,5,6,7 DB 1,1,1 DB
42、4,5,4,3,2 DB 3,4,3,2,1 DB 2,3,2,1,7 DB 1 DB 3,1,2,3,1 DB 2,5,6,7,5 DB 1,6,7,1,5 DB 4,3,4,2 DB 2,3,4,5,6,7 DB 1,7,6 DB 7,2,4 DB 5 DB 5,1,7,1 DB 6,1,7,1 DB 5,4,3 DB 2,1,7,1,2 DB 5,6,7,1,2,3 DB 4,3,2 DB 3,5,1,7 DB 1 LEN EQU $-BOK ;TON 1-LOW,2-MID,3-HIG TON DB 2,2,2,2,2 DB 2,2,2 DB 2,2,2,2,2 DB 3,2,2 DB
43、 2,2,2,2,2 DB 2,2,2,2,2 DB 1,2,2,2,2 DB 2 DB 2,2,2,2,2 DB 2,2,2 DB 2,2,2,2,2 DB 3,2,2 DB 2,2,2,2,2 DB 2,2,2,2,1 DB 2 DB 3,3,3,3,3 DB 3,2,2,2,2 DB 3,2,2,3,2 DB 2,2,2,2 DB 2,2,2,2,2 DB 3,2,2 DB 2,2,2 DB 2 DB 2,2,1,2 DB 2,2,1,2 DB 2,2,2 DB 2,2,1,2,2 DB 1,1,1,2,2,2 DB 2,2,2 DB 2,2,2,1 DB 2 ;RHY 1-Quarte
44、r beat;2-Half beat;4-One beat;8-Two beat;12-Three 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
45、,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; 07 TBOK DB 0 TTON DB 0 ;never used TRHY DB 0 COUNT DB 0DATA ENDS;STACK SEGMENT STACK STACK DW 100H DUP(?)STACK ENDS;CODE SEGMENT ASSUME DS:DATA,CS:C
46、ODE,SS:STACK ;DELAY MACRO TIME LOCAL LOPA PUSH CX MOV AX,TIME ;AX=TRHY*0FFH LOPA: MOV CX,0FFFFHLOPC: NOP LOOP LOPC ;MOV CX,0H ;control time for dAX, 0FFH*188H for 0.25s ;LOOP $ DEC AX JNZ LOPA POP CXENDM;MUSIC MACRO ;Write counter/timer number, music on MOV AL,COUNT MOV DX,0E820H ;Use Counter 0 OUT
47、DX,AL ;Write counter 0ENDM; READ PROC ;Read one note/rhyme/tone MOV AL,BOKBX ;BX is the order in BOK/RHY/TON XOR AH,AH MOV SI,AX DEC SI MOV TBOK,AL ;Save note MOV AL,RHYBX MOV TRHY,AL ;Save rhyme MOV AL,TONBX CMP AL,1 JE ISLOW CMP AL,2 JE ISMID CMP AL,3 JE ISHIGISLOW:MOV AL,LOUSI ;Find counter/timer
48、 number JMP EXITRISMID:MOV AL,MIDSI JMP EXITRISHIG:MOV AL,HIGSI EXITR:MOV COUNT,AL ;Save counter/timer number RET READ ENDP ; RHYME PROC ;Control rhyme MOV AL,TRHY MOV AH,0FFH ;AH is time of Quarter beat MUL AH DELAY AX ;Rhyme, delay time in AX RETRHYME ENDP;DISP PROC ;Display note being played MOV
49、DX,0E800H MOV AL,BOKBX ;Get note XOR AH,AH MOV DI,AX DEC DI MOV AL,KEYDI ;Get note char OUT DX,AL MOV AL,00000001B ;Only one digit on MOV DX,0E801H OUT DX,AL RETDISP ENDP ; MAIN: ;Main program start here MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,0E823H ;Initialize 8253 MOV AL,00010110B ;Use counter 0 O
50、UT DX,AL MOV AL,80H ;initialize 8255 MOV DX,0E803H OUT DX,AL PLAY:MOV CX,LEN ;Get books length XOR BX,BX ;Record current char being playedLOP: CALL READ ;Read note/rhyme/tone CALL DISP ;Display note being played MUSIC ;Music on CALL RHYME ;Control rhyme INC BX ;Next note MOV AH,0BH ;Test keyboard fo
51、r OVER INT 21H OR AL, AL JNZ OVER ;Keyboard pressed, quit program LOOP LOP ;Loop until the end of music JMP PLAY ;Or go on to playOVER:MOV DX, 0E823H ;Reset 8253A MOV AL, 16H OUT DX, AL MOV AL, 0 ;Reset 8255A MOV DX, 0E801H OUT DX, AL MOV DX, 0E800H OUT DX, AL MOV AH,4CH ;Back to DOS INT 21H; CODE E
52、NDS END MAIN四、實(shí)驗(yàn)結(jié)果2(擴(kuò)展部分)1、程序說明能播放不同音符(17)和音階(高中低),SW0=1 SW1=0時(shí)低音,SW0=0 SW1=1時(shí)高音,其他情況中音。數(shù)碼管第一位顯示當(dāng)前播放的音符(17),第二位顯示“H”(高音)或“L”(低音)。按鍵鍵盤17對(duì)應(yīng)音符17,按鍵E退出返回DOS,按鍵C清除(保留)。2、流程圖3、源代碼DATA SEGMENT AddrA EQU 0e800h AddrB EQU 0e801h AddrC EQU 0e802h AddrCTL EQU 0e803h CAT DB 6 DUP(0) ;Store input note char;Keys
53、code ARRAY DB 11100111B,11101011B,11101101B,11101110B DB 11010111B,11011011B,11011101B,11011110B DB 10110111B,10111011B,10111101B,10111110B DB 01110111B,01111011B,01111101B,01111110B ;Char code 09 NUM DB 0EDH,21H,0F4H,0F1H,39H ;05 DB 0D9H,0DDH,61H,0FDH,0F9H ;69 ;Count number LOU DB 0,122,108,97,91,8
54、1,72,64 MID DB 0,61,54,48,45,40,36,32 HIG DB 0,30,27,24,22,20,18,16 DATA ENDS ;STACK SEGMENT STACK STACK DB 100 DUP(0)STACK ENDS ;CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK ; ;DELAY FOR 1MSDELAY1MS PROC PUSH CX MOV CX,50OUTER: PUSH CX MOV CX,4000INNER: LOOP INNER POP CX LOOP OUTER POP CX RETDELAY1
55、MS ENDP ; ;SHOW NUM ON CATsSHOW MACRO X,Y PUSH AX PUSH DX MOV AL,X MOV DX,AddrB OUT DX,AL MOV AL,Y MOV DX,AddrA OUT DX,AL POP DX POP AXENDM ; SCAN PROC PUSH SI MOV SI,Offset CAT SHOW 01H,SI CALL DELAY1MS SHOW 02H,SI+1 CALL DELAY1MS SHOW 04H,SI+2 CALL DELAY1MS SHOW 08H,SI+3 CALL DELAY1MS SHOW 10H,SI+
56、4 CALL DELAY1MS SHOW 20H,SI+5 CALL DELAY1MS POP SI RETSCAN ENDP MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,0E823H ;Initialize 8253A MOV AL,16H OUT DX,ALCLEAR:XOR DX,DX ;Record how many digits has been stored MOV CX,6 MOV AL,0 XOR SI,SILOPC: MOV CATSI,AL ;Clear all CAT value INC SI LOOP LOPCNEXT: CALL SCAN ;Display notes, can display 6 a
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 塔式卸料平臺(tái)施工方案
- 扶手油漆施工方案
- 2024-2025學(xué)年高二生物人教版選擇性必修3教學(xué)課件 第3章 第2節(jié) 第2課時(shí) 將目的基因?qū)胧荏w細(xì)胞、目的基因的檢測(cè)與鑒定
- 人工晶體治療
- 解鎖性格密碼-MBTI職業(yè)性格測(cè)試深度剖析課件
- 課題開題報(bào)告:湖北省高校創(chuàng)新創(chuàng)業(yè)教育典型模式與經(jīng)驗(yàn)調(diào)研
- 課題開題報(bào)告:核心素養(yǎng)導(dǎo)向下初中數(shù)學(xué)單元整體教學(xué)設(shè)計(jì)的實(shí)施策略研究
- 施工部署與施工方案
- 石料開采施工方案
- 深圳地鐵車站施工方案
- GB/T 13008-2010混流泵、軸流泵技術(shù)條件
- 2023年南充市煙草系統(tǒng)事業(yè)單位招聘筆試題庫及答案解析
- 《關(guān)于費(fèi)爾巴哈的提綱》
- 人力資源管理參考文獻(xiàn)(匯總112個(gè)最新),參考文獻(xiàn)
- HP工作站BIOS詳解參考模板
- 學(xué)憲法講憲法-課件
- 微專題:地理時(shí)空“尺度觀”思想課件
- 大學(xué)普通物理-習(xí)題答案(程守洙-江之勇主編-第六版)課件
- 2023年山東藥品食品職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試筆試題庫及答案解析
- 基于PLC的郵件分揀機(jī)控制系統(tǒng)設(shè)計(jì)
- 《工程化學(xué)》全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論