目錄
摘要1
1 方案論證.
1.1 開發意義
1.2 功能介紹.
2 設計思路
3 硬件電路
2.1 74HC573驅動芯片電路.
2.2 8*8LED點陣的接口電路..
2.3單片機最小系統電路..
2.4整體電路圖.
4 系統調試..
3.1硬件調試
3.2軟件調試..
5 作品展示
6 元器件清單..
7 結束語..
致謝
參考文獻.
游戲機的制作:俄羅斯方塊 摘要: 近年來隨著計算機在社會領域的滲透, 單片機的應用正在不斷地走向深入,應用到各個領域。在實時檢測和自動控制的單片機應用系統中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據具體硬件結構,以及針對具體應用對象特點的軟件結合,以作完善。 我做的題目是一個用51單片機制作的游戲機,大致分位軟件和硬件2大部分,硬件主要通過5按鍵、1個8*8LED點陣屏、一個單片機系統,實現積木的左、右、下、變化、復位五個模式,完全達到俄羅斯方塊所實現的功能。 次項目用專門的PROTUES仿真,而采用KEIL軟件程序進行程序調試
1 方案論證 1.1 開發意義: 充分理解點陣顯示的原理,已經動態掃描的應用,對生活中的產品有了個全新的認識,不但懂得理論與實際的差距,也時對自己思維的一次強有力的挑戰,做出這個東西讓我收獲良多。 1.2 功能介紹: 開始讓他顯示個積木,在按鍵沒實現控制的時候,每隔1S下移一次,有觸底處理功能,當碰到底的時候圖形不能下移,判斷能否消行,能消行則消行,不能再判斷是否到頂,到底則從新開始,沒到底產生下個隨即數,中間有5個按鍵控制,一個實現圖形左移,一個實現圖形右移,一個實現下移,一個實現旋轉,一個復位。 2 設計思路 圖形的上下移動: 根據點陣理論可通過圖形數據的左右移動和地址變化來實現。 圖形的變化: 可通過地址變化來得到。即把需要變化的數據送到一固定地址,通過地址變化再送回顯示的地址里面。 圖形的碰邊處理: 可通過各個邊上的數據判斷是否到邊來實現。 與原有圖形相遇: 可通過與原有圖形數據進行比較處理來實現。: 圖形的旋轉: 在固定地址里面實現旋轉比較容易,但是在行進中的圖形旋轉就比較費腦筋,我是用一個地址計數下移的次數,再用一個地址計數左移右移的次數。再根據這些次數確定圖形的地址,再把這些地址送到圖形變化的一個固定的地址中,變化后再送回到顯示的地址中去顯示。 圖形的碰邊處理: 如果不對圖形進行邊框處理,圖形就會一直移動,看不到我們想要的效果。我是用把邊框數據與圖形數據進行位運算。再判斷這些數據就可以得到圖形是否到邊。 3 硬件電路 2.1 74HC573驅動芯片電路

