⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 invaders.pbp

📁 PIC+LCD12864做的坦克打飞机游戏代码
💻 PBP
字号:
 NOLIST
;*******************************************************
;*                 Code Produced by the                *
;*             PROTON+ Compiler. Version 3.0           *
;* Copyright Rosetta Technologies/Crownhill Associates *
;*              Written by Les Johnson. 2004           *
;*******************************************************
 #include "D:\PRODEV\VSM\BASIC\ISIS_DSNS\INVADERS\INVADERS.FIL"
;[Variable Listing]
;_B#VR1,002D,DT_BYTE,1
;_B#VR2,002E,DT_BYTE,1
;BASE_ENABLED,003D,DT_BYTE,9
;BASE_HITS,0046,DT_BYTE,9
;INVADER_XPOS,004F,DT_BYTE,18
;INVADER_YPOS,0061,DT_BYTE,18
;INVADER_ENABLED,0073,DT_BYTE,18
;SHIP_XPOS,0085,DT_BYTE,1
;MISSILE_YPOS,0086,DT_BYTE,1
;MISSILE_XPOS,0087,DT_BYTE,1
;SHIP_SPEED,0088,DT_BYTE,1
;INVADER_TICK,0089,DT_BYTE,1
;INVADER_MISSILE_TICK,008A,DT_BYTE,1
;SHIP_MISSILE_TICK,008B,DT_BYTE,1
;TEMP_LOOP,008C,DT_BYTE,1
;INVADERS_ENABLED,008D,DT_BYTE,1
;INVADER_SPEED,008E,DT_BYTE,1
;BASE_XPOS_TEST,008F,DT_BYTE,1
;INVADER_MISSILE_YPOS,0090,DT_BYTE,1
;INVADER_MISSILE_XPOS,0091,DT_BYTE,1
;INVADER_MISSILE_SPEED,0092,DT_BYTE,1
;DEFAULT_INVADER_SPEED,0093,DT_BYTE,1
;INVADER_MISSILE2_TICK,0094,DT_BYTE,1
;INVADER_MISSILE2_YPOS,0095,DT_BYTE,1
;INVADER_MISSILE2_XPOS,0096,DT_BYTE,1
;INVADER_MISSILE2_SPEED,0097,DT_BYTE,1
;SAUCER_XPOS,0098,DT_BYTE,1
;SAUCER_SPEED,0099,DT_BYTE,1
;SCORE,009A,DT_DWORD,4
;LEVEL,009E,DT_WORD,2
;LIVES,00A0,DT_BYTE,1
;RANDOM_VALUE,00A1,DT_BYTE,1
;[End Listing]
 #define _USELFSR 1
 LIST  P = 18F452,f = INHX32 ,w = 2, x = on, r = DEC, mm = ON, n = 0, c = 255
 #include "c:\PROTON~1.2\INC\P18F452.lpb"
 #define XTAL 8
 #define _CORE 16
 #define _MAXRAM 1536
 #define _RAM_END 1535
 #define _MAXMEM 32768
 #define _ADC 8
 #define _ADC_RES 10
 #define _EEPROM 256
 #define RAM_BANKS 6
 #define _USART 1
 #define _USB 0
 #define _FLASH 1
 #define BANK0_START 128
 #define BANK0_END 255
 #define BANK1_START 256
 #define BANK1_END 511
 #define BANK2_START 512
 #define BANK2_END 767
 #define BANK3_START 768
 #define BANK3_END 1023
 #define BANK4_START 1024
 #define BANK4_END 1279
 #define BANK5_START 1280
 #define BANK5_END 1535
 #define BANKA_START 0
 #define BANKA_END 127
 #define _SYSTEM_VARIABLE_COUNT 49
ram_bank = 0
 #define LCD#DTPORT PORTD
 #define LCD#DTPIN 4
 #define LCD#RSPORT PORTC
 #define LCD#RSPIN 1
 #define LCD#ENPORT PORTE
 #define LCD#ENPIN 0
 #define LCD#RWPORT PORTC
 #define LCD#RWPIN 0
 #define LCD#CS1PORT PORTE
 #define LCD#CS1PIN 1
 #define LCD#CS2PORT PORTE
 #define LCD#CS2PIN 2
 #define LCD#TYPE 1
 #define INTERNAL#FONT 1
 #define FONT_SLAVE#ADDR 0
 #include "c:\PROTON~1.2\INC\REG_LD16.INC"
