| 在16*16点阵,俄罗斯方块的基础上,花了一下午的时间,做了一个飞机游戏!请各位大虾指导!拜谢!
 ;///////////////////////////////////////////
 ;王筝 QQ:408864998
 ;本程序利用LED点阵实现飞机游戏
 ;/////////开始自定义及初始化////////////////
 SHUJU  EQU P0        ;数据口高电平亮
 PIANXUAN EQU P1    ; 已经外接154
 LATCH_H EQU P3.0   ;上锁存信号 1表示片选  不片选的时候输出低电平
 LATCH_L EQU P3.1   ;下锁存信号
 XUANJIAN EQU P2.5   ;旋转按键
 ZUOJIAN EQU P2.7   ;左移按键
 YOUJIAN EQU P2.6   ;右移按键
 XIAJIAN EQU P2.4   ;下移按键
 CBUFTH0 EQU 75H    ;定时器TH0基数存储单元
 CBUFTL0 EQU 76H    ;定时器TL0基数存储单元
 XUAN0  EQU 20H    ;第0列旋转数据
 XUAN1  EQU 21H    ;第1列旋转数据
 XUAN2  EQU 22H    ;第2列旋转数据
 XUAN3  EQU 23H    ;第3列旋转数据
 XUAN11  EQU 25H
 XUAN12    EQU 26H
 XUAN13  EQU 27H
 
 X_X  EQU 6CH    ;异地旋转X-X
 Y_Y  EQU 6DH    ;异地旋转Y-Y
 HANGSHU  EQU 2BH
 BT0  BIT 2FH.0   ;节拍法标志位
 SANFEIJI BIT 2FH.1   ;闪烁标志位
 CHONGTU BIT 2FH.2   ;冲突标志位,冲突就合成
 HANZI  BIT 2FH.3   ;显示汉字标志位
 GUANSHU EQU 2DH
 ANJIAN1 BIT 2FH.4
 ANJIAN2 BIT 2FH.5
 ANJIAN3 BIT 2FH.6
 ANJIAN4 BIT 2FH.7
 TINGZHI BIT 2EH.2   ;停止标志位
 ZANTING BIT 2EH.3   ;加速标志位
 GUOGUAN BIT 2EH.4
 
 FENSHUZHI EQU 6EH
 FENSHUZHI1 EQU 78H
 SUDU  EQU 79H
 SUIJISHU EQU 6FH
 FXUAN  EQU 24H    ;用来存储旋转溢出
 BEI0  EQU 30H    ;第0列数据
 BEI1  EQU 31H    ;第1列数据
 BEI2  EQU 32H    ;第2列数据
 BEI3  EQU 33H    ;第3列数据
 BEI4  EQU 34H    ;第4列数据
 BEI5  EQU 35H    ;第5列数据
 BEI6  EQU 36H    ;第6列数据
 BEI7  EQU 37H    ;第7列数据
 BEI8  EQU 38H    ;第8列数据
 BEI9  EQU 39H    ;第9列数据     背景数据 上面两排左边10列
 
 BEI10  EQU 3AH    ;第0列数据
 BEI11  EQU 3BH    ;第1列数据
 BEI12  EQU 3CH    ;第2列数据
 BEI13  EQU 3DH    ;第3列数据
 BEI14  EQU 3EH    ;第4列数据
 BEI15  EQU 3FH    ;第5列数据
 BEI16  EQU 40H    ;第6列数据
 BEI17  EQU 41H    ;第7列数据
 BEI18  EQU 42H    ;第8列数据
 BEI19  EQU 43H    ;第9列数据     背景数据 下面两排左边10列
 XIAN0  EQU 44H    ;第0列显示数据
 XIAN1  EQU 45H    ;第1列显示数据
 XIAN2  EQU 46H    ;第2列显示数据
 XIAN3  EQU 47H    ;第3列显示数据
 XIAN4  EQU 48H    ;第4列显示数据
 XIAN5  EQU 49H    ;第5列显示数据
 XIAN6  EQU 4AH    ;第6列显示数据
 XIAN7  EQU 4BH    ;第7列显示数据
 XIAN8  EQU 4CH    ;第8列显示数据
 XIAN9  EQU 4DH    ;第9列显示数据 显示数据 上面两排左边10列
 XIAN10  EQU 4EH    ;第0列显示数据
 XIAN11  EQU 4FH    ;第1列显示数据
 XIAN12  EQU 50H    ;第2列显示数据
 XIAN13  EQU 51H    ;第3列显示数据
 XIAN14  EQU 52H    ;第4列显示数据
 XIAN15  EQU 53H    ;第5列显示数据
 XIAN16  EQU 54H    ;第6列显示数据
 XIAN17  EQU 55H    ;第7列显示数据
 XIAN18  EQU 56H    ;第8列显示数据
 XIAN19  EQU 57H    ;第9列显示数据 显示数据 下面两排左边10列
 YIDONG0 EQU 58H    ;第0列移动数据
 YIDONG1 EQU 59H    ;第1列移动数据
 YIDONG2 EQU 5AH    ;第2列移动数据
 YIDONG3 EQU 5BH    ;第3列移动数据
 YIDONG4 EQU 5CH    ;第4列移动数据
 YIDONG5 EQU 5DH    ;第5列移动数据
 YIDONG6 EQU 5EH    ;第6列移动数据
 YIDONG7 EQU 5FH    ;第7列移动数据
 YIDONG8 EQU 60H    ;第8列移动数据
 YIDONG9 EQU 61H    ;第9列移动数据
 YIDONG10 EQU 62H    ;第0列移动数据
 YIDONG11 EQU 63H    ;第1列移动数据
 YIDONG12 EQU 64H    ;第2列移动数据
 YIDONG13 EQU 65H    ;第3列移动数据
 YIDONG14 EQU 66H    ;第4列移动数据
 YIDONG15 EQU 67H    ;第5列移动数据
 YIDONG16 EQU 68H    ;第6列移动数据
 YIDONG17 EQU 69H    ;第7列移动数据
 YIDONG18 EQU 6AH    ;第8列移动数据
 YIDONG19 EQU 6BH    ;第9列移动数据
 ORG  00H
 LJMP START
 ORG  000BH
 JMP  T_0
 START:
 MOV  R0,#7FH
 FUWEI: MOV  @R0,#00H
 DJNZ R0,FUWEI
 MOV  FENSHUZHI,#00         ;最开始的时候分数为0
 MOV  FENSHUZHI1,#00
 MOV  GUANSHU,#0
 MOV  SUDU,#50
 START1:
 CALL CHUZHI1
 CALL CHUZHI2        ;最开始的时候产生的积木
 ; MOV  SUIJISHU,#6          ;最开始的时候产生的随机数为6(随机产生积木)
 CLR  HANZI
 
 
 ;在最开始的时候,把HANZI置成1用来显示汉字
 MAIN1:
 MOV  SP,#79H
 MOV  TMOD,#01H
 MOV  DPTR,#65536-20000
 MOV  TH0,DPH
 MOV  TL0,DPL
 MOV  CBUFTH0,DPH
 MOV  CBUFTL0,DPL
 SETB EA
 SETB ET0
 SETB TR0
 CLR  BT0           ;中断标志位
 ;CLR  CHONGTU        ;数据冲突标志位,等于0表示不冲突,能选择等
 CLR  ANJIAN1        ;按键1已经按下的的标志位
 CLR  ANJIAN2        ;按键2已经按下的的标志位
 CLR  ANJIAN3        ;按键3已经按下的的标志位
 CLR  ANJIAN4        ;按键4已经按下的的标志位
 CLR  ZANTING
 CLR  GUOGUAN
 ; CLR  CHONGHE              ;用来出1S的标志
 MOV  R2,#0
 MOV  R3,#0         ;X坐标
 MOV  73H,#0         ;显示汉字的初始值
 MOV  R0,73H
 MOV  74H,#0
 MAIN: JNB  BT0,MAIN       ;等待中断的到来(执行中断返回后,BT0等于1)
 CLR  BT0
 JNB  HANZI,HUNAN         ;HANZI等于0就去显示汉字
 LJMP YUANDIAN
 HUNAN: MOV  R0,73H
 LCALL KAISHIXIANSHI
 jb  xuanjian,taiqi44
 jb  anjian1,taiqi44
 setb anjian1
 SETB HANZI        ;旋转键按下就开始游戏
 LJMP MAIN1
 taiqi44: jnb  xuanjian,GGG
 clr  anjian1
 GGG: INC  R2
 CJNE R2,#5,MAIN
 MOV  R2,#0
 INC  73H
 INC  73H
 MOV  A,73H
 CJNE A,#228,MAIN
 MOV  73H,#0
 LJMP MAIN
 YUANDIAN:
 CALL FENSHU
 CALL FENSHU1
 JNB  GUOGUAN,CCRR    ;是否过关
 MOV  FENSHUZHI,#0
 LCALL FUWEI4
 MOV  A,SUDU      ;过关后速度加快
 CJNE A,#5,HHRR
 MOV  A,#50
 HHRR: SUBB A,#5
 MOV  SUDU,A
 LJMP START1
 CCRR:  CALL CHUFEIJI
 
 CALL HECHENG       ;背景合成显示
 CALL XIANSHI        ;调用显示子程序
 CALL JIANPAN      ;按键判断子程序
 JNB  ZANTING,MAIN
 JB  HANZI,HHH
 LCALL FUWEI4
 LCALL BAOCUN
 LJMP START1
 HHH:
 INC  R2
 MOV  A,R2      ;判断是否来了
 CJNE A,SUDU,MAIN      ;1S没有来什么事情都不干
 MOV  R2,#0       ;来了
 CALL XIAYI      ;下移子程序
 JNB  HANZI,JJJ
 LJMP MAIN
 JJJ:
 LCALL FUWEI4
 LCALL BAOCUN
 LJMP START1
 BAOCUN:
 MOV  A,GUANSHU
 MOV  B,#10
 MUL  AB
 MOV  FENSHUZHI1,A
 RET
 
 CHUSUIJI:
 MOV  A,TL0
 MOV  B,#08
 DIV  AB
 MOV  A,B
 MOV  SUIJISHU,A
 RET
 
 CHUFEIJI:
 CLR  PSW.7
 MOV  A,R3
 SUBB A,#8
 JB  PSW.7,III
 MOV  R3,#0
 ; CJNE R3,#8,III
 ; MOV  R3,#0
 ; CPL  SANFEIJI
 ; JNB  SANFEIJI,III
 
 CALL CHUSUIJI
 CALL SUIJI
 III:
 RET
 
 SUIJI:
 MOV  A,SUIJISHU
 CLR  C
 RLC  A
 MOV  DPTR,#TAB
 JMP  @A+DPTR
 TAB: AJMP SUB0
 AJMP SUB1
 AJMP SUB2
 AJMP SUB3
 AJMP SUB4
 AJMP SUB5
 AJMP SUB6
 AJMP SUB7
 
 SUB0:
 ORL  YIDONG0,#0AH
 ORL  YIDONG1,#0FH
 ORL  YIDONG2,#0AH
 RET
 SUB1:
 ORL  YIDONG1,#0AH
 ORL  YIDONG2,#0FH
 ORL  YIDONG3,#0AH
 RET
 SUB2:
 ORL  YIDONG2,#0AH
 ORL  YIDONG3,#0FH
 ORL  YIDONG4,#0AH
 RET
 
 SUB3:
 ORL  YIDONG3,#0AH
 ORL  YIDONG4,#0FH
 ORL  YIDONG5,#0AH
 RET
 SUB4:
 ORL  YIDONG4,#0AH
 ORL  YIDONG5,#0FH
 ORL  YIDONG6,#0AH
 RET
 SUB5:
 ORL  YIDONG5,#0AH
 ORL  YIDONG6,#0FH
 ORL  YIDONG7,#0AH
 RET
 
 SUB6:
 ORL  YIDONG6,#0AH
 ORL  YIDONG7,#0FH
 ORL  YIDONG8,#0AH
 RET
 SUB7:
 ORL  YIDONG7,#0AH
 ORL  YIDONG8,#0FH
 ORL  YIDONG9,#0AH
 RET
 
 FUWEI4:
 MOV  R0,#6BH
 FUWEI78:MOV  @R0,#00h
 DEC  R0
 CJNE R0,#2FH,FUWEI78
 RET
 
 ;///////////////替换子程序////////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:将飞机模型载入BEI里面
 TIHUAN1:
 MOV  BEI13,XUAN1
 MOV  BEI14,XUAN2
 MOV  BEI15,XUAN3
 RET
 ;///////////////替换子程序////////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:将飞机模型载入BEI里面
 TIHUAN2:
 MOV  YIDONG3,XUAN1
 MOV  YIDONG4,XUAN2
 MOV  YIDONG5,XUAN3
 RET
 ;///////////////初值1子程序///////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:产生飞机模型2
 CHUZHI1:MOV  XUAN1,#0A0H
 MOV  XUAN2,#0F0H
 MOV  XUAN3,#0A0H
 CALL TIHUAN1
 RET
 ;///////////////初值1子程序///////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:产生飞机模型
 CHUZHI2:MOV  XUAN1,#0AH
 MOV  XUAN2,#0FH
 MOV  XUAN3,#0AH
 CALL TIHUAN2
 RET
 ;///////////////合成子程序///////////////////
 ;输入:"背景与移动"
 ;输出: "显示"
 ;实现的功能:把背景与移动合成到显示
 HECHENG:MOV  73H,#XIAN0
 MOV  R0,#BEI0
 MOV  74H,#YIDONG0
 WANG1: MOV  A,@R0
 MOV  R1,74H
 ORL  A,@R1
 MOV  R1,73H
 MOV  @R1,A
 INC  R0
 INC  74H
 INC  73H
 CJNE R0,#44H,WANG1
 RET
 ;///////////////显示子程序///////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:显示 XIAN0- XIAN9  XIAN10- XIAN19的内容
 XIANSHI:
 MOV  SHUJU,#00H
 CLR  LATCH_L    ;下面的两个点阵不亮
 SETB LATCH_H    ;开上面的两个点阵
 MOV  R0,#XIAN0
 MOV  R1,#00
 WANG: MOV  PIANXUAN,R1   ;片选
 MOV  SHUJU,@R0   ;数据
 CALL DELAY    ;延时
 MOV  SHUJU,#00   ;关屏幕
 INC  R0
 INC  R1
 CJNE R0,#4EH,WANG
 MOV  PIANXUAN,#10
 MOV  SHUJU,#0FFH
 CALL DELAY
 MOV  SHUJU,#00
 ;显示分数
 LCALL FENSHU1
 LCALL FENSHU2
 MOV  PIANXUAN,#12
 MOV  SHUJU,44H
 CALL DELAY
 MOV  SHUJU,#00
 MOV  PIANXUAN,#13
 
 MOV  SHUJU,45H
 CALL DELAY
 MOV  SHUJU,#00
 ;
 MOV  PIANXUAN,#14
 MOV  SHUJU,46H
 CALL DELAY
 MOV  SHUJU,#00
 MOV  PIANXUAN,#15
 
 MOV  SHUJU,47H
 CALL DELAY
 MOV  SHUJU,#00
 CLR  LATCH_H
 SETB LATCH_L
 MOV  R0,#XIAN10
 MOV  R1,#00
 ZHENG: MOV  PIANXUAN,R1
 MOV  SHUJU,@R0   ;数据
 CALL DELAY    ;延时
 MOV  SHUJU,#00   ;关屏幕
 INC  R0
 INC  R1
 CJNE R0,#58H,ZHENG
 
 MOV  PIANXUAN,#10
 MOV  SHUJU,#0FFH
 CALL DELAY
 MOV  SHUJU,#00H
 LCALL FENSHU1
 MOV  A,B
 LCALL FENSHU2
 MOV  PIANXUAN,#12
 MOV  SHUJU,44H
 CALL DELAY
 MOV  SHUJU,#00
 MOV  PIANXUAN,#13
 MOV  SHUJU,45H
 CALL DELAY
 MOV  SHUJU,#00
 MOV  PIANXUAN,#14
 MOV  SHUJU,46H
 CALL DELAY
 MOV  SHUJU,#00
 
 MOV  PIANXUAN,#15
 MOV  SHUJU,47H
 CALL DELAY
 MOV  SHUJU,#00
 RET
 
 ;///////////////显示汉字子程序///////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:滚动显示湖南源点教育
 KAISHIXIANSHI:
 
 LOOP:
 MOV  SHUJU,#00H
 CLR  LATCH_H  ;下面的两个点阵不亮
 SETB LATCH_L   ;开上面的两个点阵
 MOV  PIANXUAN,74H
 
 MOV  DPTR,#TAB4
 MOV  A,R0
 MOVC A,@A+DPTR
 MOV  SHUJU,A
 CALL DELAY
 MOV  SHUJU,#00
 CLR  LATCH_L
 SETB LATCH_H
 INC  R0
 MOV  PIANXUAN,74H
 MOV  DPTR,#TAB4
 MOV  A,R0
 MOVC A,@A+DPTR
 MOV  SHUJU,A
 CALL DELAY
 MOV  SHUJU,#00
 
 INC  R0
 INC  74H
 MOV  A,74H
 CJNE A,#16,LOOP
 MOV  74H,#0
 OUT3: RET
 TAB4:
 DB   00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
 DB   00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
 DB   00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
 DB   00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
 ;湖[16*16]下上列排
 DB   04h,  10h, 0FCh,  21h,  02h,  62h,  01h,  16h
 DB   7Fh,  90h,  20h,  90h,  20h, 0FFh,  20h,  90h
 DB  0BFh, 0D0h,  40h,  90h,  3Fh, 0FEh,  42h,  22h
 DB   82h,  22h,  7Fh, 0FFh,  00h,  02h,  00h,  00h
 ;南[16*16]下上列排
 DB   00h,  04h, 0FFh, 0E4h,  00h,  24h,  09h,  24h
 DB   09h,  64h,  09h, 0A4h,  09h,  24h,  7Fh,  3Fh
 DB   09h,  24h,  09h, 0A4h,  09h,  64h,  49h,  24h
 DB   80h,  24h,  7Fh, 0F6h,  00h,  24h,  00h,  00h
 ;源[16*16]下上列排
 DB   04h,  10h,  04h,  22h, 0FEh,  64h,  41h,  0Ch
 DB   30h,  80h,  0Fh, 0FEh,  20h,  02h,  13h, 0E2h
 DB   5Ah, 0A2h,  82h, 0B2h,  7Eh, 0AEh,  02h, 0A2h
 DB   0Ah, 0A2h,  13h, 0F3h,  30h,  22h,  00h,  00h
 ;点[16*16]下上列排
 DB   80h,  00h,  40h,  00h,  37h, 0C0h,  04h,  40h
 DB   14h,  40h,  64h,  40h,  04h,  7Fh,  14h,  48h
 DB   24h,  48h,  64h,  48h,  04h,  48h,  17h, 0E8h
 DB   20h,  4Ch, 0C0h,  08h,  00h,  00h,  00h,  00h
 ;教[16*16]下上列排
 DB   02h,  20h,  12h,  24h,  51h,  24h,  90h, 0A4h
 DB   7Eh, 0FFh,  0Ah, 0A4h,  89h, 0B4h,  40h, 0ACh
 DB   20h,  20h, 0Bh,  9Fh,  04h,  10h, 0Bh,  10h
 DB   60h, 0F0h, 0C0h,  18h,  40h,  10h,  00h,  00h
 ;育[16*16]下上列排
 DB   00h,  04h,  00h,  04h,  00h,  24h, 0FFh, 0A4h
 DB   0Ah, 0B4h,  0Ah, 0ACh,  0Ah, 0A5h,  0Ah, 0A6h
 DB   0Ah, 0A4h,  4Ah, 0A4h,  8Ah, 0A4h,  7Fh, 0B4h
 DB   00h,  64h,  00h,  06h,  00h,  04h,  00h,  00h
 DB   00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
 DB   00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
 DB   00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
 DB   00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
 
 FENSHU:
 CLR  PSW.7
 MOV  A,FENSHUZHI
 SUBB A,#9
 JB  PSW.7,TTTT
 INC  FENSHUZHI1
 MOV  FENSHUZHI,#0
 TTTT:
 RET
 
 
 FENSHU1:
 MOV  B,#10
 MOV  A,FENSHUZHI1
 DIV  AB
 CJNE A,GUANSHU,VVVV
 RET
 VVVV: MOV  GUANSHU,A
 SETB GUOGUAN
 RET
 FENSHU2:
 CLR  C
 RLC  A
 MOV  DPTR,#TAB1
 JMP  @A+DPTR
 TAB1:
 AJMP SUB00
 AJMP SUB10
 AJMP SUB20
 AJMP SUB30
 AJMP SUB40
 AJMP SUB50
 AJMP SUB60
 AJMP SUB70
 AJMP SUB80
 AJMP SUB90
 SUB00:
 MOV  44H,#70H     ;分数0的显示
 MOV  45H,#88H
 MOV  46H,#88H
 MOV  47H,#70H
 RET
 SUB10:
 MOV  44H,#00H
 MOV  45H,#00H
 MOV  46H,#00H
 MOV  47H,#0F8H
 RET
 SUB20:
 MOV  44H,#0E8H
 MOV  45H,#0A8H
 MOV  46H,#0A8H
 MOV  47H,#0B8H
 RET
 SUB30:
 MOV  44H,#0A8H
 MOV  45H,#0A8H
 MOV  46H,#0A8H
 MOV  47H,#0F8H
 RET
 SUB40:
 MOV  44H,#38H
 MOV  45H,#20H
 MOV  46H,#20H
 MOV  47H,#0F8H
 RET
 SUB50:
 MOV  44H,#0B8H
 MOV  45H,#0A8H
 MOV  46H,#0A8H
 MOV  47H,#0E8H
 RET
 SUB60:
 MOV  44H,#0F8H
 MOV  45H,#0A8H
 MOV  46H,#0A8H
 MOV  47H,#0E8H
 RET
 SUB70:
 MOV  44H,#08H
 MOV  45H,#08H
 MOV  46H,#08H
 MOV  47H,#0F8H
 RET
 SUB80:
 MOV  44H,#0F8H
 MOV  45H,#0A8H
 MOV  46H,#0A8H
 MOV  47H,#0F8H
 RET
 SUB90:
 MOV  44H,#0B8H
 MOV  45H,#0A8H
 MOV  46H,#0A8H
 MOV  47H,#0F8H
 RET
 ;///////////////下移子程序////////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:将BEI1-BEI9里面的数左移
 XIAYI:
 CALL XIAYI3     ;先下移
 INC  R3
 INC  FENSHUZHI
 CALL CHONGTUPANDUAN   ;是否能下移
 CCCC: RET
 XIAYI3: MOV  R0,#YIDONG0
 MOV  R1,#YIDONG10
 WANG3: CLR  C
 MOV  A,@R0
 RLC  A
 MOV  @R0,A
 MOV  A,@R1
 RLC  A
 MOV  @R1,A
 INC  R0
 INC  R1
 CJNE R0,#62H,WANG3
 RET
 ;///////////////左移子程序////////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:
 ZUOYI:
 MOV  A,BEI0   ;判断能不能左移
 JZ  ZUOYI1
 RET
 ZUOYI1: MOV  A,BEI10
 JZ  ZUOYI2
 RET
 ZUOYI2:
 MOV  73H,BEI0  ;30H-3DH
 MOV  R0,#31H
 WANG4: MOV  A,@R0   ;31H-30H
 DEC  R0
 MOV  @R0,A
 INC  R0
 INC  R0
 CJNE R0,#44H,WANG4
 MOV  43H,73H
 CALL CHONGTUPANDUAN   ;是否能下移
 WANG50: RET
 ;///////////////右移子程序////////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:
 YOUYI:
 MOV  A,BEI9   ;判断能不能再右移
 JZ  YOUYI1
 RET
 YOUYI1: MOV  A,BEI19
 JZ  YOUYI2
 RET
 YOUYI2:
 INC  X_X
 CALL YOUYI3   ;坐标加一用于异地旋转
 RET
 YOUYI3:
 CALL YOUYI4
 CALL CHONGTUPANDUAN   ;是否能下移
 WANG51: RET
 YOUYI4: MOV  73H,BEI19  ;30H-3DH
 MOV  R0,#42H
 WANG5: MOV  A,@R0   ;31H-30H
 INC  R0
 MOV  @R0,A
 DEC  R0
 DEC  R0
 CJNE R0,#2FH,WANG5
 MOV  30H,73H
 RET
 ;///////////////判断按键子程序///////////////////
 ;输入:"无"
 ;输出: ""
 ;实现的功能:
 jianpan:
 jb  xuanjian,taiqi   ;设置按键
 jb  anjian1,taiqi   ;有键按下R4加1(设置那个部分)
 setb anjian1    ;把ANJIAN1设置为1(防止1次按键 多次响应)
 CPL  zanting
 taiqi: jnb  xuanjian,panzuo   ;抬起后anjina1等于0
 clr  anjian1
 JNB  ZANTING,outtT
 panzuo:       ;加按键
 jb  zuojian,taiqi2
 CPL  ANJIAN2
 jb  anjian2,taiqi2
 ;setb anjian2
 call zuoyi
 taiqi2: ;jnb  zuojian,panyou
 ; clr  anjian2
 panyou: jb  youjian,taiqi3   ;减按键
 ; jb  anjian3,taiqi3
 ; setb anjian3
 call youyi
 taiqi3: ;jnb  youjian,panxia
 ; clr  anjian3
 panxia: jb  xiajian,taiqi5  ;转换按键
 ;jb  anjian4,taiqi5   ;有键按下R4加1(设置那个部分)
 ;setb anjian4
 call xiayi
 taiqi5: ;jnb  xiajian,outtt
 ;clr  anjian4
 outtt: ret
 
 ;///////////////冲突判断子程序///////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:判断两个飞机是否相撞,相撞后冲突变为0
 CHONGTUPANDUAN:
 MOV  R0,#BEI0
 MOV  R1,#YIDONG0
 WANG34: MOV  A,@R0
 ANL  A,@R1
 JZ  ZHENG34
 ZHENG334:
 CLR  HANZI        ;相撞了
 RET
 ZHENG34:
 INC  R0
 INC  R1
 CJNE R0,#44H,WANG34
 SETB  HANZI     ;没相撞
 RET
 
 
 ;///////////////中断子程序///////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:把A的数输出到P2口显示
 T_0: MOV  TL0,CBUFTL0
 MOV  TH0,CBUFTH0
 SETB BT0
 RETI
 ;///////////////延时子程序///////////////////
 ;输入:""
 ;输出: ""
 ;实现的功能:
 DELAY: MOV  R6,#8
 DD1: MOV  R7,#40
 DJNZ R7,$
 DJNZ R6,DD1
 RET
 
 ;///////////////结束子程序///////////////////
 END
 
 |