- $include(t89c51cc01.inc)
- KEYBOARD equ 00H
- height equ 10111111B ; THE HEIGHT OF BIRD
- delay1 equ 08H
- org 0000h
- LJMP init1
- ORG 02FBh ; Initializing of interrupt
- LJMP TIMER_INTERRUPT
- init1: mov sp, #70h ;Showing "bird go!"
- CLR TR1
- MOV R1, #00H
- MOV R4, #08H
-
- LJMP main
- main:
- MOV R2, #08H
- MOV R3, #06H
- CLR C
- DJNZ R4, AROW ;Loop of row
- LJMP init1
- AROW:
- MOV A, R1
- MOV DPTR, #DATA1
- MOVC A, @A+DPTR
- ROLL: ;Starting of game
- MOV P0, #7FH
- JNB P0.0,init2
- LJMP LATER
- LATER:
- RRC A
- MOV P4.1, C
- CLR P4.0
- SETB P4.0
- DJNZ R2, ROLL
- INC R1
- MOV R2, #08H
- DJNZ R3, AROW
-
- CLR P3.2
- SETB P3.2
- CLR P3.2
- LJMP main
-
-
- init2:
- mov R3, #25h
- mov R4, #00h
- JB P2.5, HARD
- mov R5, #0FFh
- LJMP AVOID
- HARD:
- MOV R5, #60H
- AVOID:
- MOV TMOD,#11h
- SETB EA ;Initialize interrupts
- SETB ET1
-
- CLR TR1
- MOV TH1,#08Fh ;Setting the time of interrupts
- MOV TL1,#00Fh
- setb TR1
- ljmp start11
-
- start11:
- SETB KEYBOARD
- MOV DPTR, #MOVEMENT ;Initializing of showing bird
- MOV A, R3
- MOVC A, @A+DPTR
- MOV R0, A
- MOV A, R4
- MOVC A, @A+DPTR
- MOV R1, A
- mov R2, #08h
- LJMP Rightmove
-
- displaybird: ;Showinging bird in one row
- setb P4.1
- CLR P4.0
- SETB P4.0
- djnz R0, displaybird
- CLR P4.1
- CLR P4.0
- SETB P4.0
- displaybird1:
- setb P4.1
- CLR P4.0
- SETB P4.0
- djnz R1, displaybird1
- mov A, height
- ActiveRow:
- RRC A
- mov p4.1, C
- CLR P4.0
- SETB P4.0
- djnz R2, ActiveRow
- CLR P3.2
- SETB P3.2
- CLR P3.2
- ljmp init
- Rightmove:
- djnz R5, displaybird ;Controlling the speed of game
- mov A, height
- LCALL DIEORNOT
- DOWN:
- INC R4
- DEC R3
- mov A, height ;;move right
- RR A ;;move down
- MOV height, A
- JB P2.5, HARD1
- MOV R5, 0FFH
- LJMP AVOID1
- HARD1:
- mov R5, #90h
- AVOID1:
- LCALL DIEORNOT ;Judge dying or not
- LJMP displaybird
- DEAD1: ;The effect of game over
-
-
- mov R5, #00h
- mov R6, #03h
- DEAD12: MOV R1, #00H
- MOV R4, #08H
- LJMP main76
- main76:
- MOV R2, #08H
- MOV R7, #06H
- CLR C
- DJNZ R4, AROW76
- LJMP DEAD12
- AROW76:
- lcall value
- MOV A, R1
- MOV DPTR, #DATA3
- MOVC A, @A+DPTR
- ROLL76:
- RRC A
- MOV P4.1, C
- CLR P4.0
- SETB P4.0
- DJNZ R2, ROLL76
- INC R1
- MOV R2, #08H
- DJNZ R7, AROW76
-
- CLR P3.2
- SETB P3.2
- CLR P3.2
- LJMP main76
- CHECK4:
- MOV A,R3
- INC A
- MOV B, #08H
- DIV AB
- ADD A, #12H
- MOV DPTR, #DATA2
- MOVC A, @A+DPTR
- MOV R7, A
- MOV A, #08H
- SUBB A, B
- MOV B, A
- MOV A, R7
- MOV R7, B
- ROLLING4:
- RLC A
- DJNZ R7,ROLLING4
- JNC DEAD1
- RET
- CHECK5:
- MOV A, R3
- INC A
- MOV B, #08H
- DIV AB
- ADD A, #18H
- MOV DPTR, #DATA2
- MOVC A, @A+DPTR
- MOV R7, A
- MOV A, #08H
- SUBB A, B
- MOV B, A
- MOV A, R7
- MOV R7, B
- ROLLING5:
- RLC A
- DJNZ R7,ROLLING5
- JNC DEAD1
- RET
- CHECK6:
- MOV A,R3
- INC A
- MOV B, #08H
- DIV AB
- ADD A, #1EH
- MOV DPTR, #DATA2
- MOVC A, @A+DPTR
- MOV R7, A
- MOV A, #08H
- SUBB A, B
- MOV B, A
- MOV A, R7
- MOV R7, B
- ROLLING6:
- RLC A
- DJNZ R7,ROLLING6
- JNC DEAD
- RET
- CHECK7:
- MOV A, R3
- INC A
- MOV B, #08H
- DIV AB
- ADD A, #24H
- MOV DPTR, #DATA2
- MOVC A, @A+DPTR
- MOV R7, A
- MOV A, #08H
- SUBB A, B
- MOV B, A
- MOV A, R7
- MOV R7, B
- ROLLING7:
- RLC A
- DJNZ R7,ROLLING7
- JNC DEAD
- RET
- DIEORNOT:
- RRC A ;Judging which row is the bird in
- RRC A
- JNC CHECK1
- RRC A
- JNC CHECK2
- RRC A
- JNC CHECK3
- RRC A
- JNC CHECK4
- RRC A
- JNC CHECK5
- RRC A
- JNC CHECK6
- RRC A
- JNC CHECK7
- RET
- CHECK3:
- MOV A,R3
- INC A
- MOV B, #08H
- DIV AB
- ADD A, #0CH
- MOV DPTR, #DATA2
- MOVC A, @A+DPTR
- MOV R7, A
- MOV A, #08H
- SUBB A, B
- MOV B, A
- MOV A, R7
- MOV R7, B
- ROLLING3:
- RLC A
- DJNZ R7,ROLLING3
- JNC DEAD
- RET
- DEAD: ;The effect of game over
-
- mov R5, #00h
- mov R6, #03h
-
- DEAD2: MOV R1, #00H
- MOV R4, #08H
-
-
- LJMP main7
- main7:
- MOV R2, #08H
- MOV R7, #06H
- CLR C
- DJNZ R4, AROW7
- LJMP DEAD2
- AROW7:
- lcall value
- MOV A, R1
- MOV DPTR, #DATA3
- MOVC A, @A+DPTR
- ROLL7:
- RRC A
- MOV P4.1, C
- CLR P4.0
- SETB P4.0
- DJNZ R2, ROLL7
- INC R1
- MOV R2, #08H
- DJNZ R7, AROW7
-
- CLR P3.2
- SETB P3.2
- CLR P3.2
- LJMP main7
- CHECK1:
- MOV A, R3
- INC A
- MOV B, #08H
- DIV AB
- MOV DPTR, #DATA2
- MOVC A, @A+DPTR
- MOV R7, A
- MOV A, #08H
- SUBB A, B
- MOV B, A
- MOV A, R7
- MOV R7, B
- ROLLING1:
- RLC A
- DJNZ R7,ROLLING1
- JNC DEAD
- RET
- CHECK2:
- MOV A, R3
- INC A
- MOV B, #08H
- DIV AB
- ADD A, #06H
- MOV DPTR, #DATA2
- MOVC A, @A+DPTR
- MOV R7, A
- MOV A, #08H
- SUBB A, B
- MOV B, A
- MOV A, R7
- MOV R7, B
- ROLLING2:
- RLC A
- DJNZ R7,ROLLING2
- JNC DEAD
- RET
-
- init: ;Showing the map of game
- MOV R6, #00H
- MOV R2, #08H
-
- LJMP main11
- main11:
- MOV R0, #08H
- MOV R1, #06H
- CLR C
- DJNZ R2, AAROW
- ljmp start11
- AAROW:
- MOV A, R6
- MOV DPTR, #DATA2
- MOVC A, @A+DPTR
- RROLL:
- clr C
- RRC A
- MOV P4.1, C
- CLR P4.0
- SETB P4.0
- DJNZ R0, RROLL
- INC R6
- MOV R0, #08H
- DJNZ R1, AAROW
-
- CLR P3.2
- SETB P3.2
- CLR P3.2
- LJMP main11
- TIMER_INTERRUPT: ;judging winning or not
- mov P0, #0EFH ;judging jumping or not
- MOV TH1,#08Fh
- MOV TL1,#00Fh
- setb TR1
- jnb p0.2, goup
- INC R3
- INC R3
- DJNZ R3,NOWIN
- LJMP WIN
- NOWIN:
- DEC R3
- reti
- goup: ;keeping stability of jumping
- jnb KEYBOARD, KEYOFF
- ljmp goup1
- goup1:
- nop
- nop
- jnb P0.2, goup1
- CPL P2.3
- MOV A, height
- RL A
- MOV height, A
- CLR KEYBOARD
- KEYOFF:
- reti
- WIN:
- MOV R1, #00H
- MOV R4, #08H
-
- LJMP main8
- main8:
- MOV R2, #08H
- MOV R7, #06H
- CLR C
- DJNZ R4, AROW8
- LJMP WIN
- AROW8:
- MOV A, R1
- MOV DPTR, #DATA4
- MOVC A, @A+DPTR
- ROLL8:
- RRC A
- MOV P4.1, C
- CLR P4.0
- SETB P4.0
- DJNZ R2, ROLL8
- INC R1
- MOV R2, #08H
- DJNZ R7, AROW8
-
- CLR P3.2
- SETB P3.2
- CLR P3.2
- LJMP main8
-
-
-
-
- value: MOV A, R5
- MOV DPTR, #DATA5
- MOVC A, @A+DPTR
- mov R3, A
-
- increase:
- djnz R6, gogogo
- mov R6, 02h
- DELAY:
- DJNZ delay1, NEXT
- INC R5
- NEXT: LJMP continue
-
- gogogo: ret
-
- continue: djnz R3,function2
- ljmp main1
- function2: djnz R3,function3
- ljmp main2
- function3: djnz R3,function4
- ljmp main3
- function4: djnz R3,function5
- ljmp main4
- function5: djnz R3,function6
- ljmp main5
- function6: djnz R3,function7
- ljmp main6
- function7: djnz R3,function8
- ljmp main77
- function8: ljmp main88
-
- main1:
- mov tcon,#00010000b
- mov tmod,#00000001b
- mov th0,#0f8h
- mov tl0,#08bh
- ljmp loop1
- main2:
- mov tcon,#00010000b
- mov tmod,#00000001b
- mov th0,#0f9h
- mov tl0,#05bh
- ljmp loop1
-
- main3:
-
- mov tcon,#00010000b
- mov tmod,#00000001b
- mov th0,#0fah
- mov tl0,#014h
- ljmp loop1
-
- main4:
- mov tcon,#00010000b
- mov tmod,#00000001b
- mov th0,#0fah
- mov tl0,#087h
- ljmp loop1
-
- main5:
- mov tcon,#00010000b
- mov tmod,#00000001b
- mov th0,#0fbh
- mov tl0,#004h
- ljmp loop1
-
- main6:
- mov tcon,#00010000b
- mov tmod,#00000001b
- mov th0,#0fbh
- mov tl0,#08fh
- ljmp loop1
-
- main77:
- mov tcon,#00010000b
- mov tmod,#00000001b
- mov th0,#0fbh
- mov tl0,#0b3h
- ljmp loop1
-
- main88:
- mov tcon,#00010000b
- mov tmod,#00000001b
- mov th0,#0fch
- mov tl0,#044h
- ljmp loop1
-
-
- loop1:
- jnb tf0,loop1
- cpl p2.2
- ljmp value
- MOVEMENT:
- DB 01H, 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H, 0AH, 0BH, 0CH, 0DH, 0EH, 0FH, 10H, 11H, 12H, 13H, 14H, 15H, 16H, 17H, 18H, 19H, 1AH, 1BH, 1CH, 1DH, 1EH, 1FH, 20H
- DB 21H, 22H, 23H, 24H, 25H, 26H
- DATA1:
- DB 11111111B,11111111B,11111111B,11111111B,11111111B,11111101B
- DB 11111101B,11000111B,10001011B,11101111B,10011110B,11111011B
- DB 00111111B,11110111B,01101101B,11101111B,10101110B,11110111B
- DB 11011101B,11100110B,10001111B,11101111B,10011110B,11101111B
- DB 00111101B,11010111B,11101111B,11100111B,10101111B,11011111B
- DB 11111101B,11100111B,11101111B,11101011B,10011110B,10111111B
- DB 11111111B,11111111B,11111111B,11111111B,11111111B,01111111B
- DATA2:
- DB 10001100B,10100000B,00010000B,00000000B,11110000B,11111101B
- DB 11001111B,11100001B,01110111B,00011000B,11110000B,11111011B
- DB 11111010B,10111010B,11011110B,00111000B,11110000B,11110111B
- DB 01111100B,00110111B,11111100B,01111011B,11110000B,11101111B
- DB 00001100B,00011010B,00000000B,11101111B,11110011B,11011111B
- DB 00001000B,00010000B,00000000B,00001110B,11111111B,10111111B
- DB 00000000B,00000000B,00000000B,00000000B,11111100B,01111111B
- DATA3:
- DB 11111111B,11111111B,11111111B,11111111B,11111111B,11111101B
- DB 10000011B,01110001B,10011100B,11001111B,11101111B,11111011B
- DB 10111111B,10111011B,01101101B,10110111B,11101111B,11110111B
- DB 10000011B,11011011B,11110101B,01111010B,11101111B,11101111B
- DB 10111111B,10111011B,11110101B,10110110B,11010111B,11011111B
- DB 10000011B,01110001B,11110100B,11001110B,10111011B,10111111B
- DB 11111111B,11111111B,11111111B,11111111B,11111111B,01111111B
- DATA4:
- DB 11111111B,10111101B,11110111B,11111111B,11111111B,11111101B
- DB 11111111B,11011011B,11110111B,11111111B,11111111B,11111011B
- DB 11111111B,01100111B,00000000B,11111111B,11111111B,11110111B
- DB 11111111B,11100111B,11110111B,11111111B,11111111B,11101111B
- DB 11111111B,11011011B,10000001B,11111111B,11111111B,11011111B
- DB 11111111B,10111101B,11010111B,11111111B,11111111B,10111111B
- DB 11111111B,11111111B,11110111B,11111111B,11111111B,01111111B
- DATA5:
- DB 01h,02h,03h,04h,05h,06h,07h,08h,07h,06H,05h,04h,03h,02h,01h,01h,03h,05h,07h,02h,04h,06h,08h,08h,06h,04h,02h,02h,03h,07h,01h
- end
復制代碼 |