BPF = 0
BPFH = 1
CSTR@CT = 2
GEN = 3
GEN2 = 4
GEN2H = 5
GEN3 = 6
GEN3H = 7
GEN4 = 8
GEN4H = 9
GENH = 10
GPR = 11
PBP#RND = 12
PBP#RNDH = 13
PBP#VAR0 = 14
PBP#VAR0H = 15
PBP#VAR1 = 16
PBP#VAR1H = 17
PP0 = 18
PP0H = 19
PP0HH = 20
PP0HHH = 21
PP1 = 22
PP1H = 23
PP2 = 24
PP2H = 25
PP2HH = 26
PP2HHH = 27
PP3 = 28
PP3H = 29
PP4 = 30
PP4H = 31
PP5 = 32
PP5H = 33
PP6 = 34
PP6H = 35
PP7 = 36
PP7H = 37
PP7HH = 38
PP7HHH = 39
PPZ = 40
PPZH = 41
PPZHH = 42
PPZHHH = 43
SP#P9 = 44
_B#VR1 = 45
_B#VR2 = 46
_GLCD_FLAG = 47
_GLCD_XPOS = 48
NOTE_STATUS = 49
INTERRUPT_COUNTER1 = 50
INVADER_SOUND_COUNTER = 51
INVADER_FREQ = 52
INVADER_SOUND_DURATION = 53
INVADER_SOUND_DURATION_COUNTER = 54
MISSILE_SOUND_COUNTER = 55
MISSILE_FREQ = 56
SAUCER_SOUND_COUNTER = 57
SAUCER_FREQ = 58
MISSILE_STATUS = 59
INVADER_LOOP = 60
	org 0
	goto Start@
	org 8
t@eb clrf 19
t@ew clrf 23
t@e movwf 22
	movlw 2
	bra t@st
t@st movwf 11
	movfw 23
	subwf 19,w
	bnz cn@eq
	movfw 22
	subwf 18,w
cn@eq movlw 4
	skpnc
	movlw 1
	skpnz
	movlw 2
	andwf 11,w
	skpz
	movlw 1
	goto i@nt
out@dec
	bcf 0,3
	movfw 9
	skpnz
	bsf 0,3
	movlw 5
	movwf 8
	movlw 39
	movwf 23
	movlw 16
	rcall d@dig
	movlw 3
	movwf 23
	movlw 232
	rcall d@dig
	clrf 23
	movlw 100
	rcall d@dig
	clrf 23
	movlw 10
	rcall d@dig
	movfw 24
	bra send@it
d@dig movwf 22
	movfw 25
	movwf 19
	movfw 24
	movwf 18
	call d@vd
	movfw 18
send@it movwf 18
	dcfsnz 8,f
	bcf 0,3
	movfw 9
	bz $ + 8
	subwf 8,w
	skpnc
	bra ex@send@it
	movfw 18
	skpz
	bcf 0,3
	btfsc 0,3
	bra ex@send@it
	addlw '0'
	goto ch@snd
ex@send@it
	return
out@dec32
	bcf 0,3
	movfw 9
	bnz	o@d32l1
	bsf 0,3
	movlw 10
	movwf 9
o@d32l1
	movff PP7HHH,PP0HHH
	movff PP7HH,PP0HH
	movff 37,19
	movff 36,18
	clrf 8
o@d32l2
	clrf PP2HHH
	clrf PP2HH
	clrf 25
	movlw 10
	movwf 24
	call l@div
	incf 8,f
	movfw 8
	subwf 9,w
	btfss 4056,Z
	bra o@d32l2
	movfw 24
	btfss 4056,Z
	bcf 0,3
	btfss 0,3
	bra o@d32skp
	decfsz 9,w
	bra o@d32l3
o@d32skp
	movfw 24
	addlw 48
	call ch@snd
o@d32l3
	decfsz 9,f
	bra o@d32l1
	goto i@nt
