打印

用51单片机做的飞机游戏(精简代码)

[复制链接]
7562|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
长沙卖菜王|  楼主 | 2009-4-16 17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在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

相关帖子

沙发
hpxlove| | 2009-4-16 17:17 | 只看该作者

打飞机! 那游戏好玩不?

       

使用特权

评论回复
板凳
长沙卖菜王|  楼主 | 2009-4-16 17:28 | 只看该作者

还可以吧!

使用特权

评论回复
地板
莫邪| | 2009-4-16 17:58 | 只看该作者

看看

王总来顶你了!!!

使用特权

评论回复
5
蓝昕儿| | 2009-4-16 18:08 | 只看该作者

嘿嘿!小子,不错!

积极响应号召。。。
不错哦!
一定费了不少功夫吧? 
值得表扬啊! 
顶!!!

使用特权

评论回复
6
ly5086123| | 2009-4-16 18:16 | 只看该作者

不错!学习了!

   牛B~我来学习了

使用特权

评论回复
7
tuzuyao| | 2009-4-16 18:38 | 只看该作者

perfect

游戏做的帅人更帅,强烈支持

使用特权

评论回复
8
fkepynn| | 2009-4-16 18:57 | 只看该作者

单片机

师傅你真牛B!不知道还要多少年才能超过你了呢!哈哈、、、、、、
先把它存电脑上慢慢研究,顶上!

使用特权

评论回复
9
wanjun203888| | 2009-4-16 19:53 | 只看该作者

人才呀人才

中国现在就缺乏这样的人才,加油!!
有图片就好了呀!

使用特权

评论回复
10
长沙卖菜王|  楼主 | 2009-4-16 20:00 | 只看该作者

传上图片

    晕 你别策我咯

使用特权

评论回复
11
长沙卖菜王|  楼主 | 2009-4-16 20:01 | 只看该作者

图片

使用特权

评论回复
12
taoest| | 2009-4-17 00:45 | 只看该作者

汇编

先汗一个,用汇编写游戏。我是办不到。

使用特权

评论回复
13
huangqi412| | 2009-4-17 07:50 | 只看该作者

呵呵,长沙满哥

使用特权

评论回复
14
古道热肠| | 2009-4-17 11:38 | 只看该作者

哈哈,楼主不错,又卖菜又玩单片机,互相补充

这年头玩单片机的不始卖菜的,当家过日子的都知道.

使用特权

评论回复
15
leolle| | 2009-4-17 12:13 | 只看该作者

什么目的

使用特权

评论回复
16
hpxlove| | 2009-4-18 11:03 | 只看该作者

看来我得搞一个吃菜大王 啦

使用特权

评论回复
17
长沙卖菜王|  楼主 | 2009-4-22 12:46 | 只看该作者

哎 自己顶下

使用特权

评论回复
18
长沙卖菜王|  楼主 | 2009-4-24 16:21 | 只看该作者

加油

   为了我自己的帖子全为“酷”

使用特权

评论回复
19
求学1子| | 2009-4-25 01:11 | 只看该作者

佩服

什么时候我才能像楼主一样厉害啊?羡慕……

使用特权

评论回复
20
程序叵人| | 2009-4-25 08:56 | 只看该作者

楼主强人

汗,希望将来像楼主一样牛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

201

帖子

0

粉丝