此芯片時個鎖存器,也可以做驅動芯片驅動LED點陣屏幕,這里面的電源和地系統附加了 但是實際中的加上去,不然芯片不能工作。
2.2 8*8LED點陣的接口電路
上面的是仿真的圖 上端接數據 下端開片選 但是實際中引腳很不規則,所有的花時間去測 用一節干電池,或者用指針萬用表打到電阻10K檔。
2.3 單片機最小系統電路 2.4 整體電路圖以及仿真效果
但是里面的電源、地、晶振、復位、EA等 在仿真中系統自動加的 要是在實際生活中的加進去。
4 系統調試 3.1 硬件調試 第一 檢查單片機的最小系統是否正常,包括檢查晶振、單片機2端電壓、復位電路已經EA 第二 看驅動芯片是否工作正常、接法是否正確,再檢查LED點陣是否接的正確,可以用一節干電池測,也可以用指針萬用表打到電阻10K檔位測。 3.2 軟件調試 流程圖
程序代碼
5 作品展示 6 元器件清單 AT89S52芯片一個 8元 5個按鍵 0.5元 74HC573驅動芯片 2元 LED點陣屏幕 8元 1個1K的上拉排阻 1元 一個10uf電容電解電容 8個100的限流電阻 2個30pf電容無極性 一個LED指示燈 1個330的電阻 一個10K電阻 1個11.0592的晶振 合計:24元 7 結束語 我在前面的一些處理還是比較順利,比如說按鍵的處理、下移、左右移、旋轉、消行、碰邊等問題,2天的時間就弄好了。最浪費我時間的是與下面的圖形相遇的處理。開始判倒是能夠判斷,但只能在一個固定的區域里停止下移。后來經過老師指導要我把顯示圖形的三個地址作為一個整體判斷,也弄了好久,還是有些地方不能判斷出來,思考好久之后我才想到用這個方法判斷出來。還有旋轉,開始總想不到算法,最后老師指導我用位地址操作 先把圖形放旋轉區旋轉 在放到操作地址區,記下左右上下移動次數確實幫了我不少的忙 碰邊處理用異或處理。觸底時把每一行數據放個定義的地址區域,最后與#0FFH判斷做很妙。 還有就是硬件處理的比較麻煩,開始不太清楚點陣的引腳排布,這里弄了好久,后來驅動那里也出現了好多問題,開始我用74HS373來驅動,沒注意引腳排列,最后用了74HC573 他們功能一樣,但是74HC573輸入輸出接在一邊便于排線。 開始沒有規劃好地址的用途。到最后出現了地址不夠用的現象,所以良好的編程習慣很重要。 通過這個項目,真的時對自己思維的一次很大的挑戰,程序1200多行,AT89S51裝不下,改用AT89S52做。 通過這次項目我找到點成就感,也希望自己以后能經常有這種成就感,在電子領域站一席之地。 致 謝 在此論文撰寫過程中,要特別感謝我的導師的指導與督促,同時感謝她的諒解與包容。沒有何老師的幫助也就沒有今天的這篇論文。求學歷程是艱苦的,但又是快樂的。感謝我的班主任XXX老師,謝謝他在這三年中為我們全班所做的一切,他不求回報,無私奉獻的精神很讓我感動,再次向他表示由衷的感謝。在這三年的學期中結識的各位生活和學習上的摯友讓我得到了人生最大的一筆財富。在此,也對他們表示衷心感謝。 謝謝我的父母,沒有他們辛勤的付出也就沒有我的今天,在這一刻,將最崇高的敬意獻給你們! 本文參考了大量的文獻資料,在此,向各學術界的前輩們致敬!
單片機源程序如下:
- ;俄羅斯方塊,采用移片選的方法.
- ;編譯時間: 09年1月15
- ;編譯者: 譚華
- ;實現功能: 俄羅斯方塊的旋轉,左移,右移
- ; 消行 碰邊 觸底 產生隨即數等 基本實現右移的基本功能
- ;==============初始化自定義========================================
- pianxuan equ p2
- shuchu equ p1
- bt0 equ 20h.0
- bt1 equ 20h.1
- bt2 equ 20h.2
- bt3 equ 20h.3
- bt4 equ 20h.4
- bt5 equ 20h.5
- bt6 equ 20h.6
- bt8 equ 21h.0
- bt9 equ 21h.1
- bt10 equ 21h.2
- bt11 equ 21h.3
- ;============================================
- org 0000h
- ajmp start
- org 0bh
- ljmp intt0
- org 30h
- ;=============主程序初始化================================
- start: mov sp, #60h
- mov tmod, #21h
- mov th0, #0b1h
- mov tl0, #0e0h
- mov th1, #25
- mov tl1, #25
- mov r1, #00
- call chushihua
- call chuzhi
- setb ea
- setb et0
- setb tr0
- setb tr1
- clr bt0
- clr bt1
- clr bt2
- clr bt3
- clr bt4
- clr bt5
- clr bt8
- clr bt9
- clr bt10
- clr bt11
- setb bt6
- mov 35h, #0feh
- mov r2, #00
- mov r4, #00
- ;=====================================================
- ; 主程序
- ;======================================================
- main:
- jnb bt0, main
- clr bt0
- call saomiao ;掃描按鍵
- call xianshi0 ;調用下移顯示畫面子程序
- call xianshi ;調用觸邊后靜態圖形顯示的子程序
- jb bt10, loop ;判斷是否觸頂,=1,游戲結束,跳到滿屏顯示
- call chudi ;調用觸底子程序
- call xiaohang ;調用消行判斷子程序
- call yanshi_40ms ;調用延時40ms消抖子程序,40ms到,BT5置1
- jnb bt5, xia0
- clr bt5
- call panduan ;調用按鍵判斷處理子程序
- xia0: jnb bt9, xia ;圖形快速下落標志位,=1快速下落
- clr bt9
- call xialuo ;調用圖形下落子程序
- ajmp main
- xia: call yanshi_1s ;延時1s子程序.1s到,BT1=1
- jnb bt1, main
- clr bt1
- call xialuo
- ajmp main
- loop: call yanshi_500ms ;調用延時500ms子程序,500ms到bt11=1
- jnb bt11, main
- clr bt11
- call manping ;調用滿屏全亮子程序
- ajmp main
-
-
- ;=====================================================
- ; 按鍵掃描
- ;=====================================================
- saomiao:
- jb p3.2, qq0
- setb bt2
- ajmp qq
- qq0: jb p3.1, qq1
- setb bt3
- ajmp qq
- qq1: jb p3.0, qq2
- setb bt4
- ajmp qq
- qq2: jb p3.3, qq4
- setb bt8
- ajmp qq
- qq4: setb bt6
- clr bt2
- clr bt3
- clr bt4
- clr bt8
- qq: ret
- ;=====================================================
- ; 圖形下移子程序
- ;=====================================================
- xialuo:
- mov a, 35h
- rl a
- mov 35h, a
- ret
-
- ;============================================
- ; 判斷子程序
- ;=====================================================
- panduan:
- jnb bt2, ww0
- clr bt2
- jnb bt6, ww0
- clr bt6
- call youyi
- ajmp ww
- ww0: jnb bt3, ww1
- clr bt3
- jnb bt6, ww1
- clr bt6
- call zuoyi
- ajmp ww
- ww1: jnb bt4, ww2
- clr bt4
- jnb bt6, ww2
- clr bt6
- call zhuan
- ajmp ww
- ww2: jnb bt8, ww
- clr bt8
- jnb bt6, ww
- clr bt6
- call kuaixia
- ww: ret
-
-
- ;============================================================
- ; 快速下落子程序
- ;=============================================================
- kuaixia: setb bt9
- ret
- ;============================================================
- ; 滿屏子程序
- ;============================================================
- manping: mov 41h, #0ffh
- mov 42h, #0ffh
- mov 43h, #0ffh
- mov 44h, #0ffh
- mov 45h, #0ffh
- mov 46h, #0ffh
- mov 47h, #0ffh
- mov 48h, #0ffh
- ret
- ;============================================================
- ; 清屏子程序
- ;============================================================
- qingping: mov 41h, #00h
- mov 42h, #00h
- mov 43h, #00h
- mov 44h, #00h
- mov 45h, #00h
- mov 46h, #00h
- mov 47h, #00h
- mov 48h, #00h
- ret
- ;============================================
- ; 下移顯示
- ;=====================================================
- xianshi0: mov a, 35h
- mov p1, 31h
- mov p2, a
- call delay
- rl a
- mov p1, #00
- mov p1, 32h
- mov p2, a
- call delay
- rl a
- mov p1, #00
- mov p1, 33h
- mov p2, a
- call delay
- mov p1, #00
- ret
- ;=====================================================
- ; 圖形右移子程序
- ;=====================================================
- zuoyi:
- mov a, 31h
- jnb acc.0, dd1
- ajmp dd
- dd1: mov a, 32h
- jnb acc.0, dd2
- ajmp dd
- dd2: mov a, 33h
- jnb acc.0, dd3
- ajmp dd
- dd3: mov a, 35h
- cjne a,#0feh,sa0
- call sad0
- ajmp dd
- sa0: mov a, 35h
- cjne a,#0fdh,sa1
- call sad1
- ajmp dd
- sa1: mov a, 35h
- cjne a,#0fbh,sa2
- call sad2
- ajmp dd
- sa2: mov a, 35h
- cjne a,#0f7h,sa3
- call sad3
- ajmp dd
- sa3: mov a, 35h
- cjne a,#0efh,sa4
- call sad4
- ajmp dd
- sa4: mov a, 35h
- cjne a,#0bfh,dd
- call sad5
- ajmp dd
- dd: ret
-
- sad0: mov a, 33h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,43h
- cjne a,#00,dd4
- mov 33h, 39h
- mov a, 32h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,42h
- cjne a,#00,dd4
- mov 32h, 39h
- mov a, 31h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,41h
- cjne a,#00,dd4
- mov 31h, 39h
- dec 51h
- dd4: ret
- sad1: mov a, 33h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,44h
- cjne a,#00,dd5
- mov 33h, 39h
- mov a, 32h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,43h
- cjne a,#00,dd5
- mov 32h, 39h
- mov a, 31h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,42h
- cjne a,#00,dd5
- mov 31h, 39h
- dec 51h
- dd5: ret
- sad2: mov a, 33h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,45h
- cjne a,#00,dd6
- mov 33h, 39h
- mov a, 32h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,44h
- cjne a,#00,dd6
- mov 32h, 39h
- mov a, 31h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,43h
- cjne a,#00,dd6
- mov 31h, 39h
- dec 51h
- dd6: ret
- sad3: mov a, 33h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,46h
- cjne a,#00,dd7
- mov 33h, 39h
- mov a, 32h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,45h
- cjne a,#00,dd7
- mov 32h, 39h
- mov a, 31h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,44h
- cjne a,#00,dd7
- mov 31h, 39h
- dec 51h
- dd7: ret
- sad4: mov a, 33h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,47h
- cjne a,#00,dd8
- mov 33h, 39h
- mov a, 32h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,46h
- cjne a,#00,dd8
- mov 32h, 39h
- mov a, 31h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,45h
- cjne a,#00,dd8
- mov 31h, 39h
- dec 51h
- dd8: ret
- sad5: mov a, 33h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,48h
- cjne a,#00,dd9
- mov 33h, 39h
- mov a, 32h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,47h
- cjne a,#00,dd9
- mov 32h, 39h
- mov a, 31h
- rr a
- mov 39h,#00
- mov 39h, a
- anl a,46h
- cjne a,#00,dd9
- mov 31h, 39h
- dec 51h
- dd9: ret
-
- ;===============圖形左移子程序======================================
- ;通過圖形移動一位,與靜止圖形相與,為零則移動,否則原地不動
- ;
- ;=====================================================
- youyi: mov a, 31h
- jnb acc.7, cc0
- ajmp cc20
- cc0: mov a, 32h
- jnb acc.7, cc1
- ajmp cc20
- cc1: mov a, 33h
- jnb acc.7, cc
- ajmp cc20
- cc: mov a, 35h
- cjne a,#0feh,zz0
- call scd0
- ajmp cc20
- zz0: mov a, 35h
- cjne a,#0fdh,zz1
- call scd1
- ajmp cc20
- zz1: mov a, 35h
- cjne a,#0fbh,zz2
- call scd2
- ajmp cc20
- zz2: mov a, 35h
- cjne a,#0f7h,zz3
- call scd3
- ajmp cc20
- zz3: mov a, 35h
- cjne a,#0efh,zz4
- call scd4
- ajmp cc20
- zz4: mov a, 35h
- cjne a,#0bfh,cc20
- call scd5
- ajmp cc20
- cc20: ret
-
- scd0: mov a, 33h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,43h
- cjne a,#00,cc2
- mov 33h, 39h
- mov a, 32h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,42h
- cjne a,#00,cc2
- mov 32h, 39h
- mov a, 31h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,41h
- cjne a,#00,cc2
- mov 31h, 39h
- inc 51h
- cc2: ret
- scd1: mov a, 33h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,44h
- cjne a,#00,cc3
- mov 33h, 39h
- mov a, 32h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,43h
- cjne a,#00,cc3
- mov 32h, 39h
- mov a, 31h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,42h
- cjne a,#00,cc3
- mov 31h, 39h
- inc 51h
- cc3: ret
- scd2: mov a, 33h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,45h
- cjne a,#00,cc4
- mov 33h, 39h
- mov a, 32h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,44h
- cjne a,#00,cc4
- mov 32h, 39h
- mov a, 31h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,43h
- cjne a,#00,cc4
- mov 31h, 39h
- inc 51h
- cc4: ret
- scd3: mov a, 33h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,46h
- cjne a,#00,cc5
- mov 33h, 39h
- mov a, 32h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,45h
- cjne a,#00,cc5
- mov 32h, 39h
- mov a, 31h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,44h
- cjne a,#00,cc5
- mov 31h, 39h
- inc 51h
- cc5: ret
- scd4: mov a, 33h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,47h
- cjne a,#00,cc6
- mov 33h, 39h
- mov a, 32h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,46h
- cjne a,#00,cc6
- mov 32h, 39h
- mov a, 31h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,45h
- cjne a,#00,cc6
- mov 31h, 39h
- inc 51h
- cc6: ret
- scd5: mov a, 33h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,48h
- cjne a,#00,cc7
- mov 33h, 39h
- mov a, 32h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,47h
- cjne a,#00,cc7
- mov 32h, 39h
- mov a, 31h
- rl a
- mov 39h,#00
- mov 39h, a
- anl a,46h
- cjne a,#00,cc7
- mov 31h, 39h
- inc 51h
- cc7: ret
- ;======================================================
- ; 圖形旋轉子程序
- ;======================================================
- zhuan: cjne r1,#0, bu0
- call zhuan0
- ajmp bu
- bu0: cjne r1,#1, bu1
- call zhuan1
- ajmp bu
- bu1: cjne r1,#2, bu2
- call zhuan2
- ajmp bu
- bu2: cjne r1,#3, bu3
- call zhuan3
- ajmp bu
- bu3: cjne r1,#4, bu
- call zhuan4
- bu: ret
- zhuan0: inc r2
- cjne r2,#1, gg0
- mov 31h, #10h
- mov 32h, #18h
- mov 33h, #10h
- call yizhou
- ajmp gg
- gg0: cjne r2,#2, gg1
- mov 31h, #38h
- mov 32h, #10h
- mov 33h, #00h
- call yizhou
- ajmp gg
- gg1: cjne r2,#3, gg2
- mov 31h, #10h
- mov 32h, #30h
- mov 33h, #10h
- call yizhou
- ajmp gg
- gg2: cjne r2,#4, gg
- mov r2, #00
- mov 31h, #10h
- mov 32h, #38h
- mov 33h, #00h
- call yizhou
- gg: ret
- zhuan1: inc r2
- cjne r2,#1, ggg0
- mov 31h, #08h
- mov 32h, #18h
- mov 33h, #10h
- call yizhou
- ajmp ggg
- ggg0: cjne r2,#2, ggg
- mov 31h, #30h
- mov 32h, #18h
- mov 33h, #00h
- mov r2, #00
- call yizhou
- ggg: ret
-
- zhuan2: inc r2
- cjne r2,#1, hh0
- mov 31h, #18h
- mov 32h, #30h
- mov 33h, #00h
- call yizhou
- ajmp hh
- hh0: cjne r2,#2, hh
- mov 31h, #10h
- mov 32h, #18h
- mov 33h, #08h
- mov r2, #00
- call yizhou
- hh: ret
- zhuan3: inc r2
- cjne r2,#1, hh1
- mov 31h, #20h
- mov 32h, #38h
- mov 33h, #00h
- call yizhou
- ajmp hh4
- hh1: cjne r2,#2, hh2
- mov 31h, #18h
- mov 32h, #10h
- mov 33h, #10h
- call yizhou
- ajmp hh4
- hh2: cjne r2,#3, hh3
- mov 31h, #38h
- mov 32h, #08h
- mov 33h, #00h
- call yizhou
- ajmp hh4
- hh3: cjne r2,#4, hh4
- mov r2, #00
- mov 31h, #10h
- mov 32h, #10h
- mov 33h, #30h
- call yizhou
- hh4: ret
- zhuan4: inc r2
- cjne r2,#1, hh5
- mov 31h, #10h
- mov 32h, #10h
- mov 33h, #18h
- call yizhou
- ajmp hh8
- hh5: cjne r2,#2, hh6
- mov 31h, #38h
- mov 32h, #20h
- mov 33h, #00h
- call yizhou
- ajmp hh8
- hh6: cjne r2,#3, hh7
- mov 31h, #18h
- mov 32h, #08h
- mov 33h, #08h
- call yizhou
- ajmp hh8
- hh7: cjne r2,#4, hh8
- mov r2, #00
- mov 31h, #08h
- mov 32h, #38h
- mov 33h, #00h
- call yizhou
- hh8: ret
- ;====================================================
- yizhou:
- mov a, 51h
- cjne a,#5, tt7
- jmp tt
- tt7: cjne a,#6, tt0
- call yyizhou
- jmp tt
- tt0: cjne a,#7, tt1
- call yyizhou
- call yyizhou
- call zhuanpan0
- jmp tt
- tt1: cjne a,#8, tt2
- call yyizhou
- call yyizhou
- call yyizhou
- call zhuanpan0
- jmp tt
- tt2: cjne a,#9, tt3
- call yyizhou
- call yyizhou
- call yyizhou
- call yyizhou
- call zhuanpan0
- jmp tt
- tt3: cjne a,#4, tt4
- call zyizhou
- jmp tt
- tt4: cjne a,#3, tt5
- call zyizhou
- call zyizhou
- jmp tt
- tt5: cjne a,#2, tt6
- call zyizhou
- call zyizhou
- call zyizhou
- call zhuanpan1
- jmp tt
- tt6: cjne a,#1, tt
- call zyizhou
- call zyizhou
- call zyizhou
- call zyizhou
- call zhuanpan1
- tt: ret
- ;=========觸邊旋轉判斷====================
- zhuanpan0:
- mov a, 31h
- jnb acc.0, hui0
- call zyizhou
- ajmp hui
- hui0: mov a, 32h
- jnb acc.0, hui1
- call zyizhou
- ajmp hui
- hui1: mov a, 33h
- jnb acc.0, hui
- call zyizhou
- hui: ret
- ;========觸邊旋轉判斷====================
- zhuanpan1:
- mov a, 31h
- jnb acc.7, hui3
- call yyizhou
- ajmp hui2
- hui3: mov a, 32h
- jnb acc.7, hui4
- call yyizhou
- ajmp hui2
- hui4: mov a, 33h
- jnb acc.7, hui2
- call yyizhou
- hui2: ret
- ;===========X軸右移一位=================
- yyizhou:
- mov a, 31h
- rl a
- mov 31h, a
- mov a, 32h
- rl a
- mov 32h, a
- mov a, 33h
- rl a
- mov 33h, a
- ret
- ;=========X軸左移一位=================
- zyizhou:
- mov a, 31h
- rr a
- mov 31h, a
- mov a, 32h
- rr a
- mov 32h, a
- mov a, 33h
- rr a
- mov 33h, a
- ret
- ;==============顯示子程序==========================
- xianshi: mov p1, 41h
- mov p2, #0feh
- call delay
- mov p1, #00
- mov p1, 42h
- mov p2, #0fdh
- call delay
- mov p1, #00
- mov p1, 43h
- mov p2, #0fbh
- call delay
- mov p1, #00
- mov p1, 44h
- mov p2, #0f7h
- call delay
- mov p1, #00
- mov p1, 45h
- mov p2, #0efh
- call delay
- mov p1, #00
- mov p1, 46h
- mov p2, #0dfh
- call delay
- mov p1, #00
- mov p1, 47h
- mov p2, #0bfh
- call delay
- mov p1, #00
- mov p1, 48h
- mov p2, #7fh
- call delay
- mov p1, #00
- ret
- ;===========消行顯示子程序==================
- xiaohang: mov a, 48h
- cjne a,#0ffh,zh0
- call tiaozhen0
- zh0: mov a, 47h
- cjne a,#0ffh,zh1
- call tiaozhen1
- zh1: mov a, 46h
- cjne a,#0ffh,zh2
- call tiaozhen2
- zh2: mov a, 45h
- cjne a,#0ffh,zh3
- call tiaozhen3
- zh3: mov a, 44h
- cjne a,#0ffh,zh4
- call tiaozhen4
- zh4: mov a, 43h
- cjne a,#0ffh,zh5
- call tiaozhen5
- zh5: mov a, 42h
- cjne a,#0ffh,zh6
- call tiaozhen6
- zh6: ret
- tiaozhen0: mov 48h, #00
- mov 49h, 48h
- mov 48h, 47h
- mov 47h, 46h
- mov 46h, 45h
- mov 45h, 44h
- mov 44h, 43h
- mov 43h, 42h
- mov 42h, 41h
- mov 41h, 49h
- ret
- tiaozhen1: mov 47h, #00
- mov 49h, 47h
- mov 47h, 46h
- mov 46h, 45h
- mov 45h, 44h
- mov 44h, 43h
- mov 43h, 42h
- mov 42h, 41h
- mov 41h, 49h
- ret
- tiaozhen2: mov 46h, #00
- mov 49h, 46h
- mov 46h, 45h
- mov 45h, 44h
- mov 44h, 43h
- mov 43h, 42h
- mov 42h, 41h
- mov 41h, 49h
- ret
- tiaozhen3: mov 45h, #00
- mov 49h, 45h
- mov 45h, 44h
- mov 44h, 43h
- mov 43h, 42h
- mov 42h, 41h
- mov 41h, 49h
- ret
- tiaozhen4: mov 44h, #00
- mov 49h, 44h
- mov 44h, 43h
- mov 43h, 42h
- mov 42h, 41h
- mov 41h, 49h
- ret
- tiaozhen5: mov 43h, #00
- mov 49h, 43h
- mov 43h, 42h
- mov 42h, 41h
- mov 41h, 49h
- ret
- tiaozhen6: mov 42h, #00
- mov 49h, 42h
- mov 42h, 41h
- mov 41h, 49h
- ret
- ;=================================================
- ; 延時1秒子程序
- ;==================================================
- yanshi_1s:
- inc r3
- mov a, r3
- cjne a,4dh, xx
- mov r3,#00
- setb bt1
- xx: ret
- yanshi_500ms:
- inc r3
- mov a, r3
- cjne a,#25, xx11
- mov r3,#00
- setb bt11
- xx11: ret
- ;=================================================
- ; 延時40m秒子程序
- ;==================================================
- yanshi_40ms:
- inc r4
- cjne r4,#3, ee
- mov r4, #00
- setb bt5
- ee: ret
- suiji: mov a, tl1
- mov b, #5
- div ab
- mov r1, b
- ret
- ;====================================================
- ; 觸底子程序
- ;======================================================
- chudi: mov a, 33h
- cjne a,#00, bbb0
- mov a, 32h
- cjne a,#00h, bbb1
- ljmp bbb
- bbb0: ljmp bbb3
- bbb1: mov a, 35h
- cjne a,#0bfh,nn7
- ljmp nn6
- nn7: mov a, 35h
- cjne a,#0feh,nn8
- ljmp kk0
- nn8: mov a, 35h
- cjne a,#0fdh,nn9
- ljmp kk1
- nn9: mov a, 35h
- cjne a,#0fbh,nn10
- ljmp kk2
- nn10: mov a, 35h
- cjne a,#0f7h,nn11
- ljmp kk3
- nn11: mov a, 35h
- cjne a,#0efh,nn12
- ljmp kk4
- nn12: mov a, 35h
- cjne a,#0dfh,kk5
- ljmp kk5
- kk0: mov a, 32h
- anl a, 43h
- cjne a,#00h, nn0
- ljmp bbb
- kk1: mov a, 32h
- anl a, 44h
- cjne a,#00h, nn1
- ljmp bbb
- kk2: mov a, 32h
- anl a, 45h
- cjne a,#00h, nn2
- ljmp bbb
- kk3: mov a, 32h
- anl a, 46h
- cjne a,#00h, nn3
- ljmp bbb
- kk4: mov a, 32h
- anl a, 47h
- cjne a,#00h, nn4
- ljmp bbb
- kk5: mov a, 32h
- anl a, 48h
- cjne a,#00h, nn5
- ljmp bbb
-
- nn0: mov 35h, #0feh
- mov a, 32h
- orl a, 42h
- mov 42h, a
- mov a, 31h
- orl a, 41h
- mov 41h, a
- setb bt10
- call suiji
- call chuzhi
- ljmp bbb
- nn1: mov 35h, #0feh
- mov a, 32h
- orl a, 43h
- mov 43h, a
- mov a, 31h
- orl a, 42h
- mov 42h, a
- call suiji
- call chuzhi
- ljmp bbb
- nn2: mov 35h, #0feh
- mov a, 32h
- orl a, 44h
- mov 44h, a
- mov a, 31h
- orl a, 43h
- mov 43h, a
- call suiji
- call chuzhi
- ljmp bbb
- nn3: mov 35h, #0feh
- mov a, 32h
- orl a, 45h
- mov 45h, a
- mov a, 31h
- orl a, 44h
- mov 44h, a
- call suiji
- call chuzhi
- ljmp bbb
- nn4: mov 35h, #0feh
- mov a, 32h
- orl a, 46h
- mov 46h, a
- mov a, 31h
- orl a, 45h
- mov 45h, a
- call suiji
- call chuzhi
- ljmp bbb
- nn5: mov 35h, #0feh
- mov a, 32h
- orl a, 47h
- mov 47h, a
- mov a, 31h
- orl a, 46h
- mov 46h, a
- call suiji
- call chuzhi
- ljmp bbb
- nn6: mov 35h, #0feh
- mov a, 32h
- orl a, 48h
- mov 48h, a
- mov a, 31h
- orl a, 47h
- mov 47h, a
- call suiji
- call chuzhi
- ljmp bbb
-
- bbb3: mov a, 35h
- cjne a,#0dfh,bb6
- ljmp bb5
- bb6: mov a, 35h
- cjne a,#0feh,bb7
- ljmp jj0
- bb7: mov a, 35h
- cjne a,#0fdh,bb8
- ljmp jj1
- bb8: mov a, 35h
- cjne a,#0fbh,bb9
- ljmp jj2
- bb9: mov a, 35h
- cjne a,#0f7h,bb10
- ljmp jj3
- bb10: mov a, 35h
- cjne a,#0efh,bbb9
- ljmp jj4
- bbb9: ljmp bbb
- jj0: mov a, 33h
- anl a, 44h
- cjne a,#00h, bb0
- mov a, 32h
- anl a, 43h
- cjne a,#00h, bb0
- ljmp bbb
- jj1: mov a, 33h
- anl a, 45h
- cjne a,#00h, bb1
- mov a, 32h
- anl a, 44h
- cjne a,#00h, bb1
- ljmp bbb
- jj2: mov a, 33h
- anl a, 46h
- cjne a,#00h, bb2
- mov a, 32h
- anl a, 45h
- cjne a,#00h, bb2
- ljmp bbb
- jj3: mov a, 33h
- anl a, 47h
- cjne a,#00h, bb3
- mov a, 32h
- anl a, 46h
- cjne a,#00h, bb3
- ljmp bbb
- jj4: mov a, 33h
- anl a, 48h
- cjne a,#00h, bb11
- mov a, 32h
- anl a, 47h
- cjne a,#00h, bb4
- ljmp bbb
- bb11: ljmp bb4
- bb0: mov 35h, #0feh
- mov a, 33h
- orl a, 43h
- mov 43h, a
- mov a, 32h
- orl a, 42h
- mov 42h, a
- mov a, 31h
- orl a, 41h
- mov 41h, a
- setb bt10
- call suiji
- call chuzhi
- ljmp bbb
- bb1: mov 35h, #0feh
- mov a, 33h
- orl a, 44h
- mov 44h, a
- mov a, 32h
- orl a, 43h
- mov 43h, a
- mov a, 31h
- orl a, 42h
- mov 42h, a
- call suiji
- call chuzhi
- ljmp bbb
- bb2: mov 35h, #0feh
- mov a, 33h
- orl a, 45h
- mov 45h, a
- mov a, 32h
- orl a, 44h
- mov 44h, a
- mov a, 31h
- orl a, 43h
- mov 43h, a
- call suiji
- call chuzhi
- ljmp bbb
- bb3: mov 35h, #0feh
- mov a, 33h
- orl a, 46h
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
單片機俄羅斯方塊游戲設計大全(設計思路大全_程序大全).doc
(629.5 KB, 下載次數: 22)
2018-4-11 20:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|