print@mstr clrf TBLPTRU
	clrf EECON1
	bsf EECON1,EEPGD
	clrf CSTR@CT
	movff 8,4086
	movff 9,4087
	tblrd*+
	movfw 4085
	bz $ + 14
	rcall Print
	incf 8,f
	skpnz
	incf 9,f
	incfsz CSTR@CT,f
	bra $ - 24
	return
print movwf 29
	call setup@lcd
glcd@flp movfw _GLCD_XPOS
	call check@page
	movff 24,6
	movff 25,7
	movlw 6
	mulwf 29
	movlw low FONT
	addwf PRODL,w
	movwf 4086
	movlw high FONT
	skpnc
	addlw 1
	addwf PRODH,w
	movwf 4087
	movlw 6
	movwf 34
glcd_l@2
	clrf 4088
	clrf 4006
	bsf	4006,EEPGD
	TBLRD*+
	movfw 4085
	movwf 24
	btfsc _GLCD_FLAG,0
	comf PP2,f
	rcall lcdwrite
	decfsz 34,f
	bra glcd_l@2
	movff 6,24
	movff 7,25
lcd@done
	movfw 29
	goto i@nt
lcdwrite
	movfw 24
lcdwrite@wreg
	bcf PORTC,1
	rcall read@status
	bsf PORTC,1
	bsf PORTE,0
	movwf PORTD
	bcf PORTE,0
	movlw 125
	cpfslt _GLCD_XPOS
	bra $ + 6
	incf _GLCD_XPOS,f
	bra $ + 4
	clrf _GLCD_XPOS
	movfw _GLCD_XPOS
	rcall check@page
	bcf PORTC,1
	movfw _GLCD_XPOS
	rcall read@status
	bsf PORTE,0
	movwf PORTD
	bcf PORTE,0
	return
cir@cle movwf 28
	clrf 25
	movff 28,24
	clrc
	rlf 28,w
	movwf 34
	clrf 35
	rlf 35,f
movfw 34
sublw 3
movwf 22
movlw 0
subfwb 35,w
movwf 23
crc@lp1 movfw 25
	subwf 24,w
	skpc
	goto i@nt
	rcall plot@8
	btfss 23,7
	bra crc@lp2
	movff 25,34
	clrf 35
	clrc
	rlf 34,f
	rlf 35,f
	rlf 34,f
	rlf 35,f
	movfw 34
	addwf 22,f
	movfw 35
	addwfc 23,f
	movlw 6
	addwf 22,f
	movlw 0
	addwfc 23,f
	bra crc@lp3
crc@lp2 movfw 24
	subwf 25,w
	movwf 34
	movlw 0
	clrf 35
	subwfb 35,f
	clrc
	rlf 34,f
	rlf 35,f
	clrc
	rlf 34,f
	rlf 35,f
	movfw 34
	addwf 22,f
	movfw 35
	addwfc 23,f
	movlw 10
	addwf 22,f
	movlw 0
	addwfc 23,f
	decf 24,f
crc@lp3 incf 25,f
	bra crc@lp1
	goto i@nt
plot@8
	movfw 5
	addwf 24,w
	movwf 3
	movfw 4
	addwf 25,w
	rcall plot@it
	movfw 5
	addwf 24,w
	movwf 3
	movfw 25
	subwf 4,w
	rcall plot@it
	movfw 24
	subwf 5,w
	movwf 3
	movfw 4
	addwf 25,w
	rcall plot@it
	movfw 24
	subwf 5,w
	movwf 3
	movfw 25
	subwf 4,w
	rcall plot@it
	movfw 5
	addwf 25,w
	movwf 3
	movfw 4
	addwf 24,w
	rcall plot@it
	movfw 5
	addwf 25,w
	movwf 3
	movfw 24
	subwf 4,w
	call plot@it
	movfw 25
	subwf 5,w
	movwf 3
	movfw 4
	addwf 24,w
	rcall plot@it
	movfw 25
	subwf 5,w
	movwf 3
	movfw 24
	subwf 4,w
	bra plot@it
lcd@plot
	bsf 0,2
	bra $ + 4
lcd@unplot
	bcf 0,2
