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