版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 單片機課程設(shè)計</b></p><p><b> 俄羅斯方塊</b></p><p><b> 目錄</b></p><p><b> 摘要 </b></p><p><b> 引言 </b>&l
2、t;/p><p> 1.程序整體思路 </p><p> 2.8X8LED模塊顯示原理</p><p><b> 3.硬件電路仿真圖</b></p><p><b> 4.圖形顯示</b></p><p><b> 5.消層算法</b><
3、/p><p><b> 6.旋轉(zhuǎn)算法</b></p><p><b> 7.實物焊接</b></p><p><b> 8.心得體會</b></p><p><b> 附錄 程序代碼</b></p><p><b>
4、 摘 要</b></p><p> 記得在很小的時候,有一種掌上游戲機,里面有一款游戲叫做俄羅斯方塊,那時的我們只是簡單的按照游戲規(guī)則進行“堆積木”,而其中的原理卻很少有人去思考,畢竟當時的我們都還很年幼。</p><p> 基于單片機課程設(shè)計的機會,我們這個小組將使用51單片機和8x8led的組合,來實現(xiàn)比較簡單的俄羅斯方塊設(shè)計。</p><p&
5、gt; 此次設(shè)計初期是在keil和proteus聯(lián)合仿真中進行,編程語言為51匯編,后期是進行實物焊接。</p><p> 論文描述了俄羅斯方塊的主要功能函數(shù)的實現(xiàn),算法分析和實物焊接過程中遇到的問題。</p><p> 關(guān)鍵詞:俄羅斯方塊;算法; 8X8led;</p><p><b> 引 言</b></p><
6、p> 游戲是人們活動中一項非常重要的內(nèi)容,有人認為如果哪一天人類對所有的游戲都失去興趣,恐怕世界的末日就要到了。電腦對游戲的貢獻有目共睹,現(xiàn)在摸過電腦的人很少有沒玩過電腦游戲的,喜歡游戲的人也很少有不玩電腦的。</p><p> 俄羅斯方塊是一款風靡全球的電視游戲機和掌上游戲機游戲,它曾經(jīng)造成的轟動與造成的經(jīng)濟價值可以說是游戲史上的一件大事。這款游戲最初是由蘇聯(lián)的游戲制作人Alex Pajitnov制作
7、的,它看似簡單但卻變化無窮,令人上癮。相信大多數(shù)用戶都還記得為它癡迷得茶不思飯不想的那個俄羅斯方塊時代。究其歷史,俄羅斯方塊最早還是出現(xiàn)在PC機上,而我國的用戶都是通過紅白機了解、喜歡上它的?,F(xiàn)在聯(lián)眾又將重新掀起這股讓人沉迷的俄羅斯方塊風潮。對一般用戶來說,它的規(guī)則簡單,容易上手,且游戲過程變化無窮,而在"聯(lián)眾俄羅斯方塊"中,更有一些聯(lián)眾網(wǎng)絡(luò)游戲所獨有的魅力――有單機作戰(zhàn)與兩人在線對戰(zhàn)兩種模式,用戶可任選一種進行游戲
8、。網(wǎng)絡(luò)模式還增加了積分制,使用戶既能感受到游戲中的樂趣,也給用戶提供了一個展現(xiàn)自己高超技藝的場所。</p><p> 俄羅斯方塊游戲可以說是隨計算機的發(fā)展而發(fā)展,并不斷推陳出新演變出各種類似游戲, 深受廣大玩家喜愛。這個游戲有的簡單, 有的復(fù)雜, 但其根本原理是一樣的都是對運動的方塊進行組合, 來訓練玩家的反應(yīng)能力。本文利用單片機進行俄羅斯方塊設(shè)計,采用51匯編語言進行編程,基于匯編語言的原因是在編寫程序的過程
9、中,對于程序的執(zhí)行會有一個比較直觀的表現(xiàn)。</p><p><b> 程序整體思路</b></p><p> 單片機上的程序設(shè)計一般是一個大循環(huán)結(jié)構(gòu),對于俄羅斯方塊的程序設(shè)計,首先產(chǎn)生一個偽隨機數(shù),其范圍是0-6,然后程序根據(jù)此數(shù)值所對應(yīng)的圖形模塊裝入ram的固定區(qū)域內(nèi),緊接著將此圖像寫入led所對應(yīng)的顯示緩沖區(qū)中,顯示程序?qū)⒕彌_區(qū)內(nèi)的內(nèi)容顯示在led上,如果沒有
10、控制鍵按下,圖形將自動向下移動。如果有鍵按下,程序?qū)⒏鶕?jù)按下的鍵來改變圖形存儲區(qū)的值,同時程序?qū)⑴袛鄨D形是否已到達邊界,當圖形最上層到達顯示區(qū)頂部,則游戲結(jié)束,此時將清楚顯示緩沖的內(nèi)容,游戲重新開始。</p><p> 2.8x8led顯示原理</p><p> 8x8led顯示屏的原理圖如下</p><p> 由于人眼的視覺暫留現(xiàn)象,通過逐行掃描顯示的方式來
11、顯示要顯示的內(nèi)容,當每一行掃描的時間很小時人眼觀察的將是一幅完整的圖像。</p><p> 3. 硬件電路仿真圖</p><p><b> .</b></p><p><b> 4.圖形顯示</b></p><p> 8x8led一共有64個led,可以從下至上一次對其編號,對于顯示類的基本
12、操作是任意點亮一個點,熄滅一個點,任意點亮n(0<n<=64)個點,滅掉n個點,如此一來游戲的第一個關(guān)鍵點就完成了。</p><p> 我們將ram中從21h單元到28h單元作為led的顯示緩沖區(qū),這里面的每一位對應(yīng)led的一個點,led將實時顯示緩沖區(qū)的內(nèi)容,也就是當此緩沖區(qū)內(nèi)容一改變,led上看到的也會做出相應(yīng)的改變。同時在俄羅斯方塊中那些方塊被存放在一個類似于一維的數(shù)組之中,每一個方塊對應(yīng)四個
13、小方塊,根據(jù)偽隨機數(shù)將這四個小方塊對應(yīng)的值裝入ram固定的區(qū)域內(nèi)。</p><p> 如果要顯示方塊只需將這些方塊所對應(yīng)的點寫入緩沖區(qū)。</p><p><b> 5.消層算法</b></p><p> 設(shè)置循環(huán)變量數(shù)R2=8,即總共至少要掃描8次,每一次循環(huán)過程中檢測此行是否已滿,也就是檢測這一行所對應(yīng)的存儲單元是否全為一,如果全為一則
14、將消去此行,即將此行對應(yīng)的ram清零。同時將此行上面ram的內(nèi)容按每列依次下移,下移完之后重新將R2=0,又從第一行開始檢測。此行不全為零時只需將R2=R2+1。直到R2=9消層過程結(jié)束。</p><p><b> 6.旋轉(zhuǎn)算法</b></p><p> 首先要確定一個旋轉(zhuǎn)中心,假如旋轉(zhuǎn)中心的編號是34,將34除以8,商是4存入R1余數(shù)是2存入R2,及時用商和余數(shù)
15、建立坐標系。此時若以此為旋轉(zhuǎn)中心的圖形需要旋轉(zhuǎn),則將每一個小方塊對應(yīng)編號除以8,商減去R1,余數(shù)減去R2,而每一個方塊一次將旋轉(zhuǎn)90度,所以有公式x1,y1,x2,y2 x2= - y1,y2= x1</p><p> 其中x1,y1為旋轉(zhuǎn)之前的坐標,x2,y2為旋轉(zhuǎn)之后的坐標。旋轉(zhuǎn)完之后將x2加上R1將y2加上R2,然后將x2乘以8再加上y2。執(zhí)行四次此過程旋轉(zhuǎn)結(jié)束。</p><
16、;p><b> 7.實物焊接</b></p><p> 器件:stc51單片機一塊,8x8led顯示模塊一塊,電阻10k10個,開關(guān)5個,與門,12m晶振一個,電容3個。</p><p> 首先按照目的進行進行元器件布局,然后按照電路圖里的導線的連接次序?qū)⒃骷冈陔娐钒迳?,焊好之后進行調(diào)試。</p><p><b>
17、8.心得體會</b></p><p> 寫程序的過程中,首先應(yīng)該把程序思路理清,然后再寫代碼,否則寫到一半感覺行不通時是很令人心煩的。還有就是焊接是一個技術(shù)活,因為在電子工藝實習之后大家便沒有碰過電烙鐵,所以焊的過程還是很辛苦的。</p><p><b> 附錄:程序代碼</b></p><p> ORG
18、 0000H</p><p> AJMP START</p><p> ORG 0003H</p><p> AJMP INTERRUPT</p><p> AA EQU 10000000B </p><p>
19、 BB EQU 11111111B</p><p> HANG EQU 32H</p><p> LIE EQU 33H</p><p> COUNT EQU 34H</p><p> REMOVEROW EQU
20、 35H</p><p> STEPS EQU 36H</p><p> XUNHUAN EQU 37H</p><p> BIANLIANG EQU 38H</p><p> GRAPHRAM1 EQU 39H</p><p>
21、GRAPHRAM2 EQU 40H</p><p> GRAPHRAM3 EQU 41H</p><p> GRAPHRAM4 EQU 42H</p><p> XXX EQU 43H</p><p> YYY EQU 44H<
22、/p><p> KEY EQU 45H</p><p> LEDHEAD EQU 21H</p><p> TEST BIT 100</p><p> BITS BIT 99</p><p> RIGHT
23、 BIT 98</p><p> LEFT BIT 97</p><p> DOWN BIT 96</p><p> HARD BIT 95</p><p> TURN BIT 94</p><p>
24、 KEYDOWN BIT 93</p><p> TESTING BIT 92</p><p> BOTTOM BIT 91</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;;;;程序由此處開始執(zhí)行</p
25、><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> START:</b></p><p> MOV TCON,#00000001B;;;;;;;;;;;;;設(shè)置外部中斷0響應(yīng)方式為下降沿觸發(fā)</p><p> SETB
26、 EX0</p><p> SETB EA</p><p> MOV SP,#60H;;;;;;;;;;;;;;;;;;;;;將堆棧指針SP設(shè)置在RAM的高地址處</p><p> MOV R7,#6;;;;;;;;;;;;;;;;;;;;;;R7作為存放0-6這7個隨機數(shù)的變量</p&
27、gt;<p> MOV P0,#11111111B;;;;;;;;;;;;;;;;;;;;;;將P0口最為輸入口</p><p> LCALL WRITEGRAPHTORAM</p><p> CLR TESTING</p><p><b> GAMELOOP:</b>
28、;</p><p> ;CLR EA</p><p> LCALL SHOWGRAPH</p><p> MOV R6,#30</p><p><b> TIMING:</b></p><p> LCALL SHO
29、WLEDRAM</p><p> LCALL DELAY</p><p> DJNZ R6,TIMING </p><p> LCALL DOWNTEST</p><p> JNB DOWN,NEXT1</p><p><
30、;b> ABCD:</b></p><p> MOV A,28H</p><p> CJNE A,#0,GAMEOVER</p><p> LCALL REMOVEBLOCK</p><p> LCALL WRITEGRAPHTORAM</
31、p><p> JMP GAMELOOP</p><p><b> NEXT1:</b></p><p> ;JB KEYDOWN,KEY1</p><p> JMP KEY4</p><p><b> KEY1:<
32、/b></p><p> CLR TESTING</p><p> CLR KEYDOWN</p><p> MOV A,KEY</p><p> CJNE A,#1,KEY2;1-LEFT</p><p> LCALL
33、 LEFTTEST</p><p> JB LEFT, KEY4</p><p> LCALL CLEANGRAPH</p><p> LCALL MOVELEFT</p><p> LCALL GAMELOOP</p><p&g
34、t;<b> KEY2:</b></p><p> CJNE A,#2,KEY3;2-RIGHT</p><p> LCALL RIGHTTEST</p><p> JB RIGHT, KEY4</p><p> LCALL CLEAN
35、GRAPH</p><p> LCALL MOVERIGHT</p><p> LCALL GAMELOOP</p><p><b> KEY3:</b></p><p> CJNE A,#4,KEY4;4-ROTATE</p><p>
36、 ;LCALL ROTATIONTEST</p><p> ;JNB TURN, KEY4</p><p> LCALL CLEANGRAPH</p><p> LCALL ROTATION</p><p> JMP GAMELOOP<
37、;/p><p><b> KEY4:</b></p><p> CJNE A,#8,KEY5</p><p><b> SWEAT:</b></p><p> LCALL DOWNTEST</p><p> JB
38、 DOWN,GAMELOOP</p><p> LCALL CLEANGRAPH</p><p> LCALL MOVEDOWN</p><p> JMP SWEAT</p><p><b> KEY5:</b></p><p> L
39、CALL CLEANGRAPH</p><p> LCALL MOVEDOWN</p><p> INC R7</p><p> CJNE R7,#7,NEXT5</p><p> MOV R7,#0</p><p>&l
40、t;b> NEXT5:</b></p><p> JMP GAMELOOP</p><p><b> GAMEOVER:</b></p><p> MOV R0,#8</p><p> MOV R1,#LEDHEAD</p>
41、;<p><b> CLEAR:</b></p><p> LCALL CLEANGRAPH</p><p> MOV @R1,#0</p><p> INC R1</p><p> DJNZ R0,CLEAR</p&
42、gt;<p> MOV R0,#4</p><p> MOV R1,#GRAPHRAM1</p><p><b> ASDF:</b></p><p> MOV A,@R1</p><p> ADD A,#16<
43、/p><p> MOV @R1,A</p><p> INC R1</p><p> DJNZ R0,ASDF</p><p> JMP GAMELOOP</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
44、;;;;;;;;;;;;</p><p> ;測試圖形是否能向下移動</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> DOWNTEST:</b></p><p> PUSH 0</p><p>
45、; PUSH 1</p><p> PUSH 2</p><p> PUSH 3</p><p> PUSH B</p><p> PUSH ACC</p><p> MOV R2,#4</p><p&
46、gt; MOV R0,#GRAPHRAM1</p><p><b> DOWN0:</b></p><p> MOV A,@R0</p><p> SUBB A,#8</p><p> MOV B,A</p><p> MO
47、V R3,#4</p><p> CLR C</p><p> MOV R1,#GRAPHRAM1</p><p><b> DOWN2:</b></p><p> CLR C</p><p> SUBB A,
48、@R1</p><p> JZ DOWN1</p><p> INC R1</p><p> MOV A,B</p><p> DJNZ R3,DOWN2</p><p> LCALL TESTBIT</p><p
49、> JB BITS,DOWN3</p><p><b> DOWN1:</b></p><p> INC R0</p><p> DJNZ R2,DOWN0</p><p> CLR DOWN</p><p> JM
50、P HOPE</p><p><b> DOWN3:</b></p><p> SETB DOWN;DOWN WEI YI BIAO SHI BU NENG WANG XIA YI DONG </p><p> CPL P3.4</p><p> JMP
51、 DOWN4</p><p><b> HOPE:</b></p><p> MOV R2,#4</p><p> MOV R0,#GRAPHRAM1</p><p> YOUQIANG2:</p><p> MOV R3,#1<
52、/p><p><b> CCC2:</b></p><p> MOV A,R3</p><p> MOV B,A</p><p> CLR C</p><p> SUBB A,@R0</p><p> J
53、NZ CCC1 </p><p> SETB DOWN</p><p> SETB BOTTOM</p><p> JMP DOWN4</p><p><b> CCC1:</b></p><p> MOV A,
54、B</p><p> INC R3</p><p> CJNE R3,#9,CCC2</p><p> INC R0</p><p> DJNZ R2,YOUQIANG2</p><p><b> DOWN4:</b></
55、p><p> POP ACC</p><p> POP B</p><p> POP 3</p><p> POP 2</p><p> POP 1</p><p> POP 0</p&
56、gt;<p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;外部中斷0中斷處理程序</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><
57、;p> INTERRUPT:</p><p> PUSH 0</p><p> PUSH 1</p><p> PUSH ACC</p><p> INC R7</p><p> CJNE R7,#7,INTT
58、</p><p> MOV R7,#0</p><p><b> INTT:</b></p><p> SETB TESTING</p><p> SETB KEYDOWN</p><p> MOV A,P0&l
59、t;/p><p> CPL A</p><p> MOV KEY,A</p><p> POP ACC</p><p> POP 1</p><p> POP 0</p><p><b
60、> RETI</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;測試能否旋轉(zhuǎn)</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p&g
61、t; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;向下移動</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> MOVEDOWN:</b></p>
62、;<p> PUSH 0</p><p> PUSH 1</p><p> PUSH ACC</p><p> MOV R0,#GRAPHRAM1</p><p> MOV R1,#4</p><p>
63、<b> MOVE1:</b></p><p> MOV A,@R0</p><p> CLR C</p><p> SUBB A,#8</p><p> MOV @R0,A</p><p> INC
64、 R0</p><p> DJNZ R1,MOVE1</p><p> POP ACC</p><p> POP 1</p><p> POP 0</p><p><b> RET</b></
65、p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;向左移動</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> MOVELEFT:</
66、b></p><p> PUSH 0</p><p> PUSH 1</p><p> PUSH ACC</p><p> MOV R0,#GRAPHRAM1</p><p> MOV R1,#4</p&
67、gt;<p><b> MOVE2:</b></p><p> MOV A,@R0</p><p> CLR C</p><p> SUBB A,#1</p><p> MOV @R0,A</p><
68、p> INC R0</p><p> DJNZ R1,MOVE2</p><p> POP ACC</p><p> POP 1</p><p> POP 0</p><p><b> RET&
69、lt;/b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;向右移動</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> MOVERIGHT
70、:</p><p> PUSH 0</p><p> PUSH 1</p><p> PUSH ACC</p><p> MOV R0,#GRAPHRAM1</p><p> MOV R1,#4</p>
71、<p><b> MOVE3:</b></p><p> MOV A,@R0</p><p> CLR C</p><p> INC A </p><p> MOV @R0,A</p><p>
72、 INC R0</p><p> DJNZ R1,MOVE3</p><p> POP ACC</p><p> POP 1</p><p> POP 0</p><p><b> RET</b&
73、gt;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;將圖形寫入RAM緩存中</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> WRITEGRAPHTORAM:</p>
74、<p> PUSH ACC</p><p> PUSH B</p><p> PUSH 0</p><p> PUSH 1</p><p> PUSH 2</p><p> PUSH 7</p><p&g
75、t; MOV R1,#4</p><p> MOV A,R7</p><p> MOV B,#4</p><p> MUL AB</p><p> MOV R2,A</p><p> MOV R0,#GRAPHRAM1<
76、;/p><p> MOV DPTR,#GRAPH</p><p> WRITEGRAPH:</p><p> MOV A,R2</p><p> MOVC A,@A+DPTR</p><p> ;SUBB A,#16</p><p>
77、MOV @R0,A</p><p> INC R2</p><p> INC R0</p><p> DJNZ R1,WRITEGRAPH</p><p> POP 7</p><p> POP 2</p><
78、;p> POP 1</p><p> POP 0</p><p> POP B</p><p> POP ACC</p><p> RET </p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
79、;;;;;;;</p><p> ;測試某一個二進制位是否為1</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> TESTBIT:</b></p><p> PUSH 0</p><p> PU
80、SH 1</p><p> PUSH B</p><p> PUSH ACC</p><p> MOV B,#8</p><p> DIV AB</p><p> MOV R0,A</p><p> MOV
81、 A,B</p><p> CJNE A,#0,TEST3</p><p> MOV A,R0</p><p> DEC A</p><p> JMP TEST4</p><p><b> TEST3:</b></
82、p><p> MOV A,R0</p><p><b> TEST4:</b></p><p> MOV DPTR,#TAB1</p><p> MOV R1,#LEDHEAD</p><p> ADD A,R1</p>
83、<p> MOV R1,A</p><p> MOV A,B</p><p> MOVC A,@A+DPTR</p><p> ANL A,@R1</p><p> CJNE A,#0,TEST1</p><p> CLR
84、 BITS</p><p> JMP TEST2</p><p><b> TEST1:</b></p><p> SETB BITS</p><p><b> TEST2:</b></p><p> POP ACC<
85、;/p><p> POP B</p><p> POP 1</p><p> POP 0</p><p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p&
86、gt;<p> ;測試圖形是否能向左移動</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> LEFTTEST:</b></p><p> PUSH 0</p><p> PUSH 1<
87、;/p><p> PUSH 2</p><p> PUSH 3</p><p> PUSH B</p><p> PUSH ACC</p><p> MOV R2,#4</p><p> MOV R0
88、,#GRAPHRAM1</p><p><b> LEFT0:</b></p><p> MOV A,@R0</p><p> CLR C</p><p> SUBB A,#1</p><p> MOV B,A</p&g
89、t;<p> MOV R3,#4</p><p> ;CLR C</p><p> MOV R1,#GRAPHRAM1</p><p><b> LEFT2:</b></p><p> CLR C</p><p&g
90、t; SUBB A,@R1</p><p> JZ LEFT1</p><p> INC R1</p><p> MOV A,B</p><p> DJNZ R3,LEFT2</p><p> LCALL TESTBI
91、T</p><p> JB BITS,LEFT3</p><p><b> LEFT1:</b></p><p> INC R0</p><p> DJNZ R2,LEFT0</p><p> CLR LEFT</p&
92、gt;<p> JMP LEFT4</p><p><b> LEFT3:</b></p><p> SETB LEFT;DOWN WEI YI BIAO SHI BU NENG WANG XIA YI DONG </p><p> CPL P3.4</p>&
93、lt;p> JMP LEFT5</p><p><b> LEFT4:</b></p><p> MOV R2,#4</p><p> MOV R0,#GRAPHRAM1</p><p><b> YOUQIANG:</b></p
94、><p> MOV R3,#9</p><p> MOV A,#1</p><p><b> HHH2:</b></p><p> MOV B,A</p><p> CLR C</p><p> SUB
95、B A,@R0</p><p> JNZ HHH1 </p><p> SETB LEFT</p><p> JMP LEFT5</p><p><b> HHH1:</b></p><p> MOV A,B&l
96、t;/p><p> ADD A,#8</p><p> DJNZ R3,HHH2</p><p> INC R0</p><p> DJNZ R2,YOUQIANG</p><p><b> LEFT5:</b></p>
97、<p> POP ACC</p><p> POP B</p><p> POP 3</p><p> POP 2</p><p> POP 1</p><p> POP 0</p>
98、<p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;測試圖形是否能向右移動</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>
99、; RIGHTTEST:</p><p> PUSH 0</p><p> PUSH 1</p><p> PUSH 2</p><p> PUSH 3</p><p> PUSH B</p><p> PUSH
100、 ACC</p><p> MOV R2,#4</p><p> MOV R0,#GRAPHRAM1</p><p><b> RIGHT0:</b></p><p> MOV A,@R0</p><p> ADD
101、 A,#1</p><p> MOV B,A</p><p> MOV R3,#4</p><p> ;CLR C</p><p> MOV R1,#GRAPHRAM1</p><p><b> RIGHT2:</b>&
102、lt;/p><p> SUBB A,@R1</p><p> JZ RIGHT1</p><p> INC R1</p><p> MOV A,B</p><p> DJNZ R3,RIGHT2</p><p>
103、 LCALL TESTBIT</p><p> JB BITS,RIGHT3</p><p><b> RIGHT1:</b></p><p> INC R0</p><p> DJNZ R2,RIGHT0</p><p>
104、CLR RIGHT</p><p> JMP RIGHT4</p><p><b> RIGHT3:</b></p><p> SETB RIGHT;DOWN WEI YI BIAO SHI BU NENG WANG XIA YI DONG </p><p> CP
105、L P3.4</p><p> JMP RIGHT5</p><p><b> RIGHT4:</b></p><p> MOV R2,#4</p><p> MOV R0,#GRAPHRAM1</p><p> YOUQI
106、ANG1:</p><p> MOV R3,#8</p><p> MOV A,#8</p><p><b> III2:</b></p><p> MOV B,A</p><p> CLR C</p><
107、;p> SUBB A,@R0</p><p> JNZ III1 </p><p> SETB RIGHT</p><p> JMP RIGHT5</p><p><b> III1:</b></p><p> MOV
108、 A,B</p><p> ADD A,#8</p><p> DJNZ R3,III2</p><p> INC R0</p><p> DJNZ R2,YOUQIANG1</p><p><b> RIGHT5:</
109、b></p><p> POP ACC</p><p> POP B</p><p> POP 3</p><p> POP 2</p><p> POP 1</p><p> POP
110、 0</p><p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;圖形旋轉(zhuǎn)</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
111、;;;;;;;</p><p><b> ROTATION:</b></p><p><b> PUSH 0</b></p><p><b> PUSH 1</b></p><p><b> PUSH 2</b></p>
112、<p><b> PUSH 3</b></p><p><b> PUSH B</b></p><p> PUSH ACC</p><p> MOV A,GRAPHRAM1 ;A=50</p><p> MOV B,#8</p>
113、<p> DIV AB ;A=6 B= 2</p><p> MOV HANG,A ;HANG = 6</p><p> MOV LIE,B ;LIE = 2</p><p> MOV R3,#4</p><p> MOV
114、 R0,#GRAPHRAM1</p><p> ROTATESTART:</p><p> MOV A,@R0</p><p> MOV B,#8</p><p> DIV AB </p><p> CLR C</p>
115、<p> SUBB A,HANG </p><p> MOV R1,A </p><p> MOV A,B</p><p> CLR C</p><p> SUBB A,LIE</p><p> MOV R2
116、,A</p><p> ;;;;;;;;;;;;;;;;;;X2=-Y1 Y2=X1</p><p> MOV A,#0</p><p> CLR C</p><p> SUBB A,R2 ;-Y1</p><p> MOV B,R1 ;X1<
117、/p><p> MOV R1,A ;X2=-Y1</p><p> MOV R2,B ;Y2=X1</p><p> MOV A,R1</p><p> ADD A,HANG</p><p> MOV R1,A</p><
118、;p> MOV A,R2</p><p> ADD A,LIE</p><p> MOV R2,A</p><p> MOV A,R1</p><p> MOV B,#8</p><p> MUL AB</p&g
119、t;<p> ADD A,R2</p><p> MOV @R0,A </p><p> INC R0</p><p> DJNZ R3,ROTATESTART</p><p> POP ACC</p><
120、p> POP B</p><p> POP 3</p><p> POP 2</p><p> POP 1</p><p> POP 0</p><p><b> RET</b></p><
121、p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;顯示LEDRAM中的內(nèi)容</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> SHOWLEDRAM:</p><p> PUSH
122、0</p><p> PUSH 1</p><p> PUSH B</p><p> PUSH ACC</p><p> MOV R0,#LEDHEAD</p><p> MOV R1,#8</p><p> MOV
123、 A,#AA</p><p><b> SHOW1:</b></p><p> MOV P1,A</p><p> MOV P2,@R0</p><p> LCALL DELAY</p><p> INC R0</p&g
124、t;<p> RL A</p><p> DJNZ R1,SHOW1</p><p> POP ACC</p><p> POP B</p><p> POP 1</p><p> POP 0</p>
125、;<p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;軟件延時</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</
126、p><p><b> DELAY:</b></p><p> PUSH 1</p><p> PUSH 2</p><p> MOV R1,#5</p><p><b> FQFQ:</b></p><p>
127、 MOV R2,#200</p><p><b> FWFW:</b></p><p> DJNZ R2,FWFW</p><p> DJNZ R1,FQFQ</p><p> POP 2</p><p> POP 1&
128、lt;/p><p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;清楚圖形在LEDRAM中的內(nèi)容</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</
129、p><p> CLEANGRAPH:</p><p> PUSH ACC</p><p> PUSH 1</p><p> MOV A,#GRAPHRAM1</p><p> MOV XUNHUAN,#4</p><p> MOV
130、 R1,A</p><p><b> DADA1:</b></p><p> MOV A,@R1</p><p> ;SUBB A,#16</p><p> LCALL WRITEPOINT0</p><p> INC R1<
131、;/p><p> DJNZ XUNHUAN,DADA1</p><p> POP 1</p><p> POP ACC </p><p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
132、;;;;;;;;;;;;</p><p> ;顯示圖形在LEDRAM中的內(nèi)容</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> SHOWGRAPH:</p><p> PUSH ACC</p><p> PUSH
133、 1</p><p> MOV A,#GRAPHRAM1</p><p> MOV XUNHUAN,#4</p><p> MOV R1,A</p><p><b> DADA2:</b></p><p> MOV A,@R1<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計報告-俄羅斯方塊
- 基于51單片機的俄羅斯方塊游戲
- 俄羅斯方塊單片機課程設(shè)計作品說明書
- 基于單片機的俄羅斯方塊游戲機課程設(shè)計
- 《c++俄羅斯方塊》課程設(shè)計--俄羅斯方塊
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 課程設(shè)計---俄羅斯方塊
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- c課程設(shè)計--俄羅斯方塊
- 俄羅斯方塊課程設(shè)計報告
- 俄羅斯方塊課程設(shè)計報告
- 簡單俄羅斯方塊課程設(shè)計
- java俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計論文
- arm課程設(shè)計俄羅斯方塊
評論
0/150
提交評論