![《微型計算機原理與接口技術》課程設計音樂播放器課程設計_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/30ae2045-5b41-4295-8a72-295cf7bdfb02/30ae2045-5b41-4295-8a72-295cf7bdfb021.gif)
![《微型計算機原理與接口技術》課程設計音樂播放器課程設計_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/30ae2045-5b41-4295-8a72-295cf7bdfb02/30ae2045-5b41-4295-8a72-295cf7bdfb022.gif)
![《微型計算機原理與接口技術》課程設計音樂播放器課程設計_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/30ae2045-5b41-4295-8a72-295cf7bdfb02/30ae2045-5b41-4295-8a72-295cf7bdfb023.gif)
![《微型計算機原理與接口技術》課程設計音樂播放器課程設計_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/30ae2045-5b41-4295-8a72-295cf7bdfb02/30ae2045-5b41-4295-8a72-295cf7bdfb024.gif)
![《微型計算機原理與接口技術》課程設計音樂播放器課程設計_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/30ae2045-5b41-4295-8a72-295cf7bdfb02/30ae2045-5b41-4295-8a72-295cf7bdfb025.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學號0000000 微型計算機原理與接口技術課 程 設 計( 2008級本科)題 目:音樂播放器課程設計系(部)院: xxxxxx學院 專 業(yè): 電氣工程及其自動化 作者姓名: x x x 指導教師: xx 職稱: 教授 完成日期: 20xx 年 x 月 xx 日微機原理與接口技術課程設計成績評定表姓 名xxx學 號0000000專業(yè)班級電氣工程及其自動化課程設計題目:音樂播放器課程設計課程設計答辯或質疑記錄:成績評定依據:評 定 項 目評 分 成 績1.選題合理、目的明確(10分)2.設計方案可行性、創(chuàng)新性(20分)3.設計結果(系統原理圖、源程序、調試運行結果)(30分)4.平時成績(態(tài)度
2、認真、遵守紀律)(10分)5.設計報告的規(guī)范性、參考文獻充分(不少于5篇)(10分)6.答辯(20分)總 分最終評定成績(以優(yōu)、良、中、及格、不及格評定) 指導教師簽字: 年 月 日課程設計任務書學生姓名xxx學號0000000專業(yè)方向電氣工程及其自動化班級08(x)班題目名稱音樂播放器設計一、 設計內容及技術要求:1、 將各音樂音階和其延續(xù)時間存在數據段中,然后根據不同按鍵值選擇不同的音階和時間表,再使用計數器產生該音階頻率。2、 cpu通過對定時器的通道進行編程,使其i/o寄存器接收一個控制聲音頻率的16位計數值。3、 當定時器接收的計數值為533h時,能產生896hz的聲音,因此產生其他
3、頻率的計數值就可算出來。4、 在送出頻率計數值之前,還要給方式寄存器送一個方式值,該數決定對哪一個通道編程,采用什么模式,送入通道的計數值是一字節(jié)還是兩字節(jié),是二進制碼還是bcd碼。5、 從定時器輸出的方波信號,經功率放大和濾波后驅動揚聲器。送到揚聲器的信號還受到了從并行接口芯片8255(端口地址為61h)來的雙重控制,端口61h的最低位控制通道2的門控開斷,以產生特殊的音頻信號。6、 控制揚聲器開關的時間間隔,來控制發(fā)聲的音長了。二、課程設計總結報告要求:1、選用8086/8088cpu和適當的吃存儲器芯片、接口芯片完成相應的功能。2、設計鍵盤和led完成輸入和顯示功能。3、畫出詳細的硬件連
4、接圖。4、給出程序設計思路、畫出各程序適當的流程圖。5、給出ram地址分配圖。6、給出所有程序清單并加上必要注釋。7、完成設計說明書(包括封面、目錄、設計任務書、硬件設計思路、硬件原理圖、軟件設計思路、程序流程框圖、程序清單、所用器件型號、總結體會、參考文獻等)。三、設計進度:第一周星期一上午 討論論文題目星期一下午 查資料星期二至星期五 完成硬件電路的基本設計第二周星期一至星期二 完成軟件流程圖及軟件設計星期三至星期四 軟硬件統調,寫說明書,畫圖星期五 答辯目 錄第一章課程設計的任務和目的41.1 課程設計任務41.2 課程設計目的4第二章課程設計基礎知識52.1 定時/計數器8253a52
5、.2 8253a內部結構52.3 8253a外部引腳62.4 計數器內部結構72.5 8253a端口地址72.6 8253a功能82.7 8253a控制字92.8 8253a工作方式9第三章詳細設計113.1 硬件設計113.2 軟件設計13第四章程序調試14第五章試驗結果截屏14第六章總結15第七章參考文獻16第八章附錄178.1 源代碼178.2 各個音符的對應頻率2627第一章 課程設計的任務和目的1.1 課程設計任務本課程設計題目是:設計并實現一個音樂播放器。1. 自己選用芯片和其它的硬件。2. 自行設計電路并使用匯編語言編寫程序完成音樂播放器功能。3. 利用8253作為音階頻率發(fā)生器
6、,對一段音樂進行編碼后存入音符表,程序中可調用音符表自動播放音樂,從中了解音樂播放的原理。4. 利用8253a和pc機,設計并實現簡易音樂播放器5. 使用匯編語言編寫音樂播放程序。6. 上機調試程序并聯機,利用試驗箱提供的揚聲器發(fā)聲。7. 完成實驗報告。1.2課程設計目的本課程設計注重提高學生應用能力、創(chuàng)新能力。在掌握了基本的實驗方法和實驗技能且理論教學完成的基礎上,要求學生通過兩周的集中工作,初步鍛煉綜合運用所學知識的能力,通過討論與合作,完成一項完整的設計工作。更深入的了解微機芯片的用法和程序的完成過程,調試方法及技巧。通過這個環(huán)節(jié)來加深對微機原理與接口技術所學內容的理解和融會貫通。設計音
7、樂播放器主要目的: 通過d/a裝換器產生模擬信號,在實驗平臺上實現簡易音樂播放器。 了解利用數模轉換器產生音樂的基本方法。 掌握定時/計數器8253a 的使用。第二章 課程設計基礎知識 2.1 定時/計數器8253a 在微機及控制系統中,經常要用到定時信號。如系統的日歷時鐘,動態(tài)存儲器刷新。對外部執(zhí)行機構控制時也需要定時中斷、定時檢測、定時查詢等。定時的方法主要是兩種:軟件定時:利用指令的執(zhí)行時間設計循環(huán)程序,使cpu 執(zhí)行延遲子程 序的時間就是定時時間。缺點:執(zhí)行延遲時,cpu 一直被占用,降低了cpu 的效率。硬件定時:用計數器/定時器作為主要硬件,在軟件簡單指令的控制下產生精確的時間延遲
8、。突出優(yōu)點為計數時不占用cpu 時間,如利用定時器/計數器產生中斷信號,可建立多作業(yè)環(huán)境,提高了cpu 效率。主要功能:(1)每片上有3 個獨立的16 位的減計數器通道。(2)對于每個計數器,都可以單獨作為定時器或計數器使用,并且都可以按照二進制或十進制來計數。(3)每個通道都有6 種工作方式,都可以通過程序設置或改變。(4)每個計數器的速率可高達2mhz。最高的計數時鐘頻率為26mhz。2.2 8253a內部結構8253的內部結構如圖所示,它主要包括以下幾個主要部分:圖21 8253的內部結構(1)數據總線緩沖器實現8253與cpu數據總線連接的8位雙向三態(tài)緩沖器,用以傳送cpu向8253的
9、控制信息、數據信息以及cpu從8253讀取的狀態(tài)信息,包括某時刻的實時計數值。(2)讀/寫控制邏輯控制8253的片選及對內部相關寄存器的讀/寫操作,它接收cpu發(fā)來的地址信號以實現片選、內部通道選擇以及對讀/寫操作進行控制。(3)控制字寄存器在8253的初始化編程時,由cpu寫入控制字,以決定通道的工作方式,此寄存器只能寫入,不能讀出。(4)計數通道0#、1#、2#:這是三個獨立的,結構相同的計數器/定時器通道,每一個通道包含一個16位的計數寄存器,用以存放計數初始值,一個16位的減法計數器和一個16位的鎖存器,鎖存器在計數器工作的過程中,跟隨計數值的變化,在接收到cpu發(fā)來的讀計數值命令時,
10、用以鎖存計數值,供cpu讀取,讀取完畢之后,輸出鎖存器又跟隨減1計數器變化。2.3 8253a外部引腳8253芯片是具有24個引腳的雙列直插式集成電路芯片,其引腳分布如圖所示。8253芯片的24個引腳分為兩組,一組面向cpu,另一組面向外部設備,各個引腳及其所傳送信號的情況,介紹如下:(1)d7d0:雙向、三態(tài)數據線引腳,與系統的數據線連接,傳送控制、數據及狀態(tài)信息。(2):來自于cpu的讀控制信號輸入引腳,低電平有效。(3):來自于cpu的寫控制信號輸入引腳,低電平有效。(4):芯片選擇信號輸入引腳,低電平有效。圖21 8253的引腳(5)a1、a0:地址信號輸入引腳,用以選擇8253芯片的
11、通道及控制字寄存器。(6)vcc及gnd:+5v電源及接地引腳(7)clki:i=0,1,2,第i個通道的計數脈沖輸入引腳,8253規(guī)定,加在clk引腳的輸入時鐘信號的頻率不得高于2.6mhz,即時鐘周期不能小于380ns。(8)gatei:i=0,1,2,第i個通道的門控信號輸入引腳,門控信號的作用與通道的工作方式有關。(9)outi:i=0,1,2,第i個通道的定時/計數到信號輸出引腳,輸出信號的形式由通道的工作方式確定,此輸出信號可用于觸發(fā)其它電路工作,或作為向cpu發(fā)出的中斷請求信號。2.4 計數器內部結構每個計數器由一個16位可預置的減1計數器組成,計數初值可保存在16位的鎖存器中,
12、該鎖存器只寫不能讀。在計數器工作時,初值不受影響,以便進行重復計數。圖中每個計數器有一個時鐘輸入端clk作為計數脈沖源, 計數方式可以是二進制,計數范圍110000h,也可以是十進制,計數范圍165536。門控端gate用于控制計數開始和停止。輸出out端當計數器計數值減到零時,該端輸出標志信號 。圖22 計數器內部結構2.5 8253a端口地址圖23 8253a端口地址2.6 8253a功能 8253 a既可作定時器又可作計數器: (1) 計數: 計數器裝入初值后,當gate為高電平時,可用外部事件作為clk 脈沖對計數值進行減1 計數,每來一個脈沖減1,當計數值減至0時,由out 端輸出一
13、個標志信號。(2) 定時: 計數器裝入初值后,當gate為高電平時,由clk 脈沖觸發(fā)開始自動計數,當計數到零時,發(fā)計數結束定時信號。除上述典型應用外,8253a還可作頻率發(fā)生器、分頻器、實時鐘、單脈沖發(fā)生器等。2.7 8253a控制字圖24 8253a控制字說明 : (1) 8253 a每個通道對輸入clk按二進制或二十進制從預置值開始減1計數,減到0時從out輸出一個信號。 (2) 8253 a編程時先寫控制字,再寫時間常數。2.8 8253a工作方式 (1) 方式0:計數結束產生中斷方式 當寫入控制字后,out變?yōu)榈碗娖?,當寫入初值后立即開始計數,當計數結束時,變成高電平。 (2) 方式
14、1:可編程單次脈沖方式 當初值裝入后且gate由低變高時,out變?yōu)榈碗娖剑嫈到Y束變?yōu)楦唠娖健?(3) 方式2:頻率發(fā)生器方式 當初值裝入時,out變?yōu)楦?;計數結束,out變?yōu)榈?。該方式下如果計數未結束,但gate為低時,立即停止計數,強制out變高,當gate再變高時,便啟動一次新的計數周期。 (4) 方式3:方波發(fā)生器當裝入初值后,在gate上升沿啟動計數,out 輸出高電平; 當計數完成一半時,out輸出低電平。圖25 方波圖方式3與方式2的工作方式類似,也是在初始化完成后能重復循環(huán)計數,只是輸出的波形不同。 計數過程 當把方式3的控制字寫入控制字寄存器后,輸出端out變成高電平,作為
15、初始電平。再將計數初值寫入計數初值寄存器cr中,再經過一個時鐘周期,計數初值被移入計數執(zhí)行單元ce中,從下一個時鐘脈沖開始作減1 計數,方式3的計數過程分為兩種情況:第一種情況:計數初值為偶數,當作減1計數減到n/2時,輸出端out端變成低電平,減到0時,輸出端out變成高電平,并重新從初值開始新的計數過程。若gate為高電平,則一直重復同樣的計數過程。可見,輸出端out輸出連續(xù)的方波,故稱方波發(fā)生器。第二種情況:計數初值為奇數,當作減1計數減到(n+1)/2以后,輸出端out變成低電平,減到0時,輸出端out又變成高電平。并重新從初值開始新的計數過程。這時輸出端的波形為連續(xù)的近似方波。門控信
16、號的影響工作在方式3時,門控信號gate的功能與工作方式2一樣,即gate 為高電平時,允許計數;gate為低電平時停止計數。gate引腳上的信號從低電平跳到高電平時,將會重新把計數初值寄存器cr中的內容移入計數執(zhí)行單元ce中,并以新裝入的值重新開始計數。新的計數初值對計數過程的影響如果在計數過程中寫入新的初值,而gate信號一直維持高電平,則新的初值不會影響當前的計數過程,只有在計數結束后的下一個計數周期,才按新的初值計數。若寫入新的初值后,遇到門控信號的上升沿,則結束現行的計數過程,從下一個時鐘脈沖下降沿開始按新的計數初值進行計數??梢姡ぷ髟诜绞?時,當計數初值為偶數,out端輸出連續(xù)的
17、標準方波;當計數初值為奇數,在每個計數周期內,有(n+1)/2個周期輸出高電平,(n-1)/2個時鐘周期輸出低電平,out端輸出連續(xù)的近似的方波。 第三章 詳細設計3.1硬件設計音樂播放器用到相關硬件:1. 定時/計數器8253a2. 模塊揚聲器和喇叭驅動3. 頻率發(fā)生芯片74ls393硬件連接: 定時/計數器8253a芯片模塊的clk2接時鐘頻率選擇模塊74ls393的t7端口,分頻器的頻率源為5000hz。 定時/計數器8253a芯片模塊的gate2接5v,提供高電平。 定時/計數器8253a芯片模塊的out2 接喇叭驅動驅動模塊的sin 端口。 喇叭驅動驅動模塊的j5插座接揚聲器的j5插
18、座。8253a的clk2接分頻器74ls393(右上方)的t7插孔,分頻器的頻率源為5000。圖31 硬件連接框架圖圖32 揚聲器電路圖33 揚聲器j5插口如圖32為音響電路的控制輸入插口sin,控制輸入信號經放大后接喇叭。圖34 74ls393引腳圖3.2 軟件設計圖37 軟件流程圖music子程序是音樂子程序,si指向曲中的頻率,bp指向曲中的時間節(jié)拍。從si的指向的音節(jié)表中取一個頻率,只要不是0,即有效就再讀取時間,然后調用speaker子程序,計算計數初值送入計數器,產生各種頻率信號,再送至揚聲器,根據所取的時間調用若干次延時子程序。這段時間揚聲器就發(fā)出該頻率的聲音,延時結束,再修改s
19、i和bp,指向下一個頻率,重復上面的工作。播放兩首音樂后自動停止。第四章 程序調試把程序輸入pc機后,保存為.asm文件。啟用dvcc系統: 建立匯編源程序. 建立連接。 編譯為目標文件 調試。 不通過,重新修改(語句錯誤、音調頻率不準、音調節(jié)拍不符合) 重新修改、調試。 正確運行。第5章 試驗結果截屏:第六章 總結經過這次的課程設計,再一次的印證了理論來源于實踐,而實踐又能升華理論這一個觀點。 首先,要實現題目要求的功能并有所創(chuàng)新,我們必須全心地投入其中,養(yǎng)成一種敢于鉆研敢于創(chuàng)新的習慣。在把課程要求實現到實際中來的過程中,參考了一些程序,在研究參考程序的編寫思路的同時也從中獲得不少的啟發(fā)。為
20、了把使得程序更加完整,在了解其他人在相同課題上的思路后,更加加入自己的一些思路,進行創(chuàng)一定的創(chuàng)新。 其次,通過課程設計,讓我在掌握課本的基礎上,更深入的了解了各種芯片的用法和程序的完成過程,調試方法及技巧。尤其是對各種芯片在硬件與軟件相互作用下工作的狀況有了更深入的認識??傊?,在這次的課程設計在很大程度上提升了我的動手能力了,培養(yǎng)了自己獨立編寫匯編語言程序的能力,加深了我對理論知識的理解。雖然這兩個星期的課程設計中,完成任務的效果和預期有的出入,雖然中間遇到了一些問題,但經過我們的努力,還是把問題給解決了。這次課程設計對我綜合運用所學知識的能力的提高有不小的幫助,之前做的實驗都是很簡單的編程,
21、跟硬件結合也沒有這么復雜,實現的功能都比較簡單,可是這次要實現的功能相對來說比較復雜,要求掌握的知識比較全面。第七章 參考文獻1.微機原理與接口技術(第二版) 人民郵電出版社 周明德主編2匯編語言程序設計 中國水利水電出版社 相偉主編3dvcc系列單片機微機仿真實驗指導書 啟東計算機廠有限公司著4.單片機接口技術 復旦大學出版社 王修才編著5單片機原理及其接口技術(第二版) 清華大學出版社 胡漢才編著6單片微機原理及應用 機械工業(yè)出版社 丁元杰主編7單片機原理及接口技術(修訂版) 北京航空航天大學出版社 李朝青編著8單片機原理及應用 北京希望電子出版社 成都木馬科技編著9單片機原理及接口技術學
22、習輔導 電子工業(yè)出版社 朱定華編著10單片微機接口與系統設計 哈工大出版社 高明編著11.微型計算機原理及應用學習知道 化學工業(yè)出版社 趙邦信編著11網上資料第八章 附錄8.1 源代碼data segmentassumeds:datamsg_1 db $,0dh,0ahmsg_2db0dh,0ah,in this os. you can press below keys to enjoy:$msg_3db0dh,0ah,super low:q-w-e-r-t-y-u$msg_4db0dh,0ah, low:a-s-d-f-g-h-j$msg_5db0dh,0ah, mid:z-x-c-v-b-
23、n-m$msg_6db0dh,0ah, hig:1-2-3-4-5-6-7$msg_7 db0dh,0ah,anytime you can press esc or enter to exit.$msg_8db0dh,0ah,whats more, you can press p to play music!$msg_9db0dh,0ah,please select the music(press q to exit the main menu):$msg_10db0dh,0ah,1. huaxin$msg_11db0dh,0ah,2. jingle bells$msg_12db0dh,0ah
24、,3. happy birthday to you$msg_13db0dh,0ah,4. happy new year$msg_21db0dh,0ah, $note_tdw 131,147,165,175,196,220,247;重低音dw 262,294,330,349,392,440,494;低音 dw 523,587,659,698,784,880,988;中音 dw 1046,1175,1318,1397,1568,1760,1975;高音dw0;休止符0;1,2,3,4,5,6,7;從低到高key_tdbq,w,e,r,t,y,u;重低音dba,s,d,f,g,h,j;低音dbz,x
25、,c,v,b,n,m;中音db1,2,3,4,5,6,7;高音db0;休止符0;瑪麗有只小羊羔music_n1 db c,x,z,x,c,c,c db x,x,x,c,c,c db c,x,z,x,c,c,z db x,x,c,x,z,0 music_d1 db 4, 4, 4, 4, 4, 4, 8 db 4, 4, 8, 4, 4, 8 db 16, 8, 4, 4, 8, 4, 4, 8, 4, 4 db 4, 4, 4, 4, 4, 4, 4, 2 db 4, 4, 4, 4, 16 ;鈴兒響叮當+生日快樂+新年好music_n2 db g,c,x,z,g,0,g,h,g,c,x,z;
26、鈴兒響叮當 db h,0,h,a,h,v,c,x,j,g,b,b,v,x,c,z db g,c,x,z,g,0,g,h,g,c,x,z,h,v,c,x db b,b,b,b,n,b,v,x,z db c,c,c,c,c,c,c,b,z,x,c db v,v,v,v,c,c,c,x,x,z,x,b db c,c,c,c,c,c,c,b,z,x,c db v,v,v,v,c,c,b,b,v,x,z,0 db g,g,h,g,z,j;生日快樂 db g,g,h,g,x,z db g,g,b,c,z,j,h db v,v,c,z,x,z,0 db z,z,z,g,c,c,c,z,z,c,b,b,v,c
27、,x,x,c;新年好 db v,v,c,x,c,z,z,c,x,g,j,x,z,0music_d2 db 4, 4, 4, 4, 8, 4, 2, 2, 4, 4, 4, 4 db 8, 4, 2, 2, 4, 4, 4, 4, 8, 8, 4, 4, 4, 4, 8, 4 db 4, 4, 4, 4, 8, 4, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4 db 4, 4, 4, 4, 4, 4, 4, 4, 16 db 4, 4, 8, 4, 4, 8, 4, 4, 4, 2, 16 db 4, 4, 8, 4, 4, 8, 4, 4, 4, 4, 8, 8 db 4, 4,
28、 8, 4, 4, 8, 4, 4, 4, 2, 16 db 4, 4, 8, 4, 4, 8, 4, 4, 4, 4, 16,32 db 4, 4, 8, 8, 8, 16 db 4, 4, 8, 8, 8, 16 db 4, 4, 8, 8, 8, 8, 8 db 4, 4, 8, 8, 8, 16, 32 db 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 16, 4, 4 db 8, 8, 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 32jiepai db ?;節(jié)拍變量定義speeddb2;播放速度控制jiangedb1;音符間隔停
29、頓時間dataends;數據定義段結束;/*-*/;/*-*/;代碼段定義code segment;代碼定義段 assumecs:code;建立代碼段寄存器尋址;/*-*/;/*-*/;字符顯示show macro str;宏定義,輸入參數:字符串str leadx,str;裝入str的有效地址 mov ah,09h;調用中斷21,09h顯示字符串 int 21h endm;宏定義結束;/*-*/;/*-*/;主函數mainprocfar;主函數過程定義mov ax,data;取數據段地址mov ds,ax;裝載數據段寄存器ds,使之指向當前數據段showmsg_21showmsg_1;調用宏
30、,顯示字符串showmsg_2showmsg_3showmsg_4showmsg_5showmsg_6showmsg_7showmsg_8showmsg_21movbx,0;設定查表數組下標初值;/*-*/;/*-*/;按鍵掃描key_scan:moval,6mov jiepai,al ;初始化節(jié)拍movbx,0000h;初始化指針movah, 00h;利用bios的16號中斷,掃描鍵盤按鍵int16h;al中返回按鍵的ascii碼cmpal, 0dh;判斷是否為enter鍵jzexit;是回車鍵就退出cmpal, 1bh;判斷是否為esc鍵jzexit;是退出鍵就退出cmpal, p;判斷是
31、否為p鍵jzplay;是p鍵就play musiclookup:cmpkey_tbx,al;取出對應頻率值jenextincbx;指針+1jmplookupnext:shlbx,1;指針2,計算頻率表指針movcx,note_tbx;取得對應數組下標值的頻率值callbeep;調用固定頻率子程序jmpkey_scan;否則繼續(xù)掃描;/*-*/;/*-*/exit:;退出 mov ah,4ch;調用中斷21,4ch退出系統 int 21h;/*-*/;/*-*/;音樂播放菜單play:showmsg_9showmsg_10showmsg_11showmsg_12showmsg_13showmsg
32、_21input:movah, 00h;利用bios的16號中斷,掃描鍵盤按鍵int16h;al中返回按鍵的ascii碼cmpal, q;判斷是否為enter鍵jzstart;是q鍵就退到主菜單cmpal, 1;判斷是否為數字1jznext6;是1鍵就播放相對應的歌曲cmpal, 2;判斷是否為數字2jznext7;是2鍵就播放相對應的歌曲jmpinput;否則繼續(xù)掃描按鍵next6:callplay_m1next7: callplay_m2start:callmain;/*-*/;/*-*/;音樂播放程序1play_m1procnearnext5:movbx,0next3:moval,mus
33、ic_n1bx;取出music頻率值 push ax moval,music_d1bx;取出music節(jié)拍 mov jiepai,al pop axcmpal, 0;是否為音樂結束標志符jeinput;是則退出playpushbx;保存bx,bx為music頻率指針movbx,0look1:cmpkey_tbx,al;查表取出對應頻率值的指針bxjenext1;找到就beepincbx;指針+1andbx,0ffhjmplook1;未找到則繼續(xù)查找next1:shlbx,1;指針2,計算頻率表指針movcx,note_tbx;取得對應數組下標值的頻率值cmpcx,0jenext4callbee
34、p;調用固定頻率子程序callpause;調用停頓時間popbx;獲得music指針incbx;繼續(xù)取得下一個音符jmpnext3next4:callnobeepcallpause;調用停頓時間popbx;獲得music指針incbx;繼續(xù)取得下一個音符jmpnext3play_m1 endp;/*-*/;/*-*/;音樂播放程序2play_m2 procnearnex5:movbx,0nex3:moval,music_n2bx;取出music頻率值 push ax moval,music_d2bx;取出music節(jié)拍 mov jiepai,al pop axcmpal, 0;是否為音樂結束標
35、志符jeinput;是則退出playpushbx;保存bx,bx為music頻率指針movbx,0loo1:cmpkey_tbx,al;查表取出對應頻率值的指針bxjenex1;找到就beepincbx;指針+1andbx,0ffhjmploo1;未找到則繼續(xù)查找nex1:shlbx,1;指針2,計算頻率表指針movcx,note_tbx;取得對應數組下標值的頻率值cmpcx,0jenex4callbeep;調用固定頻率子程序callpause;調用停頓時間popbx;獲得music指針incbx;繼續(xù)取得下一個音符jmpnex3nex4:callnobeepcallpause;調用停頓時間p
36、opbx;獲得music指針incbx;繼續(xù)取得下一個音符jmpnex3play_m2 endp;/*-*/;/*-*/mainendp;主函數過程結束;/*-*/;/*-*/;固定頻率響beep procnearmovdx,0012hmovax,34dchdivcx;ax為所得分頻值out42h,al;輸出頻率值,低8位moval,ahout42h,al;輸出頻率值,高8位callspk_on;開啟蜂鳴器movah,00h;取時鐘計數值int1ahmoval,jiepai;18.2次為1000ms, 2次約為100msaddal,speedcbw ;al值轉為16位axaddax,dx;加上當前時鐘計數值,得到計數終值movbx,ax;計數終值置入bxdelay1:movah,00hint1ah;取時鐘計數值cmpbx,dx;到終值嗎?jnzdelay1;未到,繼續(xù)延時callspk_off;關閉蜂鳴器retbeep endp;/*-*/;/*-*/;休止符延遲時間nobeep procnearcallspk_off;關閉蜂鳴器movah,00h;取時鐘計數值int1ahmoval,jiepa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版歷史九年級下冊:第11課 《蘇聯的社會主義建設》 聽課評課記錄
- 《溝通中外文明的“絲綢之路”》名師聽課評課記錄(新部編人教版七年級上冊歷史)
- 生物醫(yī)藥產業(yè)園監(jiān)理合同(2篇)
- 電力價格調整合同(2篇)
- 五年級上冊數學聽評課記錄《7.1 誰先走》(3)-北師大版
- 部編人教版歷史九年級上冊第15課《探尋新航路》聽課評課記錄
- 湘教版數學八年級上冊《小結練習》聽評課記錄5
- 人教版數學七年級上冊3.2《解一元一次方程(一)-合并同類項與移項》聽評課記錄1
- 五年級上冊數學聽評課記錄-總復習2-北師大版
- 新版湘教版秋八年級數學上冊第二章三角形課題三角形的內角和定理聽評課記錄
- 必修3《政治與法治》 選擇題專練50題 含解析-備戰(zhàn)2025年高考政治考試易錯題(新高考專用)
- 二零二五版電商企業(yè)兼職財務顧問雇用協議3篇
- 課題申報參考:流視角下社區(qū)生活圈的適老化評價與空間優(yōu)化研究-以沈陽市為例
- 《openEuler操作系統》考試復習題庫(含答案)
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- 2024-2025學年人教版生物八年級上冊期末綜合測試卷
- 大數據背景下網絡輿情成因及治理
- 道教系統諸神仙位寶誥全譜
- 中國經濟轉型導論-政府與市場的關系課件
- 新視野大學英語讀寫教程 第三版 Book 2 unit 8 教案 講稿
- 村務公開表格
評論
0/150
提交評論