|
先簡(jiǎn)單地說一下思路,程序的要點(diǎn)是:
1 產(chǎn)生精準(zhǔn)的VGA信號(hào)時(shí)序
受速度限制,VGA顯示模式用最低的640*480@60Hz,這時(shí)行頻是31.46875K,場(chǎng)頻率是59.94Hz.如果單片機(jī)有硬件PWM,則行場(chǎng)同步信號(hào)可以輕易用PWM實(shí)現(xiàn).由于2051沒有PWM,只能用軟件模擬,并且不能用定時(shí)中斷的方式,因?yàn)橐笏俣忍?中斷響應(yīng)速度不夠快,且響應(yīng)時(shí)間也不一致,所以本程序中都是把行同步信號(hào)穿插在程序的各個(gè)適當(dāng)位置,類似于雙線程并行執(zhí)行,主振也選用2051能承受的最高頻率24MHz.
2 合理分配內(nèi)存.
2051只有128字節(jié)內(nèi)存,要儲(chǔ)存一幅畫面,顯示緩存就需占大部分.主窗口內(nèi)的面積越大,占用內(nèi)存就越多.經(jīng)估算窗口內(nèi)用14行*8列比較合適.此時(shí)顯示緩沖占用112字節(jié).余下的16字節(jié)用于程序中的工作寄器5字節(jié), 堆棧2字節(jié),其它為全局量.
3 協(xié)調(diào)各個(gè)功能模塊之間的工作配合
系統(tǒng)的任務(wù)不算多,主要的有顯示處理,同步處理,音效處理,按鍵處理,游戲規(guī)則處理(包括方塊移動(dòng),定時(shí)下落,重疊檢測(cè),越界檢測(cè),得分計(jì)數(shù),速度升級(jí)).各任務(wù)之間協(xié)調(diào)用類似于狀態(tài)機(jī)的方法,但又不完全等同.由于是用匯編,在很多情況下充分利用匯編的靈活性,使程序的模塊化不是很明顯.系統(tǒng)的主循環(huán)選用顯示一幀的時(shí)間約16.66MS(60Hz),所有任務(wù)必須在這時(shí)間內(nèi)處理完成.

http://www.zg4o1577.cn/bbs/dpj-19842-1.html
|
|