版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p> 《微機系統(tǒng)與匯編語言》</p><p><b> 課程設計</b></p><p><b> ?。}目)</b></p><p><b> 姓名 </b></p><p><b> 班級 </b></p>
2、<p><b> 學號 </b></p><p> 2013/12/26 </p><p><b> 內(nèi)容要求:</b></p><p><b> 一.設計內(nèi)容</b></p><p> 設計并實現(xiàn)隨音樂伴奏而按某種規(guī)律顯示的彩燈。<
3、;/p><p><b> 二. 設計要求</b></p><p> ?、伲脤嶒炏渖系?253控制揚聲器發(fā)聲,演唱3首不同的歌曲。</p><p> ?、冢ㄟ^實驗箱上的8255A驅(qū)動二極管發(fā)光。</p><p> ?、郏l(fā)光二極管的閃爍以音調(diào)的不同而不同</p><p> ④.通過中斷信號選擇歌
4、曲。</p><p><b> 三. 總體設計</b></p><p><b> 1. 設計思路:</b></p><p> 1>本次實驗應用了8254,8255,8259芯片組</p><p> 2>8254用于計數(shù)和連接揚聲器,用計數(shù)器1實現(xiàn)音樂播放的控制,方式3。提供因每個
5、音符頻率不同而產(chǎn)生的音樂輸出,片選信號接到系統(tǒng)總線的IOY2(端口地址為0680)</p><p> 3>8255A驅(qū)動二極管發(fā)光,伴隨音樂而變換。用B口作輸出,片選信號接到系統(tǒng)總線的IOY0(端口地址為0600H)</p><p> 4>8259采用級聯(lián)方式,提供中斷控制歌曲的切換,主片的中斷類型號為68H,接MIR7.從片中斷類型號為70H,接SIR1 。每按一次MIR
6、7或SIR1,切換一首歌。</p><p> 5>共有三首歌,0-友誼地久天長,1-祝你生日快樂,2-兩只老虎,從第一首開始播放,然后判斷有無中斷,沒有就繼續(xù)播,有就判斷計數(shù)器的值,大于等于3就重置為0(第一首),否則就用計數(shù)器的值找下一首要播放的歌曲的頻率表、時間表、彩燈的控制表,然后取出播放新的音樂。</p><p><b> 硬件連接圖</b><
7、/p><p> 我的改為片選CS接IOY2,用的計數(shù)器1,即把GATE0、CLK0、OUT0改為GATE1、CLK1、OUT1</p><p> 我的片選信號CS接到IOY0,用的B口輸出,即把PA0---PA7改為PB0---PB7</p><p><b> 軟件流程圖</b></p><p><b>
8、4. 程序代碼</b></p><p> IOY0 EQU 0600H </p><p> IOY2 EQU 0680H</p><p> MY8254_COUNT0 EQU IOY2+00H;8254 計數(shù)器 0 端口地址</p><p> MY8254_COUNT1 EQU IOY2
9、+02H;8254 計數(shù)器 1 端口地址</p><p> MY8254_COUNT2 EQU IOY2+04H;8254 計數(shù)器 2 端口地址</p><p> MY8254_MODEEQU IOY2+06H;8254 控制寄存器端口地址</p><p> MY8259_ICWEQU 20H</p><p>
10、 ;MY8255_AEQU 0600H</p><p> MY8255_BEQU 0602H</p><p> MY8255_CONEQU 0606H</p><p> SSTACK SEGMENT STACK</p><p> DW 32 DUP(?)</p><p> SSTACK END
11、S</p><p> DATASEGMENT</p><p> COUNTSONGDB 0</p><p> INT_FLAG DB 0</p><p> FREQ_LIST DW FREQ_ONE</p><p> TIME_LIST DW TIME_ONE</p><
12、p> FREQ_ONEDW 393,393,441,393,525,495 ;頻率表 </p><p> DW 393,393,441,393,589,525 </p><p> DW 393,393,786,661,525,495,441</p><p> DW 350,350,661,525,589,525,0 <
13、;/p><p> TIME_ONEDB 4,2,5,5,5,10 ;時間表 </p><p> DB 3,2,5,5,5,10 </p><p> DB 2,4,5,5,5,3,3</p><p> DB 4,1,5,5,5,10 </p><p> LED
14、_ONEDB 25,23,03,44,75,26,07,08,19</p><p> DB 01,05,63,04,05,06,47,08,09</p><p> DB 01,32,03,46,02,06,54,08,29</p><p> DB 01,62,03,34,25,06,67,28,09</p><p>
15、; DB 01,02,83,04,05,46,37,68,09</p><p> DB 01,62,03,24,05,06,57,58,09,42,34</p><p> FREQ_SEC DW 262,294,330,262,262,294,330,262 ;頻率表 </p><p> DW 330,350,393,330
16、,350,393,393,441,393,350,330,262 </p><p> DW 393,441,393,350,330,262,262,393,262,262,393,0 </p><p> TIME_SEC DB 6, 6, 6, 6, 6, 6, 6, 6 ;時間表 </p><p> DB
17、 6, 6, 12, 6, 6, 12, 4, 2, 4, 2, 6, 6 </p><p> DB 4, 2, 4, 2, 6, 6,6, 6, 12,6, 6, 12</p><p> LED_SEC DB 01,62,03,34,25,06,67,28,09</p><p
18、> DB 01,02,83,04,05,46,37,68,09</p><p> DB 01,62,03,24,05,06,57,58,09,42,34</p><p> DB 25,23,03,44,75,26,07,08,19</p><p> DB 01,05,63,04,05,06,47,08,09</p><
19、;p> DB 01,32,03,46,02,06,54,08,29</p><p> FREQ_THIRDDW 371,495,495,495,624,556,495,556,624 ;頻率表</p><p> DW 495,495,624,742,833,833,833,742,624</p><p> DW 624,495,556,
20、495,556,624,495,416,416,371</p><p> DW 495,833,742,624,624,495,556,495,556,833</p><p> DW 742,624,624,742,833,990,742,624,624,495</p><p> DW 556,495,556,624,495,416,416,371,495,0
21、</p><p> TIME_THIRDDB 4, 6, 2, 4, 4, 6, 2, 4, 4 ;時間表</p><p> DB 6, 2, 4, 4, 12, 1, 3, 6, 2</p><p> DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4</p><p> DB 12,
22、4, 6, 2, 4, 4, 6, 2, 4, 4</p><p> DB 6, 2, 4, 4, 12, 4, 6, 2, 4, 4</p><p> DB 6, 2, 4, 4, 6, 2, 4, 4, 12</p><p> LED_THIRD DB 01,05,63,04,05,06,47,08,09</p
23、><p> DB 01,32,03,46,02,06,54,08,29</p><p> DB 01,62,03,34,25,06,67,28,09</p><p> DB 25,23,03,44,75,26,07,08,19</p><p> DB 01,02,83,04,05,46,37,68,09</p>
24、<p> DB 01,62,03,24,05,06,57,58,09,42,34</p><p> SING_FREQ DW FREQ_ONE,FREQ_SEC,FREQ_THIRD</p><p> SING_TIME DW TIME_ONE,TIME_SEC,TIME_THIRD</p><p> LED_TAB DW
25、LED_ONE,LED_SEC,LED_THIRD </p><p><b> DATA ENDS</b></p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START: PUSH DS</p><p>
26、 MOV AX, 0000H</p><p> MOV DS, AX</p><p><b> ;MIR7</b></p><p> MOV AX, OFFSET MIR7 ;取中斷入口地址</p><p> MOV SI, 006FH*4 ;中斷矢量地址,低位存偏移地址</p>
27、<p> MOV [SI], AX ;填 IRQ7 的偏移矢量</p><p> MOV AX, CS ;段地址</p><p> MOV SI, 006FH*4+2 ;高位存段地址</p><p> MOV [SI], AX ;填 IRQ7 的段地址矢量</p><p>&
28、lt;b> ;SIR1</b></p><p> MOV AX, OFFSET SIR1 </p><p> MOV SI, 71H*4</p><p> MOV [SI], AX </p><p> MOV AX, CS </p><p> MOV SI, 71H*4+2 </p&
29、gt;<p> MOV [SI], AX </p><p> CLI;中斷允許標志置0</p><p><b> POP DS</b></p><p> ;初始化主片 8259</p><p> MOV AL, 11H</p><p> OUT 20H, AL
30、 ;ICW1,11H=0001 0001,IRx為上升沿觸發(fā),多片8259級聯(lián),需要ICW4</p><p> MOV AL, 68H</p><p> OUT 21H, AL ;ICW2,68H=0110 1000,程序設定的中斷類型碼的高5位內(nèi)容為01101,中斷源為???</p><p> MOV AL, 04H</p>
31、;<p> OUT 21H, AL ;ICW3僅用于8259的級聯(lián)方式,04H=0000 0100,IR2上接有從片8259</p><p> MOV AL, 05H</p><p> OUT 21H, AL ;ICW4,01H=0000 0101,優(yōu)先級管理采用正常的完全嵌套方式,非緩沖方式,作為從片,非自動中斷結(jié)束方式</p>
32、<p> MOV AL, 6BH </p><p> OUT 21H, AL;OCW1 用來設置中斷源的屏蔽狀態(tài),6BH=0110 1011,IR4和IR7沒被屏蔽,主片IR2不屏蔽</p><p><b> ;初始化從片</b></p><p> MOV AL, 11H </p><
33、;p> OUT 0A0H, AL ;ICW1 </p><p> MOV AL, 70H </p><p> OUT 0A1H, AL ;ICW2 </p><p> MOV AL, 02H </p><p> OUT 0A1H, AL ;ICW3 </p><p> MOV AL, 01H <
34、/p><p> OUT 0A1H, AL ;ICW4 </p><p> MOV AL, 0FDH </p><p> OUT 0A1H,AL ;OCW1=1111 1101 從片IR1不被屏蔽</p><p> STI;中斷允許標志置1</p><p><b> ;初始化8254<
35、/b></p><p> MOV DX,MY8254_MODE;初始化8254工作方式</p><p> MOVAL,76H;0011 0110設置定時器1,先讀寫低8位,后讀寫高8位,工作方式3,軟硬件啟動</p><p><b> OUTDX,AL</b></p><p><b>
36、 ;初始化8255</b></p><p> MOV DX, MY8255_CON ;初始化 8255 工作方式</p><p> MOV AL, 80H;1000 0000 B口工作在方式0,做輸出 </p><p> OUT DX, AL</p><p> MOV AX,DATA</p>&l
37、t;p><b> MOV DS,AX</b></p><p> AA1: NOP</p><p><b> JMP PLAY1</b></p><p> ;CALL BEGIN</p><p><b> JMP AA1 </b></p>&
38、lt;p><b> ;子程序功能</b></p><p><b> MIR7: </b></p><p><b> PUSH AX</b></p><p> MOV INT_FLAG,0FFH</p><p> INC COUNTSONG;增量加(加1)&
39、lt;/p><p> CMP COUNTSONG,3 ;比較</p><p> JC RETT;條件轉(zhuǎn)移,有進位(借位)轉(zhuǎn)移</p><p> MOV COUNTSONG,0;大于等于3時,從第0首歌開始唱</p><p><b> SIR1: </b></p><p><
40、b> PUSH AX</b></p><p> MOV INT_FLAG,0FFH</p><p> INC COUNTSONG;增量加(加1)</p><p> CMP COUNTSONG,3 ;比較</p><p> JC RETT;條件轉(zhuǎn)移,有進位(借位)轉(zhuǎn)移</p><p>
41、; MOV COUNTSONG,0;大于等于3時,從第0首歌開始唱</p><p> ;---------是那首歌就唱哪首歌----------</p><p><b> RETT: </b></p><p> MOV AH,1</p><p> MOV AL,COUNTSONG</p>
42、<p> ;----------</p><p> OR AL,30H</p><p><b> INT 10H</b></p><p> MOV AL, 20H</p><p> ;-----------</p><p> OUT 20H, AL ;中斷結(jié)
43、束命令</p><p> OUT 0A0H,AL</p><p><b> POP AX</b></p><p><b> IRET </b></p><p> ;----------使程序順序執(zhí)行---------</p><p><b> PLAY1
44、:</b></p><p><b> XOR BX,BX</b></p><p> MOV BL,COUNTSONG</p><p><b> SHL BX,1</b></p><p><b> MOV BP,BX</b></p><p
45、> MOV SI,DS:SING_FREQ</p><p> MOV DI,DS:SING_TIME</p><p> MOV BX,DS:LED_TAB</p><p> ;MOV BX,DS:LED_TAB[BP]</p><p> ; MOV SI,SING_FREQ</p><p>
46、; ; MOV DI,SING_TIME</p><p><b> ;響應中斷</b></p><p><b> SONG1:</b></p><p> CMP INT_FLAG,0H</p><p><b> JZ PLAY</b></p>
47、;<p> MOV INT_FLAG,0H</p><p><b> XOR BX,BX</b></p><p> MOV BL,COUNTSONG</p><p><b> SHL BX,1</b></p><p><b> MOV BP,BX</b>
48、</p><p> MOV SI,DS:SING_FREQ[BP]</p><p> MOV DI,DS:SING_TIME[BP]</p><p> MOV BX,DS:LED_TAB[BP]</p><p> ; MOV BX,DS:LED_TAB[BP]</p><p> ;-------------
49、------------------------;</p><p> ;CMP INT_FLAG,0H</p><p> ; JZ SONG0</p><p> ; MOV INT_FLAG,0H</p><p> ;XOR BX,BX</p><p> ; MOV BL,COUNTSONG</p
50、><p> ; ADD BX,OFFSET SING_FREQ</p><p> ;MOV SI,[BX]</p><p> ; ADD BX,OFFSET SING_TIME</p><p> ; MOV DI,[BX]</p><p><b> PLAY:</b></p>
51、<p> ;輸入時鐘為 1MHz,1M = 0F4240H</p><p> MOV AX,4240H</p><p> MOV DX,0FH</p><p> DIV WORD PTR [SI] </p><p> MOV DX,MY8254_COUNT1</p><p> OUT DX,AL
52、;裝入計數(shù)初值</p><p><b> MOV AL,AH</b></p><p><b> OUT DX,AL</b></p><p> MOV DL,[DI];取出演奏相對時間,調(diào)用延時子程序</p><p> CALL DALLY</p><p&
53、gt;<b> MOV AX,BX</b></p><p> MOV DX,MY8255_B </p><p> OUT DX,AL ;從B口 輸出音符到LED </p><p><b> ADD SI,2</b></p><p><
54、b> INC DI</b></p><p><b> INC BX</b></p><p><b> ;POP BX</b></p><p> CMP WORD PTR [SI],0;判斷是否到曲末?</p><p><b> JE PLAY1<
55、/b></p><p><b> JMP SONG1</b></p><p> ;MOV DI,OFFSET TIME_LIST;裝入時間表起始地址</p><p> DALLYPROC;延時子程序</p><p> D0:MOV CX,0010H</p><p
56、> D1:MOV AX,0F00H</p><p> D2:DEC AX</p><p><b> JNZ D2</b></p><p><b> LOOP D1</b></p><p><b> DEC DL</b></p><p&
57、gt;<b> JNZ D0</b></p><p><b> RET</b></p><p> DALLYENDP </p><p> CODE ENDS</p><p><b> END START</b></p><p><
58、;b> 四. 心得體會</b></p><p> 通過課程設計我對8259A、8254、8255等芯片有了更深刻的認識。對于實驗中用到的8255,8254,8259等芯片都有了較為深刻的認識,知道了如何使用這幾個芯片,對于它們的初始化,賦初值,寫命令字都有了較為熟悉的了解,對于8254,8055的端口地址以及命令字格式都已經(jīng)差不多記下來了,使用8253芯片,主要是用來得到我們需要的音樂頻率,
59、8255工作方式控制字用來設定A、B 口和C口的數(shù)據(jù)傳送方向是輸入還是輸出,設定各口的工作方式是3種方式的哪一種。對于8253芯片作為計數(shù)器的用法基本上已經(jīng)掌握,相關(guān)的操作命令能相對熟練的運用,對于8255芯片作為并行輸入輸出的本質(zhì)有了一定的了解,對8255的A口,B口,C口做不同的輸入輸出工作的具體應用有了一定的經(jīng)驗</p><p> 因為之前幾次實驗都是針對單個芯片,雖然當時很多有疑問的地方都差不多弄明白了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微型計算機課程設計報告
- 微型計算機課程設計--數(shù)據(jù)采集系統(tǒng)
- 微型計算機課程設計---數(shù)字錄音機
- 課程設計--微型計算機系統(tǒng)設計
- 單片微型計算機課程設計報告-多功能電子數(shù)字鐘
- 計算機課程設計
- 微型計算機應用系統(tǒng)的課程設計報告
- vf計算機課程設計
- 計算機課程設計報告
- 計算機課程設計---冒泡排序
- 微型計算機接口技術(shù)課程設計---雙機通信
- 計算機課程設計----銷售管理系統(tǒng)
- 微型計算機基于8086cup數(shù)字時鐘課程設計任務
- 計算機課程設計--人事管理系統(tǒng)
- 微型計算機技術(shù)課程設計--模擬電壓采集電路設計
- 計算機課程設計----實用網(wǎng)絡考試系統(tǒng)
- 微型計算機控制技術(shù)課程設計---步進電機角度控制
- 《微型計算機技術(shù)》課程設計--交通燈控制系統(tǒng)
- 計算機課程設計——水箱水位控制系統(tǒng)設計
- 電加熱爐計算機溫度測控系統(tǒng)設計-計算機課程設計
評論
0/150
提交評論