微型計算機課程設計論文—通用微機發聲程序的匯編設計 本文講述了在微型計算機中利用可編程時間間隔定時器的通用發聲程序設計,重點講述了程序的發聲原理,節拍的產生,按節拍改變的動畫程序原理,并以設計一個簡單的樂曲評分程序為引子,分析程序設計的細節。關鍵字:微機 8253 通用發聲程序 動畫技術 直接寫屏 1. 可編程時間間隔定時器8253在通用個人計算機中,有一個可編程時間間隔定時器8253,它能夠根據程序提供的計數值和工作方式,產生各種形狀和各種頻率的計數/定時脈沖,提供給系統各個部件使用。本設計是利用計算機控制發聲的原理,編寫演奏樂曲的程序。 在8253/54定時器內部有3個獨立工作的計數器:計數器0,計數器1和計數器2,每個計數器都分配有一個斷口地址,分別為40H,41H和42H.8253/54內部還有一個公用的控制寄存器,端地址為43H.端口地址輸入到8253/54的CS,AL,A0端,分別對3個計數器和控制器尋址. 對8353/54編程時,先要設定控制字,以選擇計數器,確定工作方式和計數值的格式.每計數器由三個引腳與外部聯系,見教材第320頁圖9-1.CLK為時鐘輸入端,GATE為門控信號輸入端,OUT為計數/定時信號輸入端.每個計數器中包含一個16位計數寄存器,這個計數器時以倒計數的方式計數的,也就是說,從計數初值逐次減1,直到減為0為止. 8253/54的三個計數器是分別編程的,在對任一個計數器編程時,必須首先講控制字節寫入控制寄存器.控制字的作用是告訴8253/54選擇哪個計數器工作,要求輸出什么樣的脈沖波形.另外,對8253/54的初始化工作還包括,向選定的計數器輸入一個計數初值,因為這個計數值可以是8為的,也可以是16為的,而8253/5的數據總線是8位的,所以要用兩條輸出指令來寫入初值.下面給出8253/54初始化程序段的一個例子,將計數器2設定為方式3,(關于計數器的工作方式參閱教材第325—330頁)計數初值為65536. MOV AL,10110110B ;選擇計數器2,按方式3工作,計數值是二進制格式 OUT 43H,AL ; j將控制字送入控制寄存器 MOV AL,0 ;計數初值為0 OUT 42H,AL ;將計數初值的低字節送入計數器2 OUT 42H,AL ;將計數初值的高字節送入計數器2 在IBM PC中8253/54的三個時鐘端CLK0,CLK1和CLK2的輸入頻率都是1.1931817MHZ. PC機上的大多數I/O都是由主板上的8255(或8255A)可編程序外圍接口芯片(PPI)管理的.關于8255A的結構和工作原理及應用舉例參閱教材第340—373頁.教材第364頁的”PC/XT機中的揚聲器接口電路”一節介紹了揚聲器的驅動原理,并給出了通用發聲程序.本設計正是基于這個原理,通過編程,控制加到揚聲器上的信號的頻率,奏出樂曲的.2.發聲程序的設計下面是能產生頻率為f的通用發聲程序:MOV AL, 10110110B ;8253控制字:通道2,先寫低字節,后寫高字節 ;方式3,二進制計數OUT 43H, AL ;寫入控制字MOV DX, 0012H ;被除數高位MOV AX, 35DEH ;被除數低位 DIV ID ;求計數初值n,結果在AX中OUT 42H, AL ;送出低8位MOV AL, AHOUT 42H,AL ;送出高8位IN AL, 61H ;讀入8255A端口B的內容MOV AH, AL ;保護B口的原狀態OR AL, 03H ;使B口后兩位置1,其余位保留OUT 61H,AL ;接通揚聲器,使它發聲
上傳時間: 2013-10-17
上傳用戶:sunjet
44B0的測試程序。此程序為44B0的4*4鍵盤的應用程序,基于中斷0觸發,當按下其中一個鍵時,會把0-F的相應鍵值顯示在8段LED上。
上傳時間: 2013-12-19
上傳用戶:tuilp1a
設計說明:1。數據結構和表示:程序用1、2、3、4分別表示將右、上、左、下的數字塊移動到空格之中。采用典型的樹+鏈表結構,每種局面產生一個BoardState類。出于避免走法順序列表被過多復制的考慮,在樹結構中保存局面的繼承關系。每種新的局面產生后,引用估值函數產生f的值,再根據大小將其插入鏈表之中,以便實現“優先展開f值小的節點”。Solve()函數在成功解決問題之后保存一個走法序列供輸出并返回零,而失敗則返回失敗處的節點層數。(具體的判斷方法見后文)
上傳時間: 2015-05-02
上傳用戶:xieguodong1234
模塊使用外部濾波器回路來抑制信號抖動和電磁干擾。濾波器回路由PLL接在濾波器輸入引腳PLLF和PLLF2之間的電阻Rl和電容Cl、C2組成。電容 Cl、C2必須為無極性電容。在不同的振蕩器頻率下,R1、Cl、C2的取值不同,常用的參數組合如表l所列。PLL模塊的電源引腳PLLVCCA分別通過磁珠和0.1μF的電容與數字電源引腳VDD和數字地引腳VSS連接,構成低通濾波電路,保證時鐘模塊的可靠供電。模塊使用外部濾波器回路來抑制信號抖動和電磁干擾。濾波器回路由PLL接在濾波器輸入引腳PLLF和PLLF2之間的電阻Rl和電容Cl、C2組成。電容 Cl、C2必須為無極性電容。在不同的振蕩器頻率下,R1、Cl、C2的取值不同,常用的參數組合如表l所列。PLL模塊的電源引腳PLLVCCA分別通過磁珠和0.1μF的電容與數字電源引腳VDD和數字地引腳VSS連接,構成低通濾波電路,保證時鐘模塊的可靠供電。
上傳時間: 2014-01-07
上傳用戶:ikemada
關于FORTRAN的常用算法,對于F的愛好者有很大的幫助。
上傳時間: 2013-12-15
上傳用戶:851197153
Ex4-22 單射函數問題 « 問題描述: 設函數f將點集S = {0,1, , n -1}映射為f (S) = { f (i) | iÎ S} Í S 。單射函數問題要 從S中選取最大子集X Í S 使f (X )是單射函數。 例如,當n=7, f (S) = {1,0,0,2,2,3,6} Í S 時, X = {0,1,6} Í S 是所求的最大子集。 « 編程任務: 對于給定的點集S = {0,1, , n -1}上函數f,試用抽象數據類型隊列,設計一個O(n)時 間算法,計算f的最大單射子集。 « 數據輸入: 由文件input.txt 提供輸入數據。文件的第1 行有1 個正整數n,表示給定的點集 S = {0,1, , n -1}。第2 行是f (i)的值,0 £ i < n。 « 結果輸出: 程序運行結束時,將計算出的f的最大單射子集的大小輸出到output.txt中。 輸入文件示例 輸出文件示例 input.txt 7 1 0 0 2 2 3 6 output.txt 3
上傳時間: 2016-05-28
上傳用戶:tyler
Intel8253應用——發聲控制 Intel8253通道工作過程是:按本通道中給定的初值n,對輸入時鐘信號頻率f進行n分頻,輸出頻率為F的分頻信號,即F=f/n. 從而在通道輸出引線周圍產生一種與頻率F波形對應的電磁波,若用此電磁波控制一揚聲器,則可聽到與該電磁波對應的聲音。
上傳時間: 2016-08-01
上傳用戶:3到15
從鍵盤讀入一個四位的十六進制數,CRT顯示等值的二進制數. 由于每個十六進制數位對應4個二進制,所以每讀入一個十六進制位后,即可將其對應的4個二進制位依次輸出。由于數字‘0’~ ‘9’的ASCⅡ碼為30H~39H,字母‘a’~‘f’與 ‘A’~‘F’的ASCⅡ碼為61H~66H 與41H~46H ,因此,如果輸入的字母為數字‘0’~‘9’,則其低4位即為對應的二進制位;如果輸入的字符為字母‘a’~‘f’或‘A’~‘F’,則需要減7,然后通過移位將低4位依次輸出。
上傳時間: 2014-01-24
上傳用戶:yzhl1988
龍格-庫塔(Runge-Kutta)法是一種不同的處理,作為多級方法為人們所知。 它要求對于一個簡單的校正計算多個 f 的值。 這里是變步長四階龍格庫塔法的c程序
標簽: Runge-Kutta
上傳時間: 2014-01-01
上傳用戶:skhlm
-- 本模塊的功能是驗證實現和PC機進行基本的串口通信的功能。需要在 --PC機上安裝一個串口調試工具來驗證程序的功能。 -- 程序實現了一個收發一幀10個bit(即無奇偶校驗位)的串口控 --制器,10個bit是1位起始位,8個數據位,1個結束 --位。串口的波特律由程序中定義的div_par參數決定,更改該參數可以實 --現相應的波特率。程序當前設定的div_par 的值是0x104,對應的波特率是 --9600。用一個8倍波特率的時鐘將發送或接受每一位bit的周期時間 --劃分為8個時隙以使通信同步. --程序的工作過程是:串口處于全雙工工作狀態,按動SW0,CPLD向PC發送“welcome" --字符串(串口調試工具設成按ASCII碼接受方式);PC可隨時向CPLD發送0-F的十六進制 --數據,CPLD接受后顯示在7段數碼管上。
上傳時間: 2017-04-12
上傳用戶:lgnf