前天把 8*8俄羅斯方塊程序搞定,今天把俄羅斯方塊硬件電路部分搞定。從剛開始沒一點思路,到項目全部完成。這幾天花費了不少睡覺時間,學了不少東西,兩個字:值得。
前天也不知道怎么的,調(diào)程序的效率真高,自己都不相信自己了,不到一個小時解決了左右沖突、背景合成、積木旋轉(zhuǎn)、加速下移這些問題。而且在背景合成、積木旋轉(zhuǎn)著兩個算法上有自己獨有的方法。都比較精簡。
搞完了俄羅斯方塊,學的東西還真不少啊。
接下來就要準備16*16的俄羅斯方塊了,還要制作一個小制作下個星期三要交,還要準備講課比賽,后天還要考單片機,星期六考英語四級。接下來的幾天還真忙啊,也不知道又要加班加到凌晨2點了,昨晚搞到3點現(xiàn)在還沒回過神來。累是累了點,不過充實的很啊。
項目階段,又要抓緊了,做幾個得意的東西來,留著做紀念。
- ;功能:俄羅斯方塊游戲
- ;P3口實現(xiàn)對LED點陣的動態(tài)片選功能
- ;===============================================================
- ;=======================開始初始化==============================
- HANG1 EQU 40H ;第一行數(shù)據(jù)地址
- HANG2 EQU 41H ;第二行數(shù)據(jù)地址
- HANG3 EQU 42H ;第三行數(shù)據(jù)地址
- HANG4 EQU 43H ;第四行數(shù)據(jù)地址
- HANG5 EQU 44H ;第五行數(shù)據(jù)地址
- HANG6 EQU 45H ;第六行數(shù)據(jù)地址
- HANG7 EQU 46H ;第七行數(shù)據(jù)地址
- HANG8 EQU 47H ;第八行數(shù)據(jù)地址
- BEIJING1 EQU 48H ;背景第一行數(shù)據(jù)地址
- BEIJING2 EQU 49H ;背景第二行數(shù)據(jù)地址
- BEIJING3 EQU 4AH ;背景第三行數(shù)據(jù)地址
- BEIJING4 EQU 4BH ;背景第四行數(shù)據(jù)地址
- BEIJING5 EQU 4CH ;背景第五行數(shù)據(jù)地址
- BEIJING6 EQU 4DH ;背景第六行數(shù)據(jù)地址
- BEIJING7 EQU 4EH ;背景第七行數(shù)據(jù)地址
- BEIJING8 EQU 4FH ;背景第八行數(shù)據(jù)地址
- SHU1 EQU 50H ;保存第一行顯示初值地址
- SHU2 EQU 51H ;保存第二行顯示初值地址
- SHU3 EQU 52H ;保存第三行顯示初值地址
- XIASHU EQU 53H ;下移數(shù)據(jù)中轉(zhuǎn)地址
- Y_Y EQU 54H ;異地旋轉(zhuǎn)下移Y軸數(shù)據(jù)地址
- X_X EQU 55H ;異地旋轉(zhuǎn)左、右移X軸數(shù)據(jù)地址
- CHENG1 EQU 56H ;第一行顯示數(shù)據(jù)保存地址
- CHENG2 EQU 57H ;第二行顯示數(shù)據(jù)保存地址
- CHENG3 EQU 58H ;第三行顯示數(shù)據(jù)保存地址
- CHENG4 EQU 59H ;第四行顯示數(shù)據(jù)保存地址
- CHENG5 EQU 5AH ;第五行顯示數(shù)據(jù)保存地址
- CHENG6 EQU 5BH ;第六行顯示數(shù)據(jù)保存地址
- CHENG7 EQU 5CH ;第七行顯示數(shù)據(jù)保存地址
- CHENG8 EQU 5DH ;第八行顯示數(shù)據(jù)保存地址
- XUAN1 EQU 20H ;第一行尋址旋轉(zhuǎn)
- XUAN2 EQU 21H ;第二行尋址旋轉(zhuǎn)
- XUAN3 EQU 22H ;第三行尋址旋轉(zhuǎn)
- OXUAN EQU 23H ;用來存取旋轉(zhuǎn)溢出數(shù)據(jù)
- SHUCHU EQU P2 ;定義P0口為輸出口
- PIANXUAN EQU P3 ;定義P2口為片選口
- BT BIT 24H.0 ;節(jié)拍法標志位
- ANJIAN1 BIT 24H.1 ;異地旋轉(zhuǎn)按鍵標志位
- ANJIAN2 BIT 24H.2 ;左移按鍵標志位
- ANJIAN3 BIT 24H.3 ;右移按鍵標志位
- CHONG BIT 24H.4 ;背景沖突按鍵標志位
- ;=========================系統(tǒng)程序==============================
- ORG 00H ;程序開始
- LJMP START ;跳到START
- ORG 0BH ;中斷定時器0入口地址
- LJMP T0_1 ;跳到定時器0服務(wù)程序
- ORG 30H ;入口地址
- START:MOV SP,#70H ;移開指針
- LCALL INIT ;開定時器、開定時器中斷
- SETB BT ;中斷標志位置一
- CLR ANJIAN1 ;異地旋轉(zhuǎn)按鍵標志位清0
- CLR ANJIAN2 ;左移按鍵標志位清0
- CLR ANJIAN3 ;右移按鍵標志位清0
- CLR CHONG ;沖突標志位清0
- LCALL CHUZHI ;設(shè)置移動區(qū)初值
- LCALL CHUZHI1 ;設(shè)置背景區(qū)初值
- CALL SHUJU1 ;保存顯示數(shù)據(jù)
- MOV Y_Y,#00 ;Y軸清0
- MOV X_X,#00 ;X軸清0
- MOV R2,#0
- MOV R3,#0
- ;========================主程序=================================
- MAIN:JNB BT,[ DISCUZ_CODE_1 ]nbsp; ;等待中斷
- CLR BT ;中斷標志位清0
- LCALL DISPLAY ;移動區(qū)顯示
- LCALL DISPLAY1 ;背景區(qū)顯示
- CALL PANANJIAN ;按鍵判斷(異地旋轉(zhuǎn)、左移、右移、加速下移)
- INC R3 ;等待1S時間到來
- CJNE R3,#50,MAIN
- MOV R3,#0
- CALL SHUJU5 ;保存下移前數(shù)據(jù)到CHENG1-CHENG8中。
- LCALL XIABIANJIE ;判斷下移邊界,是否下移
- CALL CHONGTU ;判斷是否有沖突
- JNB CHONG,MAIN ;沒有沖突返回,
- CALL SHUJU6 ;有沖突則取回下移前數(shù)據(jù)
- CALL HEBEIJING ;調(diào)用背景合成(背景合成、消行判斷及消行、產(chǎn)生隨機數(shù))
- JMP MAIN
- ;=====================按鍵判斷子程序============================
- ;輸入:P1.0、P1.1、P1.2、P1.3
- ;輸出:無
- ;實現(xiàn)的功能:判斷左移、右移、異地旋轉(zhuǎn)、加速下移按鍵是否按下,影響標志位ANJIAN1、ANJIAN2、ANJIAN3.
- ;===============================================================
- PANANJIAN:JB P1.0,TAIQI1 ;沒有按鍵按下繼續(xù)判斷,有按鍵按下則往下執(zhí)行
- JB ANJIAN1,TAIQI1 ;ANJIAN1=1,繼續(xù)判斷,消抖作用
- SETB ANJIAN1 ;異地旋轉(zhuǎn)標志位置一
-
- CALL SHUJU5
- CLR C
- CALL YIDIXUANZHUAN ;有鍵按下則旋轉(zhuǎn)。
- CALL CHONGTU
- JNB CHONG,JIXU3
- CALL SHUJU6
- JMP TAIQI1
- JIXU3:JNC TAIQI1
- CALL SHUJU6
- TAIQI1:JNB P1.0,PANZUO ;沒鍵按下判斷下一個按鍵是否按下
- CLR ANJIAN1 ;異地旋轉(zhuǎn)標志位1清0
- PANZUO:JB P1.1,TAIQI2
- JB ANJIAN2,TAIQI2
- SETB ANJIAN2
- CALL SHUJU5
- CALL PANZUOYI ;調(diào)用判斷左移字程序(左移是否碰壁、是否到達邊界、是否與背景沖突)
- TAIQI2:JNB P1.1,PANYOU
- OUT2:CLR ANJIAN2
- PANYOU:JB P1.2,TAIQI3
- JB ANJIAN3,TAIQI3
- SETB ANJIAN3
- CALL PANYOUYI ;調(diào)用判斷右移字程序(右移是否碰壁、是否到達邊界、是否與背景沖突)
- TAIQI3:JNB P1.2,PANSU
- OUT1:CLR ANJIAN3
- PANSU:JB P1.3, OUT ;判斷加速按鍵是否按下
- CALL JIASU ;加速按鍵按下則圖形加速下移(下移是否觸底、是否與背景沖突)
- OUT:RET
- ;=====================加速下移子程序============================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:實現(xiàn)圖形加速下移
- ;===============================================================
- JIASU:CALL SHUJU5
- MOV R6,#10
- DJNZ R6,$
- CALL XIABIANJIE
- CALL CHONGTU
- JNB CHONG,OUT
- CALL SHUJU6
- CALL HEBEIJING
- RET
- ;==================背景合成及隨機數(shù)子程序=======================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:實現(xiàn)背景合成、消行、產(chǎn)生隨機數(shù)
- ;===============================================================
- HEBEIJING:CALL HECHENG
- CALL XIAOHANG
- CALL QINGLING
- CALL SUIJI
- LCALL SHUJU4
- LCALL SHUJU2
- MOV Y_Y,#00
- MOV X_X,#00
- RET
- ;==================左移邊界判斷子程序===========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:判斷左移進位是否為1
- ;===============================================================
- PANZUOYI:MOV R0,#HANG1 ;判斷左移邊界
- CC:MOV A,@R0
- RLC A
- JC OUT2
- INC R0
- CJNE R0,#BEIJING1,CC
- CALL SHUJU5
- CALL ZUOYI
- INC X_X
- CALL CHONGTU
- JB CHONG,TT
- RET
- TT:CALL SHUJU6
- RET
- ;==================右移邊界判斷子程序===========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:判斷右移進位是否為1
- ;===============================================================
- PANYOUYI:MOV R0,#HANG1 ;判斷右移邊界
- CCC:MOV A,@R0
- RRC A
- JC OUT1
- INC R0
- CJNE R0,#BEIJING1,CCC
- CALL SHUJU5
- CALL YOUYI
- DEC X_X
- CALL CHONGTU
- JB CHONG,EE
- RET
- EE:CALL SHUJU6
- RET
- ;==================判斷下移邊界子程序===========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:判斷43H-47H內(nèi)容是否為0
- ;===============================================================
- XIABIANJIE:MOV R0,#HANG8
- CJNE @R0,#00,HE
- CALL XIAYI
- INC Y_Y ;下移Y軸加一
- RET
- HE:CALL HEBEIJING
- JMP MAIN
- RET
- ;=======================下移子程序=============================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:實現(xiàn)定圖形下移功能
- ;===============================================================
- XIAYI:MOV XIASHU,HANG8
- MOV HANG8,HANG7
- MOV HANG7,HANG6
- MOV HANG6,HANG5
- MOV HANG5,HANG4
- MOV HANG4,HANG3
- MOV HANG3,HANG2
- MOV HANG2,HANG1
- MOV HANG1,XIASHU
- RET
- ;======================消行子程序===============================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:把合成后背景區(qū)中全亮的行消除掉。
- ;===============================================================
- XIAOHANG:MOV R5,#00
- MOV R0,#BEIJING8
- LAN6:MOV A,@R0
- CPL A
- JZ XIAOCHU
- DEC R0
- INC R5
- CJNE R0,#47H,LAN6
- RET
- XIAOCHU:MOV @R0,#00 ;消除該行
- X_H:MOV A,R0
- MOV R1,A
- DEC R1
- MOV A,@R1
- MOV @R0,A ;把上一行的數(shù)據(jù)放到下一行
- DEC R0
- CJNE R0,#48H,X_H ;繼續(xù)下移
- CJNE R5,#07,XIAOHANG ;看是否還有行沒有消除掉,有的話繼續(xù)判斷,達到全部消除。
- RET
- ;=====================背景合成子程序============================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:把背景區(qū)和移動區(qū)合成背景區(qū)
- ;===============================================================
- HECHENG:MOV R0,#HANG8
- MOV R1,#BEIJING8
- LAN4:CJNE R0,#3FH,LAN5
- JMP YY
- LAN5:MOV A,@R1
- ORL A,@R0
- MOV @R1,A
- DEC R0
- DEC R1
- JMP LAN4
- YY:RET
- ;======================判斷沖突子程序===========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:判斷背景區(qū)與移動區(qū)是否重疊,影響標志位CHONG。
- ;===============================================================
- CHONGTU:MOV R0,#HANG1
- MOV R1,#BEIJING1
- LAN:MOV A,@R0
- ANL A,@R1
- JZ LAN1
- SETB CHONG
- RET
- LAN1:INC R0
- INC R1
- CJNE R0,#BEIJING1,LAN
- MOV A, BEIJING1
- ANL A,HANG1
- CJNE A,#00,LAN
- MOV A, BEIJING2
- ANL A,HANG2
- CJNE A,#00,LAN
- MOV A, BEIJING3
- ANL A,HANG3
- CJNE A,#00,LAN
- MOV A, BEIJING4
- ANL A,HANG4
- CJNE A,#00,LAN
- MOV A, BEIJING5
- ANL A,HANG5
- CJNE A,#00,LAN
- MOV A, BEIJING6
- ANL A,HANG6
- CJNE A,#00,LAN
- MOV A, BEIJING7
- ANL A,HANG7
- CJNE A,#00,LAN
- MOV A, BEIJING8
- ANL A,HANG8
- CJNE A,#00,LAN
- CLR CHONG
- RET
- ;=======================左移子程序==============================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:實現(xiàn)定圖形左移功能
- ;===============================================================
- ZUOYI:MOV A,HANG1
- RL A
- MOV HANG1,A
- MOV A,HANG2
- RL A
- MOV HANG2,A
- MOV A,HANG3
- RL A
- MOV HANG3,A
- MOV A,HANG4
- RL A
- MOV HANG4,A
- MOV A,HANG5
- RL A
- MOV HANG5,A
- MOV A,HANG6
- RL A
- MOV HANG6,A
- MOV A,HANG7
- RL A
- MOV HANG7,A
- MOV A,HANG8
- RL A
- MOV HANG8,A
- RET
- ;========================右移子程序=============================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:實現(xiàn)圖形右移功能
- ;===============================================================
- YOUYI:MOV A,HANG1
- RR A
- MOV HANG1,A
- MOV A,HANG2
- RR A
- MOV HANG2,A
- MOV A,HANG3
- RR A
- MOV HANG3,A
- MOV A,HANG4
- RR A
- MOV HANG4,A
- MOV A,HANG5
- RR A
- MOV HANG5,A
- MOV A,HANG6
- RR A
- MOV HANG6,A
- MOV A,HANG7
- RR A
- MOV HANG7,A
- MOV A,HANG8
- RR A
- MOV HANG8,A
- RET
- ;===================異地旋轉(zhuǎn)子程序==============================
- ;輸入:
- ;輸出:
- ;實現(xiàn)的功能:如果SHIJIAN=1就旋轉(zhuǎn),等于0不旋轉(zhuǎn)。講HANG1-HANG8的內(nèi)容,
- ;送到旋轉(zhuǎn)區(qū)進行旋轉(zhuǎn),同時將HANG線的數(shù)據(jù)進行保存。
- ;===============================================================
- YIDIXUANZHUAN:CALL QINGLING
- CALL SHUJU3
- LCALL JISUAN
- CALL SHUJU2
- CALL TIHUAN
- RET
- ;=====================數(shù)據(jù)替換子程序============================
- ;輸入:
- ;輸出:
- ;實現(xiàn)的功能:把圖形當前數(shù)據(jù)替換成旋轉(zhuǎn)后的數(shù)據(jù)。
- ;===============================================================
- TIHUAN:MOV R1,X_X
- JIXU1:CJNE R1,#00,BIANHUA1
- JMP BIANHUA2
- BIANHUA1:MOV A,XUAN1
- RL A
- MOV XUAN1,A
- MOV A,XUAN2
- RL A
- MOV XUAN2,A
- MOV A,XUAN3
- RL A
- MOV XUAN3,A
- DEC R1
- JMP JIXU1
- BIANHUA2:MOV A,#HANG1
- ADD A,Y_Y
- MOV R1,A
- MOV @R1,XUAN1
- MOV A,#HANG2
- ADD A,Y_Y
- MOV R1,A
- MOV @R1,XUAN2
- MOV A,#HANG3
- ADD A,Y_Y
- MOV R1,A
- MOV @R1,XUAN3
- RET
- ;========================計算子程序=============================
- ;輸入:
- ;輸出:
- ;實現(xiàn)的功能:實現(xiàn)數(shù)據(jù)進行旋轉(zhuǎn),實現(xiàn)圖形旋轉(zhuǎn)功能。
- ;===============================================================
- JISUAN:MOV C,XUAN3.0 ;將3存起來、外旋轉(zhuǎn)
- MOV OXUAN.0,C
- MOV C,XUAN1.0
- MOV XUAN3.0,C
- MOV C,XUAN1.2
- MOV XUAN1.0,C
- MOV C,XUAN3.2
- MOV XUAN1.2,C
- MOV C,OXUAN.0
- MOV XUAN3.2,C
- MOV C,XUAN2.0 ;將2存起來、內(nèi)旋轉(zhuǎn)
- MOV OXUAN.1,C
- MOV C,XUAN1.1
- MOV XUAN2.0,C
- MOV C,XUAN2.2
- MOV XUAN1.1,C
- MOV C,XUAN3.1
- MOV XUAN2.2,C
- MOV C,OXUAN.1
- MOV XUAN3.1,C
- RET
- ;====================產(chǎn)生隨機數(shù)子程序===========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:DPH中的數(shù)據(jù)轉(zhuǎn)化為積木圖形數(shù)據(jù)。
- ;===============================================================
- SUIJI:MOV A,TH0
- ANL A,#07H
- RL A
- MOV DPTR,#TAB
- JMP @A+DPTR
- TAB:AJMP SUB0
- AJMP SUB1
- AJMP SUB2
- AJMP SUB3
- AJMP SUB4
- AJMP SUB5
- AJMP SUB6
- AJMP SUB7
- AJMP SUB8
- SUB0:MOV XUAN1,#07H
- MOV XUAN2,#01H
- MOV XUAN3,#00H
- RET
- SUB1:MOV XUAN1,#02H
- MOV XUAN2,#03H
- MOV XUAN3,#01H
- RET
- SUB2:
- MOV XUAN1,#02H
- MOV XUAN2,#03H
- MOV XUAN3,#02H
- RET
- SUB3:MOV XUAN1,#00H
- MOV XUAN2,#07H
- MOV XUAN3,#00H
- RET
- SUB4:MOV XUAN1,#01H
- MOV XUAN2,#03H
- MOV XUAN3,#02H
- RET
- SUB5:MOV XUAN1,#01H
- MOV XUAN2,#07H
- MOV XUAN3,#00H
- RET
- SUB6:MOV XUAN1,#00H
- MOV XUAN2,#01H
- MOV XUAN3,#07H
- RET
- SUB7:MOV XUAN1,#02H
- MOV XUAN2,#07H
- MOV XUAN3,#00H
- SUB8:MOV XUAN1,#03H
- MOV XUAN2,#03H
- MOV XUAN3,#00H
- RET
- ;=======================顯示子程序==============================
- ;輸入:"40H-47H"
- ;輸出:P2口
- ;實現(xiàn)的功能:顯示40H-48H的內(nèi)容。
- ;===============================================================
- DISPLAY:MOV SHUCHU,HANG1
- MOV PIANXUAN,#0FEH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG2
- MOV PIANXUAN,#0FDH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG3
- MOV PIANXUAN,#0FBH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG4
- MOV PIANXUAN,#0F7H
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG5
- MOV PIANXUAN,#0EFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG6
- MOV PIANXUAN,#0DFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG7
- MOV PIANXUAN,#0BFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG8
- MOV PIANXUAN,#7FH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- RET
- ;=======================顯示子程序==============================
- ;輸入:"48H-4FH"
- ;輸出:P2口
- ;實現(xiàn)的功能:顯示48H-4FHH的內(nèi)容。
- ;===============================================================
- DISPLAY1:MOV SHUCHU,BEIJING1
- MOV PIANXUAN,#0FEH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING2
- MOV PIANXUAN,#0FDH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING3
- MOV PIANXUAN,#0FBH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING4
- MOV PIANXUAN,#0F7H
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING5
- MOV PIANXUAN,#0EFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING6
- MOV PIANXUAN,#0DFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING7
- MOV PIANXUAN,#0BFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING8
- MOV PIANXUAN,#7FH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- RET
- ;================移動區(qū)圖形初值子程序===========================
- ;輸入:"40H,41H,42H,43H,44H,45H,46H,47H"
- ;輸出:無
- ;實現(xiàn)的功能:設(shè)置移動區(qū)數(shù)據(jù)初值
- ;===============================================================
- CHUZHI:MOV HANG1,#02H ;開始顯示的圖形第一行發(fā)的數(shù)據(jù)
- MOV HANG2,#07H ;開始顯示的圖形第二行發(fā)的數(shù)據(jù)
- MOV HANG3,#00H ;開始顯示的圖形第三行發(fā)的數(shù)據(jù)
- MOV HANG4,#00H
- MOV HANG5,#00H
- MOV HANG6,#00H
- MOV HANG7,#00H
- MOV HANG8,#00H
- RET
- ;====================背景區(qū)初值子程序===========================
- ;輸入:"48H,49H,4AH,4BH,4CH,4DH,4EH,4FH,"
- ;輸出:無
- ;實現(xiàn)的功能:設(shè)置背景區(qū)數(shù)據(jù)初值
- ;===============================================================
- CHUZHI1:MOV BEIJING1,#00H
- MOV BEIJING2,#00H
- MOV BEIJING3,#00H
- MOV BEIJING4,#00H
- MOV BEIJING5,#00H
- MOV BEIJING6,#00H
- MOV BEIJING7,#00H
- MOV BEIJING8,#00H
- RET
- ;=======================復位子程序==============================
- ;輸入:40H-47H
- ;輸出:無
- ;實現(xiàn)的功能:把CHULI1-CHULI8的數(shù)據(jù)清零。
- ;===============================================================
- QINGLING:MOV HANG1,#00H ;數(shù)據(jù)清零
- MOV HANG2,#00H
- MOV HANG3,#00H
- MOV HANG4,#00H
- MOV HANG5,#00H
- MOV HANG6,#00H
- MOV HANG7,#00H
- MOV HANG8,#00H
- RET
- ;====================數(shù)據(jù)保存1子程序============================
- ;輸入:50H-52H
- ;輸出:
- ;實現(xiàn)的功能:把40H-42H的數(shù)據(jù)保存到50H-52H中。
- ;===============================================================
- SHUJU1:MOV SHU1,HANG1 ;保存第一行數(shù)據(jù)
- MOV SHU2,HANG2 ;保存第一行數(shù)據(jù)
- MOV SHU3,HANG3 ;保存第一行數(shù)據(jù)
- RET
- ;====================數(shù)據(jù)保存2子程序============================
- ;輸入:50H-52
- ;輸出:
- ;實現(xiàn)的功能:把旋轉(zhuǎn)后的數(shù)據(jù)保存到50H-52H中。
- ;===============================================================
- SHUJU2:MOV SHU1,XUAN1 ;保存旋轉(zhuǎn)后第一行的數(shù)據(jù)
- MOV SHU2,XUAN2 ;保存旋轉(zhuǎn)后第二行的數(shù)據(jù)
- MOV SHU3,XUAN3 ;保存旋轉(zhuǎn)后第三行的數(shù)據(jù)
- RET
- ;====================數(shù)據(jù)保存3子程序============================
- ;輸入:20H-22H
- ;輸出:
- ;實現(xiàn)的功能:把50H-52H中的數(shù)據(jù)放到20H-22H中,放到尋址區(qū)。
- ;===============================================================
- SHUJU3:MOV XUAN1,SHU1 ;把保存好的第一行數(shù)據(jù)轉(zhuǎn)移到尋址區(qū)
- MOV XUAN2,SHU2 ;把保存好的第二行數(shù)據(jù)轉(zhuǎn)移到尋址區(qū)
- MOV XUAN3,SHU3 ;把保存好的第三行數(shù)據(jù)轉(zhuǎn)移到尋址區(qū)
- RET
- ;====================數(shù)據(jù)保存4子程序============================
- ;輸入:40H-42H
- ;輸出:
- ;實現(xiàn)的功能:把旋轉(zhuǎn)后的數(shù)據(jù)保存到50H-52H中。
- ;===============================================================
- SHUJU4:MOV HANG1,XUAN1 ;把尋址區(qū)的第一行數(shù)據(jù)取回
- MOV HANG2,XUAN2 ;把尋址區(qū)的第二行數(shù)據(jù)取回
- MOV HANG3,XUAN3 ;把尋址區(qū)的第三行數(shù)據(jù)取回
- RET
- ;====================數(shù)據(jù)保存5子程序============================
- ;輸入:56-5DH
- ;輸出:
- ;實現(xiàn)的功能:把40H-47H中的數(shù)據(jù)保存到56H-5DH中。
- ;===============================================================
- SHUJU5:MOV CHENG1,HANG1 ;把數(shù)據(jù)保存起來
- MOV CHENG2,HANG2
- MOV CHENG3,HANG3
- MOV CHENG4,HANG4
- MOV CHENG5,HANG5
- MOV CHENG6,HANG6
- MOV CHENG7,HANG7
- MOV CHENG8,HANG8
- RET
- ;====================數(shù)據(jù)保存6子程序============================
- ;輸入:
- ;輸出:
- ;實現(xiàn)的功能:把56H-5DH的數(shù)據(jù)保存到40H-47H中。
- ;===============================================================
- SHUJU6:MOV HANG1,CHENG1 ;把原來保存的數(shù)據(jù)取回
- MOV HANG2,CHENG2
- MOV HANG3,CHENG3
- MOV HANG4,CHENG4
- MOV HANG5,CHENG5
- MOV HANG6,CHENG6
- MOV HANG7,CHENG7
- MOV HANG8,CHENG8
- RET
- ;====================定時中斷0服務(wù)子程序========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:實現(xiàn)定時20MS,影響標中斷志位BIT
- ;===============================================================
- T0_1:MOV TL0,#0E0H ;設(shè)置定時初值
- MOV TH0,#0B1H
- SETB BT ;定時標志位清0
- RETI
- ;========================中斷設(shè)置子程序=========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:初始化設(shè)置定時器,設(shè)置初值
- ;===============================================================
- INIT:MOV TMOD,#01H ;定時器0工作方式1
- MOV TL0,#0E0H ;設(shè)置定時初值
- MOV TH0,#0B1H
- MOV IE,#82H ;開定時器中斷0
- SETB TR0 ;開定時器0
- RET
- ;==========================延時子程序===========================
- ;輸入;無
- ;輸出: 無
- ;實現(xiàn)的功能:延時一段時間
- ;===============================================================
- DELAY:
- L6:MOV R6,#30
- L7:MOV R7,#20
- L8:DJNZ R7,L8
- DJNZ R6,L7
- RET
- ;=========================程序結(jié)束=============================
- END
復制代碼
|