plot@it btfsc WREG,7
	bra plt@exit
	btfsc GEN,6
	bra plt@exit
	rcall setup@lcd
	rcall getbit@pos
	clrf 31
	incf 3,f
	setc
	rlcf 31,f
	decfsz 3,f
	bra $ - 4
	movfw 31
	btfss 0,2
	bra $ + 6
	iorwf 32,w
	bra $ + 6
	xorlw 255
	andwf 32,w
	bcf PORTC,1
	rcall read@status
	bsf PORTC,1
	rcall tg@l
plt@exit goto i@nt
getbit@pos
	movwf 33
	rcall check@page
	clrc
	rrcf 3,w
	movwf 30
	clrc
	rrcf 30,f
	clrc
	rrcf 30,f
	movlw 7
	andwf 3,f
	movlw B'00111111'
	andwf 30,f
	movlw B'10111000'
	iorwf 30,w
	rcall read@status
	rcall tg@l
	movlw B'00111111'
	andwf 33,f
	movlw B'01000000'
	iorwf 33,w
	rcall read@status
	rcall tg@l
	movfw 33
	bra read@byte
glcd@p
	rcall setup@lcd
	movwf 30
	movfw 10
	rcall check@page
	movlw B'00111111'
	rcall read@status
	rcall tg@l
	movlw B'10111000'
	iorwf 3,w
	rcall read@status
	rcall tg@l
	movlw B'01000000'
	iorwf 10,w
	rcall read@status
	rcall tg@l
	movfw 30
	rcall read@status
	bsf PORTC,1
	rcall tg@l
	incf 10,f
	goto i@nt
readByte@Xpos
	movfw _GLCD_XPOS
read@Byte
	movwf 33
	rcall read@it
	rcall read@it
	bsf PORTC,1
	movfw 32
	return
read@it
	rcall read@status
	bsf PORTC,1
	bsf PORTC,0
	setf PORTD + 18
	bsf PORTE,0
	nop
	movfw PORTD
	movwf 32
	bcf PORTE,0
	clrf PORTD + 18
	bcf PORTC,0
	bcf PORTC,1
	movlw B'01000000'
	iorwf 33,w
	rcall read@status
	bra tg@l
setup@lcd
	btfsc 0,1
	bra skp@gcsin
	movwf 33
	bcf PORTE + 18,0
	bcf PORTC + 18,1
	bcf PORTC + 18,0
	bcf PORTE + 18,1
	bcf PORTE + 18,2
	clrf PORTD + 18
	bsf 0,1
	bcf PORTE,0
	bcf PORTC,0
	bcf PORTC,1
	clrf _GLCD_XPOS
	movlw B'10111000'
	rcall read@status
	rcall tg@l
	movlw B'01000000'
	rcall read@status
	rcall tg@l
	movlw B'11000000'
	rcall read@status
	rcall tg@l
	movlw B'00111111'
	rcall read@status
	rcall tg@l
	movfw 33
skp@gcsin
	bcf PORTC,1
	return
check@page
	btfsc WREG,6
	bra en@right
	bcf PORTE,1
	nop
	bsf PORTE,2
	return
en@right
	bsf PORTE,1
	nop
	bcf PORTE,2
	return
tg@l bsf PORTE,0
	movwf PORTD
	nop
	bcf PORTE,0
	return
read@status
	bsf PORTC,0
	setf PORTD + 18
	clrf 18
r@slp1 bsf PORTE,0
	nop
	bcf PORTE,0
	btfss PORTD,7
	bra $ + 6
	incfsz 18,f
	bra r@slp1
	clrf PORTD + 18
	clrf PORTD
	bcf PORTC,0
	return
glcd_cur
	rcall setup@lcd
	movwf _GLCD_XPOS
	bcf PORTE,1
	bra $ + 2
	bcf PORTE,2
	bsf 0,1
	movlw B'00111111'
	rcall tg@l
	movlw B'10111000'
	iorwf 3,w
	rcall read@status
	rcall tg@l
	movfw _GLCD_XPOS
	mullw 6
	movfw PRODL
	rcall check@page
	movfw PRODL
	andlw 127
	movwf _GLCD_XPOS
	iorlw B'01000000'
	rcall read@status
	rcall tg@l
	goto i@nt
