標題:
俄羅斯方塊程序
[打印本頁]
作者:
daniu
時間:
2014-12-27 14:54
標題:
俄羅斯方塊程序
前天把 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服務程序
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 ;設置移動區(qū)初值
LCALL CHUZHI1 ;設置背景區(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)的功能:設置移動區(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)的功能:設置背景區(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服務子程序========================
;輸入:無
;輸出:無
;實現(xiàn)的功能:實現(xiàn)定時20MS,影響標中斷志位BIT
;===============================================================
T0_1:MOV TL0,#0E0H ;設置定時初值
MOV TH0,#0B1H
SETB BT ;定時標志位清0
RETI
;========================中斷設置子程序=========================
;輸入:無
;輸出:無
;實現(xiàn)的功能:初始化設置定時器,設置初值
;===============================================================
INIT:MOV TMOD,#01H ;定時器0工作方式1
MOV TL0,#0E0H ;設置定時初值
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
;=========================程序結束=============================
END
復制代碼
作者:
Ivey
時間:
2015-1-14 14:42
哇
作者:
1176658950
時間:
2015-5-10 23:47
匯編!吊!看不懂!厲害!
作者:
sglf0201
時間:
2015-5-17 09:58
屌,匯編
作者:
古人古人
時間:
2016-5-14 11:51
不會匯編怎么破
作者:
1415660029
時間:
2016-10-3 18:11
看不懂匯編,是C語言就好了
作者:
songxia8013
時間:
2020-2-14 23:28
請問
電路圖呢?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1