歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

微機原理課程設(shè)計 音樂演奏

  • 資源ID:28389960       資源大?。?span id="2ismegy" class="font-tahoma">592.50KB        全文頁數(shù):27頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

微機原理課程設(shè)計 音樂演奏

武漢理工大學(xué)微機原理與接口技術(shù)課程設(shè)計說明書目錄摘要1音樂演奏21 設(shè)計任務(wù)及要求分析21.1設(shè)計任務(wù)21.2要求分析22 方案比較與選擇32.1方案一32.2方案二32.3方案選擇33 系統(tǒng)原理說明34 硬件電路與原理45 軟件設(shè)計55.1屏幕顯示程序設(shè)計55.2發(fā)聲的原理與控制程序75.3音樂編程85.3.1音樂節(jié)拍時間95.3.2音樂的音符頻率105.4 程序流程圖125.5 源程序146調(diào)試記錄及結(jié)果分析20結(jié)束語22參考文獻23附錄24摘要隨著科學(xué)技術(shù)的迅猛發(fā)展,計算機在各個領(lǐng)域的應(yīng)用越來越廣泛。計算機已成為人們生活、學(xué)習(xí)、工作中必備的工具。其中,匯編語言是計算機能夠提供給用戶使用的最快而有效的語言,也是能夠利用計算機所有特性并能直接控制硬件的唯一語言。借助于匯編程序,計算機本身可以自動地把匯編源程序翻譯成用機器語言表示的目的程序,從而實現(xiàn)了程序設(shè)計工作的部分自動化。音樂演奏實現(xiàn)的一個主要步驟是樂譜編程。通過相應(yīng)的頻率表將樂譜中對應(yīng)的音符轉(zhuǎn)化為計數(shù)器的計數(shù)初值,節(jié)奏通過延時程序利用硬件實現(xiàn)頻率計數(shù)和延時時間的控制,利用8253-5定時/計數(shù)器芯片和8255A并行I/O接口芯片。使8253的一個通道工作在“方波發(fā)生器”模式,實現(xiàn)對頻率的計數(shù);利用8255A的PB3端口實現(xiàn)發(fā)聲時間的計數(shù)控制。轉(zhuǎn)化為對喇叭發(fā)音時間的控制,從而實現(xiàn)音符和節(jié)拍的數(shù)字化。知道了音調(diào)與頻率和時間的關(guān)系,就可以按照樂曲的曲譜將每個音符的頻率和持續(xù)時間定義成兩個數(shù)據(jù)表;然后編寫程序一次取出表中的頻率和時間值,調(diào)用程序發(fā)出各種聲音。這個程序最終通過菜單所提示的信息選取音樂。以80X86未處理器為 對象,以8253為計數(shù)器的核心,通過宏指令和BOIS系統(tǒng)功能的調(diào)用,以及運 用MASM軟件在PC機上來進行調(diào)試和運行,從而模擬地來實現(xiàn)“音樂演奏”的目的。關(guān)鍵詞:樂譜編程 8253定時/計數(shù)器 MASM 音樂演奏音樂演奏1 設(shè)計任務(wù)及要求分析1.1設(shè)計任務(wù)編寫音樂程序,按大寫字母“A”,奏一首歌曲;按大寫字母“B”;奏另一首歌曲,曲目自選。按Q退出程序。(盡量演奏完整曲目)1.2要求分析在PC機中都帶有8253-5定時/計數(shù)器,IBM-PC/AT中帶有8254定時/計數(shù)器,這兩種芯片功能十分類似。本文通過對8253-5定時/計數(shù)器芯片的操作實現(xiàn)音樂演奏。該聲音接口通過匯編語言對8253-5的端口直接進行操作,可以不必要過多的使用BIOS的調(diào)用和DOS的調(diào)用。計數(shù)器芯片有3個通道,各自具有專用功能。通道0時系統(tǒng)的始終節(jié)拍計時器,通道1專用于產(chǎn)生動態(tài)RAM的定時刷新信號,通道2用來控制計算機的揚聲器的聲音頻率。該音樂演奏主要用到通道2的功能,使通道2工作在“方波發(fā)生器”方式,產(chǎn)生相應(yīng)頻率的音調(diào)送至喇叭驅(qū)動電路,使喇叭發(fā)出不同音調(diào)的聲音。使用8255A的PB1控制通道2的輸出對揚聲器產(chǎn)生控制的時間。人機交互包括屏幕顯示提示語以及人工輸入相應(yīng)參數(shù),主要應(yīng)用到BIOS的10H號中斷調(diào)用以及DOS的21H號中斷調(diào)用。BIOS的10H號中斷調(diào)用用于顯示器驅(qū)動,設(shè)置顯示模式和光標(biāo)位置;DOS的21H號中斷調(diào)用用于單字符輸入以及多字符輸出顯示。音樂演奏實現(xiàn)的一個主要步驟是樂譜編程。通過相應(yīng)的頻率表將樂譜中對應(yīng)的音符轉(zhuǎn)化為計數(shù)器的計數(shù)初值,節(jié)奏通過延時程序轉(zhuǎn)化為對喇叭發(fā)音時間的控制,從而實現(xiàn)音符和節(jié)拍的數(shù)字化。2 方案比較與選擇2.1方案一通過編程使用軟件來實現(xiàn)計數(shù)和喇叭發(fā)聲的時間設(shè)置,控制8255A并行I/O接口驅(qū)動喇叭發(fā)聲。CPU每執(zhí)行一條指令需要耗費一定的時間,這樣可以通過循環(huán)的方式設(shè)置好循環(huán)次數(shù),實現(xiàn)軟件計數(shù),然后輸出相應(yīng)的高低電平,驅(qū)動喇叭發(fā)出對應(yīng)頻率和節(jié)拍的聲音。2.2方案二利用硬件實現(xiàn)頻率計數(shù)和延時時間的控制,利用8253-5定時/計數(shù)器芯片和8255A并行I/O接口芯片。使8253的一個通道工作在“方波發(fā)生器”模式,實現(xiàn)對頻率的計數(shù);利用8255A的PB1端口實現(xiàn)發(fā)聲時間的計數(shù)控制。這樣可以精確的控制時間,減少CPU的開支。2.3方案選擇方案一的優(yōu)點是可以減少硬件開支,便于調(diào)試和問題的查找。缺點是CPU開支太大,利用率不高,而且時間不夠精準(zhǔn);方案二的優(yōu)點是控制精度提高,同時也減少CPU的開支。缺點是硬件開銷比較多。本設(shè)計實現(xiàn)的功能所需要的硬件電路并不是太復(fù)雜,一般的IBM-PC/XT/AT機家族都帶有相應(yīng)的硬件電路。在提高精度與簡易程度的比較下,決定采用方案二,這樣可以大大提高時間控制精度,同時減少軟件程序的復(fù)雜度。3 系統(tǒng)原理說明在IBM-PC/XT機中都帶有8253-5定時/計數(shù)器,本文通過對8253-5定時/計數(shù)器芯片的操作實現(xiàn)音樂演奏。該聲音接口通過匯編語言對8253-5的端口直接進行操作,可以不必要過多的使用BIOS的調(diào)用和DOS的調(diào)用。計數(shù)器芯片有3個通道,各自具有專用功能。通道0時系統(tǒng)的始終節(jié)拍計時器,通道1專用于產(chǎn)生動態(tài)RAM的定時刷新信號,通道2用來控制計算機的揚聲器的聲音頻率。該音樂演奏主要用到通道2的功能,使通道2工作在“方波發(fā)生器”方式,產(chǎn)生相應(yīng)頻率的音調(diào)送至喇叭驅(qū)動電路,使喇叭發(fā)出不同音調(diào)的聲音。使用8255A的PB0控制通道2的計數(shù),PB1控制通道2的輸出對揚聲器產(chǎn)生控制的時間。人機交互包括屏幕顯示提示語以及人工輸入相應(yīng)參數(shù),主要應(yīng)用到BIOS的10H號中斷調(diào)用以及DOS的21H號中斷調(diào)用。BIOS的10H號中斷調(diào)用用于顯示器驅(qū)動,設(shè)置顯示模式和光標(biāo)位置;DOS的21H號中斷調(diào)用用于單字符輸入以及多字符輸出顯示。音樂演奏實現(xiàn)的一個主要步驟是樂譜編程。通過相應(yīng)的頻率表將樂譜中對應(yīng)的音符轉(zhuǎn)化為計數(shù)器的計數(shù)初值,節(jié)奏通過延時程序轉(zhuǎn)化為對喇叭發(fā)音時間的控制,從而實現(xiàn)音符和節(jié)拍的數(shù)字化。4 硬件電路與原理IBM-PC/XT內(nèi)部8253電路圖如圖4-1所示。圖4-1 8253電路連接圖8253的通道0用于產(chǎn)生固定頻率的時鐘節(jié)拍,通道1用于產(chǎn)生固定頻率的的刷新信號,通道2用于產(chǎn)生頻率信號,工作在方式3,計數(shù)值為6A4H=1190,方波輸出頻率為1.19MHZ。此信號頻率決定揚聲器的音調(diào),通道2的控制字為0B6H。音樂產(chǎn)生主要用到通道2。8253通道2的計數(shù)由8255A的PB0控制,當(dāng)PB0輸出為高電平時,使門控GATE2為高電平。此時,8253通道2允許計數(shù),故通道2的輸出方波受PB0的控制,從而控制揚聲器的音調(diào)高低。通道2的輸出能否對揚聲器產(chǎn)生持續(xù)控制還取決于8255A的PB1。當(dāng)PB1為“0”時,OUT2不能通過“與門”;反之,則可以通過“與門”控制揚聲器。所以,揚聲器發(fā)音時間的長短取決于8255A的PB1信號。另外CPU通過讀8255A的C口,得知8253通道2的狀態(tài)和揚聲器驅(qū)動器的狀態(tài)。5 軟件設(shè)計5.1屏幕顯示程序設(shè)計程序運行時,屏幕顯示第一界如圖圖5-1運行界面輸入錯誤時,提示信息界面如圖圖5-2,錯誤提示界面上述提示信息在數(shù)據(jù)段定義,類型為字節(jié)型。首先調(diào)用BIOS中斷的10H號功能設(shè)置文本模式。程序如下: MOV AH,00H ;BIOS 10子功能 MOV AL,02H ;80*25彩色文本模式 INT 10H ;BIOS 10功能調(diào)用然后調(diào)用背景清屏子程序使文本屏幕清空,為輸入信息作準(zhǔn)備,清屏子程序如下:CLR PROC NEAR MOV BH,0 ;第0頁 MOV BL,0EH ;字符屬性,黑底黃字 MOV DX,0000H ;0行0列 MOV AL, ;輸出的字符 MOV CX,80*25 ;循環(huán)次數(shù) MOV AH,02H ;BIOS 10H子功能調(diào)用,置光標(biāo)位置 INT 10H MOV AH,09H ;BIOS 10H子功能調(diào)用,輸出字符 INT 10H RETCLR ENDP最后輸出提示語字符。輸出提示語字符時,需要多次使用一段相同的輸出代碼,將該代碼定義為宏,可以避免多次重復(fù)書寫相同的代碼。不定義為子程序是為了避免多次調(diào)用使執(zhí)行速度減慢。相應(yīng)宏定義語句為:SHOW MACRO b LEA DX, b ;將相應(yīng)字符段的偏移地址裝入DX MOV AH, 9 ;DOS 21H號中斷9子功能輸出多字符 INT 21H ENDM則相應(yīng)的字符提示信息輸出代碼為INFO1 DB 0DH,0AH, Music player$ INFO2 DB 0DH,0AH, -$INFO3 DB 0DH,0AH, PLEASE SELECT A MUSIC $ INFO4 DB 0DH,0AH, -$ INFO5 DB 0DH,0AH, ERROR! INPUT A B or Q$ INFO6 DB 0DH,0AH, PLEASE INPUT AGAIN!$ MUSLIST DB 0DH,0AH, A LAN HUA CAO DB 0DH,0AH, B HAPPY BIRTHDAY TO YOU DB 0DH,0AH, Q EXIT DB 0DH,0AH, DB 0DH,0AH, $5.2發(fā)聲的原理與控制程序一首樂曲由若干音符組成,一個音符對應(yīng)一個頻率。將與一個頻率對應(yīng)的計數(shù)器初值寫入2號計數(shù)器(端口地址為42H),揚聲器就發(fā)出相應(yīng)的音調(diào),計數(shù)器初值的計算公式:計數(shù)器初值=1193182/輸出頻率其中,1193182Hz轉(zhuǎn)換成十六進制為12348CH,因此在打開揚聲器的條件下,執(zhí)行下列程序段即可發(fā)出與輸出頻率對應(yīng)的音調(diào)。MOV AL,0B6H ;寫入方式控制字OUT 43H,AL ;寫入控制端口MOV DX,12H MOV AX,348CH DIV 頻率值 ;頻率轉(zhuǎn)換成計數(shù)初值 OUT 42H,AL ;低8位送2號計數(shù)器 MOV AL,AH OUT 42H,AL ;高位送2號計數(shù)器 接下來設(shè)計發(fā)聲程序,發(fā)聲系統(tǒng)受8255A芯片(端口地址為60H-63H)的兩根輸出線PB0和PB1的控制,PB0輸出的高電平使2號計數(shù)器正常工作,PB1輸出高電平打開輸出控制門。發(fā)聲程序代碼如下:IN AL,61H ;讀取8255A的PB端口原輸出值MOV AH,AL ;將原輸出值保存于AH中OR AL,3 ;使PB0、PB1、均為1OUT 61H,AL ;打開GATE2門,輸出方波到揚聲器5.3音樂編程一首歌曲包含節(jié)拍和頻率,此處定義的音樂地址宏包含兩個參數(shù),所以音樂編程需要對音樂的節(jié)拍時間以及樂譜(頻率)進行編寫程序。當(dāng)選擇不同的歌曲時,主程序調(diào)用不同的宏,將用戶要求的歌曲的頻率和節(jié)拍導(dǎo)入,實現(xiàn)音樂的演奏。5.3.1音樂節(jié)拍時間控制音符的演奏時間,這是設(shè)計音樂程序的關(guān)鍵問題。最直觀的方法是按照譜為每一個音符規(guī)定一個演奏時間。在遇到一首不熟悉歌曲時,初期很難確定每個音符的演唱時間,而調(diào)試程序的需大量的時間。為每一個音符規(guī)定“單位時間”: 單位時間*N=音符的延長時間其中,N為調(diào)試參數(shù),一首歌曲只有一個調(diào)試參數(shù)。設(shè)計程序時可以用EQU偽指令定義調(diào)試參數(shù),初值現(xiàn)行估算,調(diào)試時在修改它。節(jié)拍時間設(shè)置好以后,就可以利用延時程序,通過PB1端口控制發(fā)聲的時間長短。80x86的各種處理器采用6-66MHZ的工作頻率,LOOP治理的執(zhí)行時間在這些處理器上也不同。為了建立一個與處理器無關(guān)的時間延遲,IBM采用了一個利用硬件產(chǎn)生時間延遲的方法,即通過監(jiān)控端口61H的PB4,使PB4每15.08us觸發(fā)一次,以產(chǎn)生一個固定不變的時間基準(zhǔn),在IBM-PC/XT 中的BIOS中的WAITF子程序,就是一個產(chǎn)生N*15.08us時間延遲的程序,調(diào)用WAITF子程序時,CX寄存器必須裝入15.08us的倍數(shù)N。本程序延時程序參考上面的原理,代碼如下:waitf proc near ;延時保護程序 push ax ;保護寄存器waitf1: in al,61h ;讀取PB端口地址 and al,10h ;低四位清零 cmp al,ah ;檢查是否改變 je waitf1 ;等待改變 mov ah,al ;改變,保護新端口值 loop waitf1 ;繼續(xù),直到CX=0 pop ax ;恢復(fù)寄存器 ret waitf endp 5.3.2音樂的音符頻率程序用MUS_FREG、MUS_TIME分別定義了音樂頻率和節(jié)拍。使得發(fā)聲程序可以按照理想的要求發(fā)出連續(xù)的樂曲。節(jié)拍和頻率定義原理如下:樂曲是按照一定的高低、長短和強弱關(guān)系組成的音調(diào),在每一首樂曲中,每個音符的音高和音長與發(fā)聲系統(tǒng)中的頻率、節(jié)拍有關(guān)??蓞⒖枷卤恚罕?-1 音符頻率音名CDEFGABCDEFGABC唱名12345671234567i頻率131147165175196220247262294330349392440492523其中,低音階從低音C(131HZ)到中央C(262HZ),高音階從中央C(262HZ)到高音C(523HZ)。組成樂曲的音符的頻率值和持續(xù)時間是樂曲程序發(fā)聲所必需的兩組數(shù)據(jù),頻率可以查上表,音符的持續(xù)時間根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確定。知道了音調(diào)及頻率、時間的關(guān)系后,可以按照樂曲的樂譜將每個音符的頻率和持續(xù)時間定義為兩個數(shù)據(jù)表,然后編寫程序依次取出表中的頻率值和時間值。本次設(shè)計所選的兩首音樂樂譜如圖圖5-3 蘭花草樂譜圖5-4生日快樂樂譜根據(jù)上述原理對兩首音樂進行編程,得到的程序為;* 蘭花草MUS_FREG1 DW 220,330,330,330,330,294 DW 262,294,262,247,220 DW 4 dup(440),440,392 DW 330,392,392,349,330 DW 330,440,440,392,330,294 DW 262,294,262,247,220,165 DW 165,262,262,247,220,330 DW 294,262,247,196,220,-1MUS_TIME1 DW 30,30,30,30,60,30 DW 30,15,30,30,120 DW 30,30,30,30,80,30 DW 30,30,30,30,120 DW 30,30,30,30,60,3025DW 30,30,30,30,60,60 DW 30,30,30,30,60,60 DW 30,15,30,30,120MUS_FREG2 DW 196,196,220,196,262,247 DW 196,196,220,196,294,262 DW 196,196,392,330,262,247,220 DW 349,349,330,262,294,262,-1 MUS_TIME2 DW 30,30,60,60,60,120 DW 30,30,60,60,60,120 DW 30,30,60,60,60,60,60 DW 30,30,60,60,60,1205.4 程序流程圖主流程圖開始鍵盤輸入提示信息輸入是“Q”? Y N 輸入是“B”?輸入是“A”?調(diào)用MUSIC Y顯示出錯信息N調(diào)用MUSIC Y退出N圖5-5 主程序流程圖GENSOUND子程序流程圖BX=0?返回MUSIC恢復(fù)寄存器調(diào)用WAITF設(shè)置CX初始值計數(shù)初值裝入2號計數(shù)器求取發(fā)聲頻率設(shè)置計數(shù)器2工作方式寄存器入棧程序調(diào)用開始計數(shù)并打開揚聲器 Y N圖5-6 GENSOUND子程序流程圖 MUSIC子程序流程圖圖5-7 music子程序流程圖5.5 源程序DATA SEGMENT INFO1 DB 0DH,0AH, Music player$ INFO2 DB 0DH,0AH, -$INFO3 DB 0DH,0AH, PLEASE SELECT A MUSIC $ INFO4 DB 0DH,0AH, -$ INFO5 DB 0DH,0AH, ERROR! INPUT A B or Q$ INFO6 DB 0DH,0AH, PLEASE INPUT AGAIN!$ MUSLIST DB 0DH,0AH, A LAN HUA CAO DB 0DH,0AH, B HAPPY BIRTHDAY TO YOU DB 0DH,0AH, Q EXIT DB 0DH,0AH, DB 0DH,0AH, $ ;* 蘭花草MUS_FREG1 DW 220,330,330,330,330,294 DW 262,294,262,247,220 DW 4 dup(440),440,392 DW 330,392,392,349,330 DW 330,440,440,392,330,294 DW 262,294,262,247,220,165 DW 165,262,262,247,220,330 DW 294,262,247,196,220,-1MUS_TIME1 DW 30,30,30,30,60,30 DW 30,15,30,30,120 DW 30,30,30,30,80,30 DW 30,30,30,30,120 DW 30,30,30,30,60,30 DW 30,30,30,30,60,60 DW 30,30,30,30,60,60 DW 30,15,30,30,120;*happy birthday to youMUS_FREG2 DW 196,196,220,196,262,247 DW 196,196,220,196,294,262 DW 196,196,392,330,262,247,220 DW 349,349,330,262,294,262,-1 MUS_TIME2 DW 30,30,60,60,60,120 DW 30,30,60,60,60,120 DW 30,30,60,60,60,60,60 DW 30,30,60,60,60,120;* DATA ENDS STACK SEGMENT DB 200 DUP (STACK) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX MOV AH,00H ;BIOS 10子功能 MOV AL,02H ;80*25彩色文本模式 INT 10H ;BIOS 10功能調(diào)用 CALL CLR ;* 定義宏 SHOW MACRO b LEA DX,b ;將提示語的偏移地址送入DX MOV AH,9 ;調(diào)用中斷,輸出多字符 INT 21H ENDM ;* 音樂地址宏 ADDRESS MACRO A,B LEA SI,A ;將頻率表的偏移地址送入SILEA BP,DS:B ;將節(jié)拍時間表的偏移地址送入BPENDM ;* show INFO1 show INFO2 show INFO3 show INFO4 show MUSLIST INPUT: MOV AH,01H ;等待輸入一個字符 INT 21H CMP AL,Q ;比較字符 JZ retu ;是,返回 CMP AL,A ;與A比較 JNZ B0 ;不等再比較 ADDRESS MUS_FREG1,MUS_TIME1 ;取數(shù)據(jù) CALL MUSIC ;調(diào)用音樂子程序 JMP EXIT1 B0: CMP AL,B JNZ exit ADDRESS MUS_FREG2,MUS_TIME2 CALL MUSIC EXIT1: JMP INPUT ;繼續(xù)等待輸入EXIT: MOV AH,00H ;BIOS 10子功能 MOV AL,02H ;80*25彩色文本模式 INT 10H ;BIOS 10功能調(diào)用 CALL CLR ;背景清屏 show INFO5 ;輸入錯誤,顯示提示語 show INFO6 show INFO1 show INFO2 show INFO3 show INFO4 show MUSLIST jmp input RETU: MOV AH,4CH ;返回 INT 21H ;* ;背景清屏CLR PROC NEAR MOV BH,0 ;第0頁 MOV BL,0eh ;字符屬性 黑底黃字 MOV DX,0000H ;0行0列 MOV AL, ;要輸出的字符 MOV CX,80*25 ;循環(huán)次數(shù) MOV AH,02H ;置光標(biāo)位置 INT 10H MOV AH,09H ;BIOS 10子功能調(diào)用,輸出字符 INT 10H RETCLR ENDP;*發(fā)聲 GENSOUND PROC NEAR PUSH AX ;保護寄存器 PUSH BX PUSH CX PUSH DX PUSH DI MOV AL,0B6H ;寫入方式控制字 OUT 43H,AL ;輸出到控制端口 MOV DX,12H MOV AX,348ch DIV DI ;得到發(fā)聲頻率 OUT 42H,AL ;發(fā)送低字節(jié) MOV AL,AH OUT 42H,AL ;發(fā)送高字節(jié) IN AL,61H ;讀取8255A的PB端口原輸出值 MOV AH,AL ;將原輸出值保存于AH中 OR AL,3 ;使PB1、PB0均為1 OUT 61H,AL ;打開GATE2門,輸出方波到揚聲器WAIT1: MOV CX,3314 ;延時 call waitf DELAY1: DEC BX ;節(jié)拍時間值減1 JNZ WAIT1 MOV AL,AH ;取回AH中的8255A的PB端口原輸出值 OUT 61H,AL ;恢復(fù)8255A的PB端口 POP DI ;恢復(fù)寄存器 POP DX POP CX POP BX POP AX RET GENSOUND ENDP ;* waitf proc near ;延時子程序 push ax ;保護寄存器waitf1: in al,61h ;讀取PB端口值 and al,10h ;低4位清零 cmp al,ah ;檢查PB3是否改變 je waitf1 ;等待改變 mov ah,al ;改變,保護新端口值 loop waitf1 ;繼續(xù),直到CX=0 pop ax ;恢復(fù)寄存器 ret waitf endp ;* MUSIC PROC NEAR ;音樂子程序 PUSH DS ;壓入數(shù)據(jù)段 SUB AX,AX ;標(biāo)志位清零 PUSH AX FREG: MOV DI,SI ;取音符頻率,送DI CMP DI,-1 ;結(jié)束? JE END_MUS ;是,退出 MOV BX,DS:BP ;取音符持續(xù)時間 CALL GENSOUND ;調(diào)用GENSOUND發(fā)聲子程序 ADD SI,2 ;頻率表指針增2 ADD BP,2 ;時間表指針增2 JMP FREG ;繼續(xù)演奏END_MUS: RET ;返回MUSIC ENDP CODE ENDS END START6調(diào)試記錄及結(jié)果分析將源程序編寫完成后,在pc機上,使用軟件MASM進行調(diào)試運行。,剛開始編譯時,出現(xiàn)了很多的變量未定義的錯誤,經(jīng)過反復(fù)檢查,將拼寫錯誤的地方一一改正,隨后發(fā)現(xiàn)在按照提示正確輸入時,可以演奏音樂,但是當(dāng)輸入錯誤的字符時,發(fā)現(xiàn)屏幕并不顯示錯誤提示語,經(jīng)過多次檢查和調(diào)試,發(fā)現(xiàn)是沒有清屏程序重新設(shè)置文本顯示模式,加上該段代碼后程序運行正常。調(diào)試過程中聲音的節(jié)拍調(diào)試時間比較長,多次取值后得到一個可以識別的演奏聲音。解決完程序中的問題后,按提示語輸入相應(yīng)的字符命令,可以播放相應(yīng)的歌曲或是退出,輸入錯誤時會出現(xiàn)錯誤提示語句?;灸軐崿F(xiàn)要求的功能。由于設(shè)計結(jié)果是播放音樂,所以無法從圖上看出,調(diào)試運行的過程如圖所示。圖6-1 masm界面圖6-2 播放音樂A圖6-3 播放音樂B圖6-4 按Q退出結(jié)束語對于此次的課程設(shè)計,我感受頗深。此次課程設(shè)計讓我了解到編寫程序的復(fù)雜性,對于理論知識的重要性有了跟深刻的認(rèn)識,完成設(shè)計最重要的因素就是對微機原理知識的掌握,為了完成本次課程設(shè)計,查閱了相關(guān)書籍,學(xué)到了很多課外知識。提高了自己的匯編語言的能力。這次微機原理課程設(shè)計為我們提供了與眾不同的學(xué)習(xí)方法和學(xué)習(xí)機會,讓我們從傳統(tǒng)的被動授學(xué)轉(zhuǎn)變?yōu)橹鲃忧髮W(xué),把所學(xué)的理論知識真正的運用到實踐中學(xué)習(xí),增強了領(lǐng)悟、創(chuàng)新和推斷的能力。實踐操作在此次課程設(shè)計中也非常重要,上機實踐有助于書本知識的系統(tǒng)化,現(xiàn)實化,更有利于自己的查漏補缺。書本上的知識是死的,能夠在現(xiàn)實中運用的知識才是活的。通過這次課程設(shè)計,也促進了我們的同學(xué)之間互相學(xué)習(xí),通過同學(xué)之間相互討論,分組設(shè)計,增強了我們的團隊合作能力??傊敬蔚恼n程設(shè)計過程中收獲了很多,通過編寫程序,增加了學(xué)習(xí)的積極性和趣味性。通過課程實踐,鞏固加深對課堂教學(xué)內(nèi)容的理解,提高學(xué)生運用匯編語言進行程序設(shè)計和動態(tài)調(diào)試程序的能力,培養(yǎng)同學(xué)克服困難的毅力和精神,提高學(xué)生綜合解決問題的能力。參考文獻1彭虎.周佩玲.微機原理與接口技術(shù).北京:電子工業(yè)出版社,20112王爽.匯編語言第2版.北京:清華大學(xué)出版社,20083沈美明溫冬蟬. IBM-PC匯編語言程序設(shè)計.北京:清華大學(xué)出版社,20014王成端.李曉波.匯編語言程序設(shè)計M .北京:高等教育出版社,2003年8月5楊季文.80X86匯編語言程序設(shè)計教程.清華大學(xué)出版社,2001年9月附錄8253芯片資料 附表1 8253控制字格式 D7 D6 D5 D4 D3 D2 D1 D0SC1SC2RL1RL0M2M1M0BCD附表2 8253端口選擇A1A0端口00通道001通道110通道211控制口附表3 8253通道選擇SC1SC0對應(yīng)的通道00通道001通道110通道211不用附表4 8253讀/寫方式RL1RL0通道讀寫操作00計數(shù)器鎖存01只讀寫低8位字節(jié)10只讀寫高8位字節(jié)11讀寫16位附表5 計數(shù)數(shù)制選擇BCD計數(shù)制式選擇0二進制計數(shù)制1BCD計數(shù)制附表6 8253工作方式選擇M2M1M0工作方式選擇000工作方式0001工作方式110工作方式211工作方式3100工作方式4101工作方式5

注意事項

本文(微機原理課程設(shè)計 音樂演奏)為本站會員(仙***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!