glcd@cls
	bcf 0,1
	call setup@lcd
	bcf PORTE,1
	bcf PORTE,2
	movlw B'00111110'
	rcall tg@l
	clrf 34
gld@l1 bcf PORTC,1
	movfw 34
	iorlw B'10111000'
	rcall read@status
	rcall tg@l
	clrf 35
glcd@l2 bcf PORTC,1
	movfw 35
	iorlw B'01000000'
	rcall read@status
	rcall tg@l
	clrw
	bcf PORTC,1
	rcall read@status
	bsf PORTC,1
	rcall tg@l
	incf 35,f
	btfss 35,6
	bra glcd@l2
	incf 34,f
	btfss 34,3
	bra gld@l1
	bcf PORTC,1
	bcf 0,1
	rcall setup@lcd
	goto i@nt
rsout@
ch@snd
	btfsc 1,7
	goto print
rn@dm movfw PBP#RNDH
	iorwf PBP#RND,w
	skpnz
	incf PBP#RND,f
	rlcf PBP#RNDH,w
	xorwf PBP#RNDH,w
	rlcf WREG
	swapf PBP#RNDH 
	swapf PBP#RND,w
	rlncf WREG
	xorwf PBP#RNDH,w
	swapf PBP#RNDH
	andlw 1
	rlcf PBP#RND,f
	xorwf PBP#RND,f
	rlcf PBP#RNDH,f
	movfw PBP#RND
	goto i@nt
dl@ms clrf 23
dly@w movwf 22
dl@lp movlw 255
	addwf 22,f
	skpc
	addwf 23,f
	skpc
	goto i@nt
	movlw 3
	movwf 19
	movlw 227
	rcall dlus@w
	bra dl@lp
dl@us clrf 19
dlus@w addlw 244
	movwf 18
	comf 19,f
	movlw 254
	skpc
	bra dl@h
dlus@lp addwf 18,f
	skpnc
	bra dlus@lp
dl@h addwf 18,f
	nop
	incfsz 19,f
	bra dlus@lp
	nop
	btfsc 18,0
	bra $ + 2
	btfsc 18,0
	bra $ + 2
	return
 #include "c:\PROTON~1.2\INC\DV32_SRC.INC"
d@vd clrf 25
	clrf 24
d@vd2 movlw 16
	movwf 28
dv@lp rlcf 19,w
	rlcf 24,f
	rlcf 25,f
	movfw 22
	subwf 24,f
	movfw 23
	skpc
	incfsz 23,w
	subwf 25,f
	bc d@k
	movfw 22
	addwf 24,f
	movfw 23
	skpnc
	incfsz 23,w
	addwf 25,f
	clrc
d@k rlcf 18,f
	rlcf 19,f
	decfsz 28,f
	bra dv@lp
	movfw 18
	goto i@nt
n@gt32 comf 18,f
	comf 19,f
	comf PP0HH,f
	comf PP0HHH,f
	incf 18,f
	skpnc
	incf 19,f
	skpnc
	incf PP0HH,f
	skpnc
	incf PP0HHH,f
	return
i@nt movlb 0
i@ntr return
T300 = 3313
T300H = 12
N300 = 19697
N300H = 76
T600 = 1646
T600H = 6
N600 = 18030
N600H = 70
T1200 = 813
T1200H = 3
N1200 = 17197
N1200H = 67
T2400 = 396
T2400H = 1
N2400 = 16780
N2400H = 65
T4800 = 188
N4800 = 16572
N4800H = 64
T9600 = 84
N9600 = 16468
N9600H = 64
OT2400 = 33164
OT2400H = 129
OT1200 = 33581
OT1200H = 131
OT9600 = 32852
OT9600H = 128
OT300 = 36081
OT300H = 140
ON2400 = 49548
ON2400H = 193
ON1200 = 49965
ON1200H = 195
ON9600 = 49236
ON9600H = 192
ON300 = 52465
ON300H = 204
HOME = 1
BELL = 7
BKSP = 8
TAB = 9
CR = 13
Start@ equ $
	clrf 0
	clrf 4011
	clrf _GLCD_FLAG

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -