freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

北郵微機原理與接口技術硬件實驗報告-資料下載頁

2024-10-20 17:40本頁面

【導讀】信息與通信工程學院。微機原理硬件實驗報告

  

【正文】 hyme, delay time in AX RET RHYME ENDP 。 DISP PROC NEAR 。Display note being played MOV DX,0E800H MOV AL,BOK[BX] 。Get note char XOR AH,AH MOV DI,AX DEC DI MOV AL,KEY[DI] 。Get char code OUT DX,AL MOV AL,00000001B 。Only one digit on MOV DX,0E801H OUT DX,AL 。Control which LED on RET DISP 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 OUT DX,AL MOV AL,80H 。initialize 8255 MOV DX,0E803H OUT DX,AL PLAY:MOV CX,LEN 。Get book39。s length 微機原理硬件 實驗報告 第 25頁 XOR BX,BX 。Record current char being played LOP: CALL READ 。Read note/rhyme/tone CALL DISP 。Display note on LED MUSIC 。Play music now CALL RHYME 。Control rhyme INC BX 。Next note LOOP LOP 。Loop until music finished MOV AH, 0BH 。Test keyboard INT 21H OR AL, AL JNZ OVER 。Keyboard pressed, quit program JMP PLAY 。Or go on to play OVER:MOV DX, 0E823H 。Reset 8253A MOV AL, 16H OUT DX, AL MOV AX,4C00H 。Back to DOS INT 21H 。 CODE ENDS END MAIN 代碼 的具體分析如下: 程序代碼設計 分模塊,綜合應用了宏和子程序設計的方法, 按照播放器的功能, 把代碼分為 主程序 MAIN, 讀取樂譜的子程序 READ, 顯示音符子程序DISP, 節(jié)奏控制子程序 RHYME,另外 編寫 MUSIC 和 DELAY兩個宏分別實現(xiàn)音樂的播放和 程序延時功能。 程序執(zhí)行時首先進入 主程序 MAIN, 在當中完成8253 和 8255 的初始化工作 ,寫入控制字 ;然后 調用 READ 讀取 樂譜的一個音符 ,包括音符信息、 音高信息、 節(jié)拍信息 ;之后將音符信息送入顯示模塊 DISP在 數(shù)碼管上顯示 , 通過音高信息查表得到 計數(shù)器的計數(shù)值 , 由宏 MUSIC 送入8253 計數(shù)器產生 對應音高的頻率 , 開始播放音符 ; 此后程序轉入節(jié)奏控制 的RHYME 子程序, 通過 節(jié)拍信息控制 DELAY 宏的執(zhí)行時間,實現(xiàn) 音樂 節(jié)奏的控制。 重復以上過程,可以 播放連續(xù)的一段樂譜信息,產生 一整段 音樂。 微機原理硬件 實驗報告 第 26頁 鍵盤彈奏樂曲 鍵盤彈奏樂曲 的實現(xiàn) 可以在實驗二的擴展實驗基礎上來做, 實際上只需要稍加修改實驗二的代碼, 增加給計數(shù)器賦值 播放音樂這一項功能即可。 程序設計的關鍵點在于 檢測實驗板上鍵盤的狀態(tài), 為了能夠 由按鍵的長短來控制單個音符播放的時長, 需要檢測鍵盤的釋放 。也即當鍵盤按下時開始播放對應的音符的聲音,當按鍵松開的時候停止該音符的播放。 檢測鍵盤的狀態(tài)采用的是行掃描反轉法實現(xiàn)的 。 依次給 8255 的 C 口高四位和低四位寫入 和讀取狀態(tài), 可以分別獲得行列的狀態(tài)值, 行和列中對應按下的位為低電平, 合成 8 位的鍵盤碼信息 ,可以對應 16 位按鍵。 在程序中把按鍵碼寫為 碼表的形式, 和 0~ A~ F 依次對應。 利用串搜索指令 可以找到按鍵對應的按鍵碼, 由按鍵碼可以 進一步對應 數(shù)碼管 顯示 字形碼 和音符發(fā)聲 碼。 數(shù)碼管不同字符同時顯示的方法 ,和實驗二中 的方法一致。 基本思路是 按位依次 掃描 6 個數(shù)碼管, 每次選中一個管顯示, 其余管熄滅, 亮燈的管 顯示對應的字符 , 每個管亮燈的時間 設置 有一定的延時, 這樣快速反復掃描 這六個數(shù)碼管, 就能由視覺暫留效應 產生穩(wěn)定的顯示。 程序設計中有個關鍵問題需要處理。 鍵盤檢測模塊需要 CPU反復探測 8255的 C口讀數(shù), 這將占據(jù) CPU的 執(zhí)行流水線, 而 同時顯示一排不同的 多 個音符 ,需要使用掃描的方式,且 掃描時間不能太短, 因而 鍵盤探測和多音符顯示存在爭用 CPU 處理資源的 情況。 這一矛盾在單處理器 且 沒有中斷 控制 硬件 的情況下 ,很難 做到而這并行。 我設想的解決方案可以使用硬件中斷的方法, 對數(shù)碼管設置 一個計數(shù)器, 當顯示到一定時間之后向 CPU發(fā)出中斷請求, CPU執(zhí)行中斷處理, 進行下一位的掃描, 然后跳回繼續(xù)檢測鍵盤狀態(tài) ,這樣利用分時和中斷的方法達到基本的并行處理 。但由于時間和條件的限制, 沒能具體去實施。 此程序設計中采用的方式 犧牲并行性, 考慮在按鍵的時間并不長, 可以滅燈, 當按鍵松開時予以顯示音符。 實際效果是可以接受的 , 按鍵瞬間的滅燈 沒有過多影響觀賞效果。 微機原理硬件 實驗報告 第 27頁 程序的流程圖如下: 開始 初始化 8253 顯示音符信息 結束 NO YES 檢測鍵盤輸入 查找并存儲鍵盤輸入的音符 播放音符聲音 鍵盤按下? 鍵盤釋放? 音符 OR控制? NO YES 音符 控制信息處理 控制 退出? NO YES 微機原理硬件 實驗報告 第 28頁 程序源代碼如下: DATA SEGMENT ID DB 6 DUP(0) 。Store input note char 。Key’s code ARRAY DB 11100111B,11101011B,11101101B,11101110B DB 11010111B,11011011B,11011101B,11011110B DB 10110111B,10111011B,10111101B,10111110B DB 01110111B,01111011B,01111101B,01111110B 。Char code 0~9 KEY DB 0EDH,21H,0F4H,0F1H,39H 。0~5 DB 0D9H,0DDH,61H,0FDH,0F9H 。6~9 。Count number LOU DB 0,122,108,97,91,81,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 39。STACK39。 DB 100 DUP(0) STACK ENDS 。 CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK 。 MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,0E823H 。Initialize 8253A MOV AL,16H OUT DX,AL CLEAR:XOR DX,DX 。Record how many digits has been stored MOV CX,6 MOV AL,0 XOR SI,SI LOPC: MOV ID[SI],AL 。Clear all ID value INC SI 微機原理硬件 實驗報告 第 29頁 LOOP LOPC NEXT: CALL DISP 。Display notes, can display 6 a time CALL READ 。Read key state CMP AL,0FFH 。No Key pressed ? JE NEXT 。Key pressed! CLD 。Set DF direction: DI + 1 DI 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 wrong MOV BX,OFFSET ARRAY SUB DI,BX DEC DI CMP DI,7 。Is the key 0~7? 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,14 JE EXIT 。Key E means Exit the program. JMP NEXT ISNUM:MOV AL,MID[DI] 。Use Mid note to display PUSH DX MOV DX,0E820H 。Counter 0 OUT DX,AL 。Write counter 0 , music on POP DX AGN: CALL READ 。Key pressed! CMP AL,0FFH 。Has the key been released? JNE AGN 。No:wait until it is released。 PUSH DX 。Yes:begin to judge the key. MOV DX,0E820H XOR AL,AL OUT DX,AL 微機原理硬件 實驗報告 第 30頁 POP DX MOV AL,KEY[DI] MOV SI,DX MOV ID[SI],AL 。Store the input number to memory. INC DX CALL DISP CMP DX,6 JE CLEAR JMP NEXT NFD: NOP 。Unknown state, terminate t
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1