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

正文內(nèi)容

基于51單片機的俄羅斯方塊游戲_畢業(yè)設計論文-資料下載頁

2025-03-03 07:03本頁面

【導讀】與本研究成果相關的所有人所做出的任何貢獻均已在論文(設計)中作了明確。的說明并表示了謝意。計)被查閱和借閱。本人授權(quán)賀州學院可以將畢業(yè)論文(設計)的全部或部分內(nèi)容編入有。關數(shù)據(jù)庫進行檢索,可以采用影印、縮印或掃描等復制手段保存、匯編論文(設計)。俄羅斯方塊是一款風靡全球的益智游戲。它規(guī)則簡單,容易上手,且游戲過程變?;療o窮,使用戶在游戲中得到樂趣。該設計選用的處理器型號為STC12C5A60S2的單片機,實時操作。系統(tǒng)采用適用于8051處理器的RTX51Tiny多任務實時操作系統(tǒng)。重點從軟件工程角。設計法方,以及背景音樂的處理等技術。同時,該設計的獨創(chuàng)性是在8051系列單片。機中使用操作系統(tǒng)實現(xiàn)了雙人游戲和音效的添加。

  

【正文】 本是完整版,它使用四個任務優(yōu)先級來完成,同時存在時間片輪轉(zhuǎn)調(diào)度和搶先的任務切換。RTX51 Full 工作在與中斷功能相似的狀態(tài)下,信號和信息可以通過郵箱系統(tǒng)在任務之間互相傳遞。程序員可以從一存儲池中分配和釋放內(nèi)存,也可以強迫一個任務等待中斷、超時或者是從另一個任務或中斷發(fā)出的信號或信息。而本游戲系統(tǒng)采用的 RTX51 Tiny 是 RTX51 完整版的子集,它完全集成在 Keil C51 的集成開 發(fā)環(huán)境中。自身僅占用 900 字節(jié)左右的程序存儲空間。 RTX51 Tiny 僅支持時間片輪轉(zhuǎn)任務切換和使用信號進行任務切換。不支持搶先式的任務切換,不包括消息歷程,沒有存儲器池分配程序。 RTX51 Tiny 雖然比較簡陋,但它還是具備了一些實時操作系統(tǒng)的基本要素,又因為它完全集成在 Keil C51 的集成開發(fā)環(huán)境中,可以使用戶把更多的精力關注在應用本身而無需考慮復雜的底層驅(qū)動,而且整個應用軟件系統(tǒng)結(jié)構(gòu)清晰,維護方便,可節(jié)省大量的時間和人力。當程序比較復雜時,它的優(yōu)點就體現(xiàn)得更明顯。 RTX51 Tiny完全可以充當我 們進入實時操作系統(tǒng)( RTOS)世界的領路者,更為重要的是,它是免費的。無論如何, RTX51 Tiny 仍然是在 8位單片機中應用操作系統(tǒng)的首選。 RTX51 Tiny 的內(nèi)核分析 該小節(jié)只介紹本設計中用到 RTX51 Tiny 系統(tǒng)的相關知識與配置方法。讀者若想更全面了解 RTX51 Tiny 多任務實時操作 系統(tǒng),請閱讀 RTX51 Tiny 的幫助文件或其它相關文件。 (1) RTX51 Tiny 程序的編寫方法 若要 使用 RTX51 Tiny 的內(nèi)核 , 只需包含文件 即可 。所有的運行 時庫 常量都在這個 頭文件中定義??梢圆捎靡韵路绞桨? # include 當使用 Rtx51 Tiny時,要為每個任務建立獨立的任務函數(shù)。同時, RTX51 Tiny 任務必須是用 _task_聲明的 C 函數(shù),返回值和參數(shù)都必須是 void 類型的, RTX51 Tiny黃忠南 基于單片機的俄羅斯方塊游戲設計 30 程序不需要用戶自已定義 main 函數(shù),取而代之 的是 , RTX51 Tiny 從任務 0開始執(zhí)行。在典型的應用中,任務 0 簡單的建立所有其他的任務。 (2) 系統(tǒng)調(diào)用函數(shù) 簡介 RTX51 Tiny 內(nèi)核完全集成在 KEIL C51 編譯器中,以系統(tǒng)函數(shù)調(diào)用的方 式運行,因此可以很容易地使用 KEIL C51 語言編寫和編譯一個多任務程序,并嵌入到實際應用系統(tǒng)中,內(nèi)核提供 多組 函數(shù)供應用程序引用。 (3) RTX51 Tiny 的 任務狀態(tài) RTX51 Tiny 的用戶任務具有以下幾個狀態(tài): RUNNING: 任務處于運行中,同一時間只有一個搶占 任務可以處于“ RUNNING”狀態(tài)。 READY :任務正在等待運行,在當前運行的任務時間片完成之后, RTX51 Tiny 運行下一個處于“ READY”狀態(tài)的任務。 WAITING: 任務由于時間片用完而處于“ TIME OUT”狀態(tài) ,并等待再次運行。該狀態(tài)與“ READY”狀態(tài)相似,但由于是內(nèi)部操作過程使一個循環(huán)任務被切換而被冠以標記。如圖 317 所示為任務狀態(tài)轉(zhuǎn)換圖 [8]。 圖 317 任務狀態(tài)轉(zhuǎn)換圖 Fig 317 Task state transition diagram (4) RTX51 Tiny 的 同步機制 為了能保證任務在執(zhí)行次序上的協(xié)調(diào),必須采用同步機制。內(nèi)核用以下事件進行任務間的通信和同步。 ① SIGNAL:用于任務之間通信的位,可以用系統(tǒng)函數(shù)置位或 清除。如果一個任務調(diào)用os_wait 函數(shù)等待 SIGNAL 而 SIGNAL 未置位,則該任務被掛起直到 SIGNAL 置位,才返回到 READY 狀態(tài),并可被再次執(zhí)行。 ② TIMEOUT:由 os_wait 函數(shù)開始的時間延時,其持續(xù)時間可由定時節(jié)拍數(shù)確定。帶有 TIMEOUT 值調(diào)用 os_wait 函數(shù)的任務將被掛起,直到延時結(jié)束,才返回到 READY 狀態(tài),并可被再次執(zhí)行。 ③ INTERVAL:由 os_wait 函數(shù)開始的時間間隔,其間隔時間可由定時節(jié)拍數(shù)確定。帶信號或超時到來 等待信號或超時 時間片結(jié)束 時間片到來 READY/TIMEOUT RUNNING WAITING 賀州學院本科生畢業(yè)論文(設計) 31 有 INTERVAL 值調(diào)用 os_wait 函數(shù)的任務將被掛起,直到間隔時間 結(jié)束,然后返回到READY 狀態(tài),并可被再次執(zhí)行。與 TIMEOUT 不同的是,任務的節(jié)拍計數(shù)器不復位。 (5) RTX51 TINY 的 任務切換 方式 任務切換是 RTX51 TINY 提供的基本服務。 RTX51 TINY 是基于時間片調(diào)度算法的操作系統(tǒng),它支持的是非搶占式的任務切換。所以在一個任務被執(zhí)行時不能對其進行中斷,除非該任務主動放棄 CPU 的資源,中斷才可以打斷當前的任務,中斷完成后把CPU 的控制權(quán)再交還該被中斷的任務。 任務切換的流程如圖 318 所示 [8]。 圖 318 任務切換流程圖 Fig 318 Task switching flowchart TASK SWITCHING SWITCHING NOW 寄存器組切換 當前任務時間片到標志置位 查找下一個“ READY”狀態(tài)的任 務 N 對任務 N堆棧管理 重置任務 N節(jié)拍數(shù) 任務 N 因時間片到轉(zhuǎn)入就緒狀態(tài) 任務 N 因等信號且信號到,轉(zhuǎn)入就緒狀態(tài) 任務 N 因等超時且超時到,轉(zhuǎn)入就緒狀態(tài) 任務 N 因其他原因轉(zhuǎn)入就緒狀態(tài) 清除時間片到標志 清除等待信號及信號到標志 清除等超時及超時標志 恢復因 T0中斷保護的現(xiàn)場 返回任務 N 執(zhí)行,任務N 成 為 當 前 任 務( SWITCHING 出口) 返回任務 N 執(zhí)行,任務 N 成為當前任務 ( SWITCHING NOW 出口) 黃忠南 基于單片機的俄羅斯方塊游戲設計 32 任務切換方式 分為 兩種 : 循環(huán)任務切換 方式 和 協(xié)作任務切換方式 。 如果禁止了循環(huán)任務處理 (如何禁止此方式在 RTX51 Tiny 系統(tǒng) 配置 一節(jié) 中 再作介紹) ,就必須讓任務以協(xié)作的方式運作, 用戶 可以用 os_wait 函數(shù) 或 os_switch_task函數(shù) 讓 RTX51 Tiny切換到另一個任務而不是等待任務的時間片用完。 os_wait 函數(shù)掛起當前的任務(使之變?yōu)榈却龖B(tài))直到指定的事件發(fā)生(接著任務變?yōu)榫途w態(tài))。在此期 間,任意數(shù)量的其他任務可以運行。 具體 做法是 在每個任務里調(diào)用 os_wait 函數(shù) 或 os_switch_task 函數(shù) ,以通知RTX51 Tiny 切換到另一個任務。 os_wait 函數(shù) 與 os_switch_task 函數(shù) 的所不同是:os_wait 函數(shù) 是讓任務等待一個事件,而 os_switch_task 函數(shù) 是立即切換到另一個就緒的任務。 游戲 開發(fā)環(huán)境的 配置 (1) Keil 的配置 編譯和鏈接 RTX51 Tiny 應用程序有 2種途徑,一種是使用集成開發(fā)環(huán)境μ Vision 3 IDE,另一種是使用命令行工具 CommandLine Tools。一般采用德國 Keil Software公司提供的集成開發(fā)環(huán)境 μ Vision 3 IDE。 利用 Keil Software 公司提供的集成開發(fā)環(huán)境 μ Vision 3 IDE,創(chuàng)建 RTX51 Tiny應用程序的開始的步驟如下: ① 運行 Keil Software 公司的集成開發(fā)環(huán)境 μ Vision 3 IDE。 ② 運行菜單命令 Project→ Options for Target‘ Target 1’,打開 Target 對話框,并在對話框中選擇 Target 選項卡。 ③ 從 Operating 下拉列表框中選擇 RTX51 Tiny。 (2) RTX51 Tiny 系統(tǒng) 內(nèi)核 配置 建立了嵌入式應用后, RTX51 Tiny 必須要配置。所有的配置設置都在 文件中,該文件位于 KEIL C51/RTXTINY2目錄下。 默認 包含在 RTX51 Tiny 庫中。 μ Vision 3 IDE 編譯 RTX51 Tiny 程序時已 將 文 件拷貝到工程目錄下并將其加入 到 工程中。通過改變 中的設置來定制 RTX51 Tiny 的 系統(tǒng) 配置。 下面僅對本設計中所需做的系統(tǒng)配置進行詳細介紹。 ① 在 系統(tǒng) 默認 配置 下應用 程序設計 中出現(xiàn)的 問題 首先, 在雙人模式下,應用程序中的兩個進程都需要對 LCD12864 顯示屏進行讀賀州學院本科生畢業(yè)論文(設計) 33 寫操作。在多任務實時系統(tǒng)下就會出現(xiàn)“資源沖 突”的問題。 其次是函數(shù)的重入性問題。 還有就是 多個 指針 型 數(shù)據(jù) 在 任務中使用的問題。 C51 編譯器允許使用多個數(shù)據(jù)指針。 RTX51 Tiny 對他們不進行管理,所以在應用中必須確保在改變數(shù)據(jù)指針時不會發(fā)生 roundrobin 切換。 ② 具體配置方法 為解決上述問題,本設計 禁止循環(huán)任務切換 ,采用協(xié)助任務 切換的方式進行多任務間的切換。 Roundrobin 切換是默認使能的,以下參數(shù)用來設定 Roundrobin 切換的時間或禁能 Roundrobin 切換 。 IMESHARING 指定任務在進行 Roundrobin 切換前執(zhí)行的 RTX51 Tiny 時鐘節(jié)拍數(shù)。當這個值為 0時禁止 Roundrobin 切換。缺省值是 5個時鐘節(jié)拍。 如果禁止了 roundrobin 多任務 切換 ,必須設計 將應用程序要執(zhí)行的 任務以Cooperative 任務切換 的 方式工作。特別地,必須在每個任務的某個地方調(diào)用 os_wait函數(shù) 或 os_switch_task 函數(shù)。這些函數(shù)告知 RTX51 Tiny 切換到另一任務。函數(shù)os_wait 和函數(shù) os_switch_task 的不同之處在于 os_wait 函數(shù) 可以讓任務等待某一事件的發(fā)生,而函數(shù) os_switch_task 函數(shù) 直接切換到另一個 準備 就緒的任務。 雙人單機對戰(zhàn) 模式 的實現(xiàn) 流程 本系統(tǒng) 實現(xiàn) 的 雙人 游戲 模式是建立在單人 游戲 模式的基礎上的。其基本思路是利用 RTX51 Tiny 多任務實時操作系統(tǒng)來完成 多個事件的準并行實行 運行。 其中進程 0和進程 1的程序流程是大致相同的。 如圖 319所示為雙人模式下 的 相關程序流程。 系統(tǒng)背景音樂的設計 音樂的設計 原理 對于單片機產(chǎn)生音樂,關鍵是控制頻率的輸出。我們知道,樂譜中每一個音符都與某一個特定的頻率相對應,產(chǎn)生某種頻率的輸出就可以得到相應音符的聲音。音樂中,有 8個基本音符: do、 re、 mi、 fa、 so、 la、 xi、 do,八個不同的音符對應著不同的頻率。為了使單片機能輸出美妙的音樂, 曲譜不僅 需要包含音 名 的信息,而且還要包含有節(jié)拍的信息。因此,本設計采用的是一種音名同節(jié)拍混排的一種方式來對曲譜進行的編碼。即 按照下列方法進行編碼:一個字節(jié)共八位,高兩 位表示節(jié)拍,三四位表示音高,低四位表示音符。節(jié)拍是兩位,有四種狀態(tài),表示四種節(jié)拍;音高是兩位,有四種狀態(tài),表示三種不同的音高(低音、中音、高音);音符用四位表示,有黃忠南 基于單片機的俄羅斯方塊游戲設計 34 十六種狀態(tài),來表示每個調(diào)的十二種不同的音符。這些樂譜數(shù)據(jù)的生成是由樂譜生成器來產(chǎn)生的。 在本設計中, RTX51 TINY 允許同時 “ 準并行 ” 地執(zhí)行多個任務 , 各個任務是在預先設定 圖 319 雙人游戲程序流 程圖 Fig 319 Double game processes flowchart Y N Y Y Y N Y N Y N Y N Y N Y N Y N 游戲配置為雙人模式 啟動游戲 進程 0 進程 1 使用協(xié)助方式進行任務切換 速降信號 平移信號 平移信號 道具信號 速降信號 道具信號 執(zhí)行相關平移操作 執(zhí)行相關平移操作 執(zhí)行速降操作 執(zhí)行速降操作 下移操作 下移操作 執(zhí)行道具功能 執(zhí)行道具功能 積分統(tǒng)計 積分統(tǒng)計 使用協(xié)助方式進行任務切換 積分到上限 積分 到上限 停止游戲 停止游戲 賀州學院本科生畢業(yè)論文(設計) 35 的時間片內(nèi)執(zhí)行 的 。 CPU 執(zhí)行時間被劃分為若干時間片, RTX51 TINY 為每個任務分配一個時間片,在一個時間片內(nèi)允許執(zhí)行某個任務,然后 RTX51 TINY 切換到另一個就緒的任務并允許它在其規(guī)定的時間片內(nèi)執(zhí)行。 這個過程的實現(xiàn)是 RTX51 TINY 利用單片機內(nèi)部定時器 T0的中斷功能實現(xiàn) 的 。 此外 STC12C5A60S2 單片機提供了用 PCA模塊實現(xiàn) 16 位定時器的功能。所以本設計通過控制內(nèi)部 PCA 模塊構(gòu)成的定時器產(chǎn)生不同頻率的脈沖,從而驅(qū)動蜂鳴器發(fā)出相應頻率的聲音,而發(fā)音時間的長短用定時器 T1來控制。 音樂
點擊復制文檔內(nèi)容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1