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

📄 kzwj230.asm

📁 完成485总线数据的收发。 按键扫描等
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	MOV	A,#03h			
	CJNE	A,RT_ADD,ISNOT_MY_3	;比较是不是本身
	MOV	A,#00H
	LJMP	READ_XRAM_3
ISNOT_MY_3:
	MOV	R0,#0B2H
	MOV	A,@R0
	JNZ	ISNOT_MY_3_1
	MOV	A,#00H
	AJMP	READ_XRAM_3
ISNOT_MY_3_1:
	CJNE	A,#81H,$+6		;判断是否被该乘员呼叫
	LJMP	$+8
	MOV	A,VOL_NT
	LJMP	$+5
	MOV	A,#0BH
READ_XRAM_3:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0091H
READ_XRAM_3_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_3_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_3:				;把80H~ABH内的话音字及音量字写入声码器
	CLR	A
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0180H
WRITE_DRAM_3_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_3_1
THIS_TIME_END_3:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;04--乘员4
	MOV	A,#04h
	CJNE	A,RT_ADD,ISNOT_MY_4	;比较是不是本身
	MOV	A,#00H
	LJMP	READ_XRAM_4
ISNOT_MY_4:
	MOV	R0,#0B3H
	MOV	A,@R0
	JNZ	ISNOT_MY_4_1
	AJMP	READ_XRAM_4
ISNOT_MY_4_1:
	CJNE	A,#81H,$+6		;判断是否被该乘员呼叫
	LJMP	$+8
	MOV	A,VOL_NT
	LJMP	$+5
	MOV	A,#0BH
READ_XRAM_4:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#00C1H
READ_XRAM_4_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_4_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_4:				;把80H~ABH内的话音字及音量字写入声码器
	CLR	A
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0200H
WRITE_DRAM_4_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_4_1
THIS_TIME_END_4:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;05--超短波1
	MOV	R6,RT_ADD
	CJNE	R6,#01,$+11		;3
	JNB	CY12_DT.0,READ_XRAM_5_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_5		;3

	CJNE	R6,#02,$+11		;3
	JNB	CY12_DT.4,READ_XRAM_5_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_5		;3

	CJNE	R6,#03,$+11		;3
	JNB	CY34_DT.0,READ_XRAM_5_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_5		;3

	CJNE	R6,#04,$+11		;3
	JNB	CY34_DT.4,READ_XRAM_5_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_5		;3
READ_XRAM_5_0:
	MOV	A,VOL_C1
READ_XRAM_5:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#00F1H
READ_XRAM_5_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_5_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_5:				;把80H~ABH内的话音字及音量字写入声码器
	CLR	A
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0280H
WRITE_DRAM_5_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_5_1
THIS_TIME_END_5:
	MOV	Temp,#02H		;延时1uS 3
	DJNZ	Temp,$

;06--超短波2
	MOV	R6,RT_ADD
	CJNE	R6,#01,$+11		;3
	JNB	CY12_DT.1,READ_XRAM_6_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_6		;3

	CJNE	R6,#02,$+11		;3
	JNB	CY12_DT.5,READ_XRAM_6_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_6		;3

	CJNE	R6,#03,$+11		;3
	JNB	CY34_DT.1,READ_XRAM_6_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_6		;3

	CJNE	R6,#04,$+11		;3
	JNB	CY34_DT.5,READ_XRAM_6_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_6		;3
READ_XRAM_6_0:
	MOV	A,VOL_C2
READ_XRAM_6:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0121H
READ_XRAM_6_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_6_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_6:				;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0300H
WRITE_DRAM_6_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_6_1
THIS_TIME_END_6:
	MOV	Temp,#02H		;延时1uS 3
	DJNZ	Temp,$

;07--短波1
	MOV	R6,RT_ADD
	CJNE	R6,#01,$+11		;3
	JNB	CY12_DT.2,READ_XRAM_7_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_7		;3

	CJNE	R6,#02,$+11		;3
	JNB	CY12_DT.6,READ_XRAM_7_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_7		;3

	CJNE	R6,#03,$+11		;3
	JNB	CY34_DT.2,READ_XRAM_7_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_7		;3

	CJNE	R6,#04,$+11		;3
	JNB	CY34_DT.6,READ_XRAM_7_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_7		;3
READ_XRAM_7_0:
	MOV	A,VOL_HF1
READ_XRAM_7:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0151H
READ_XRAM_7_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_7_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_7:				;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0380H
WRITE_DRAM_7_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_7_1
THIS_TIME_END_7:
	MOV	Temp,#02H		;延时1uS 3
	DJNZ	Temp,$

;08--短波2
	MOV	R6,RT_ADD
	CJNE	R6,#01,$+11		;3
	JNB	CY12_DT.3,READ_XRAM_8_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_8		;3

	CJNE	R6,#02,$+11		;3
	JNB	CY12_DT.7,READ_XRAM_8_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_8		;3

	CJNE	R6,#03,$+11		;3
	JNB	CY34_DT.3,READ_XRAM_8_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_8		;3

	CJNE	R6,#04,$+11		;3
	JNB	CY34_DT.7,READ_XRAM_8_0	;3
	MOV	A,#00H			;2
	LJMP	READ_XRAM_8		;3
READ_XRAM_8_0:
	MOV	A,VOL_HF2
READ_XRAM_8:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0181H
READ_XRAM_8_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_8_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_8:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0400H
WRITE_DRAM_8_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_8_1
THIS_TIME_END_8:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;09--罗1
	JB	LED2.1,ISNOT_MY_9
	MOV	A,#00H
	AJMP	READ_XRAM_9
ISNOT_MY_9:
	MOV	A,VOL_DH
READ_XRAM_9:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#01B1H
READ_XRAM_9_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_9_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_9:				;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0480H
WRITE_DRAM_9_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_9_1
THIS_TIME_END_9:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;0A--罗2
	JB	LED2.4,ISNOT_MY_A
	MOV	A,#00H
	AJMP	READ_XRAM_A
ISNOT_MY_A:
	MOV	A,VOL_DH
READ_XRAM_A:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#01E1H
READ_XRAM_A_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_A_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_A:				;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0500H
WRITE_DRAM_A_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	NOP
	NOP
	NOP
	NOP
	NOP	
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_A_1
THIS_TIME_END_A:
	MOV	Temp,#02H		;延时1uS 3
	DJNZ	Temp,$

;0B--导航
	JB	LED1.4,ISNOT_MY_B
	MOV	A,#00H
	AJMP	READ_XRAM_B
ISNOT_MY_B:
	MOV	A,VOL_DH
READ_XRAM_B:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0211H
READ_XRAM_B_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_B_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_B:				;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0580H
WRITE_DRAM_B_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_B_1
THIS_TIME_END_B:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;0C--RES1
;有一点注意:若按下任务要建立链接,但ACP在收到建链命令前仍然发00H命令字,所以要等20MS以确定ACP所发命令字的状态
;RES1:
;	MOV	A,#01h
;	CJNE	A,RT_ADD,ISNOT_MY_C1	;比较是不是1号地址
;	JB	KEY_RES_ON,RES1_1
;	JNB	KEY_RES_OFF,RES1_3
;	DJNZ	RES_COUNT3,ISNOT_MY_C1
;	MOV	RES_COUNT3,#01H
;	CLR	KEY_RES_OFF
;RES1_3:
;	MOV	DPTR,#0240H
;	MOVX	A,@DPTR
;	CJNE	A,#0AAH,RES1_2
;	CLR	A
;	MOVX	@DPTR,A
;;	DJNZ	RES_COUNT1,ISNOT_MY_C1	;灯灭时,等20MS,期间不收
;;	MOV	RES_COUNT1,#05H
;;	MOV	DPTR,#0240H		;等待后二次判断PTT信号
;;	MOVX	A,@DPTR
;;	CJNE	A,#0AAH,RES1_2
;	MOV	A,VOL_NT
;	SETB	LED1.1
;	LJMP	READ_XRAM_C1
;RES1_1:
;	LJMP	RES2
;RES1_2:
;;	DJNZ	RES_COUNT2,ISNOT_MY_C1	;灯灭时,等20MS,期间不收
;;	MOV	RES_COUNT2,#05H
;;	MOV	DPTR,#0240H		;等待后二次判断PTT信号
;;	MOVX	A,@DPTR
;;	CJNE	A,#0AAH,ISNOT_MY_C1_0
;;	LJMP	ISNOT_MY_C1
;;ISNOT_MY_C1_0:
;	CLR	LED1.1
;ISNOT_MY_C1:
;	MOV	A,#00H
;READ_XRAM_C1:				;从总线地址内取出43话音字,放在80H~AAH内
;	MOV	R0,#cont_vram		;解码置音量字
;	MOV	@R0,A
;	MOV	R7,#cont_smq		;43 TONE_BYTE
;	MOV	R0,#80H
;	MOV	DPTR,#0241H
;READ_XRAM_C1_1:
;	MOVX	A,@DPTR
;	MOV	@R0,A
;	NOP
;	INC	R0
;	INC	DPTR
;	DJNZ	R7,READ_XRAM_C1_1
;	NOP
;	NOP
;	NOP
;	NOP
;	NOP
;	NOP
;WRITE_DRAM_C1:				;把80H~ABH内的话音字及音量字写入声码器
;	MOV	R7,#cont_smq+1
;	MOV	R0,#80H
;	MOV	DPTR,#0600H
;WRITE_DRAM_C1_1:
;	MOV	A,@R0
;	MOV	B,A
;	LCALL	WRITE_XRAM
;	INC	R0
;	INC	DPTR
;	INC	DPTR
;	DJNZ	R7,WRITE_DRAM_C1_1
;THIS_TIME_END_C1:
;	MOV	Temp,#02h		;延时1uS 3
;	DJNZ	Temp,$
;	LJMP	TAKANG

;;RES2
;RES2:
;	SETB	LED1.1
;	MOV	A,VOL_NT
;READ_XRAM_C2:				;从总线地址内取出43话音字,放在80H~AAH内
;	MOV	R0,#cont_vram		;解码置音量字
;	MOV	@R0,A
;	MOV	R7,#cont_smq		;43 TONE_BYTE
;	MOV	R0,#80H
;	MOV	DPTR,#0241H
;READ_XRAM_C2_1:
;	MOVX	A,@DPTR
;	MOV	@R0,A
;	NOP
;	INC	R0
;	INC	DPTR
;	DJNZ	R7,READ_XRAM_C2_1
;	NOP
;	NOP
;	NOP
;	NOP
;	NOP
;	NOP
;WRITE_DRAM_C2:				;把80H~ABH内的话音字及音量字写入声码器
;	MOV	R7,#cont_smq+1
;	MOV	R0,#80H
;	MOV	DPTR,#0600H
;WRITE_DRAM_C2_1:
;	MOV	A,@R0
;	MOV	B,A
;	LCALL	WRITE_XRAM
;	INC	R0
;	INC	DPTR
;	INC	DPTR
;	DJNZ	R7,WRITE_DRAM_C2_1
;THIS_TIME_END_C2:
;	MOV	Temp,#02h		;延时1uS 3
;	DJNZ	Temp,$
;	LJMP	TAKANG

;0D--DME+塔康
TAKANG:
	JB	LED1.1,ISNOT_MY_D
	MOV	A,#00H
	AJMP	READ_XRAM_D
ISNOT_MY_D:
	MOV	A,RT_ADD
	CJNE	A,#04H,$+8	;3
	MOV	A,#00H	;2
	LJMP	READ_XRAM_D	;3
	MOV	A,VOL_DH
READ_XRAM_D:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0271H
READ_XRAM_D_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_D_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_D:				;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0680H
WRITE_DRAM_D_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_D_1
THIS_TIME_END_D:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;0E--临界攻角DH1+DH2
	MOV	DPTR,#02A0H
	MOVX	A,@DPTR
LING_DH1:	
	JNB	ACC.0,LING_DH2		;DH1
	MOV	A,RT_ADD
	CJNE	A,#01H,$+8	;3
	MOV	A,#0BH		;2
	LJMP	READ_XRAM_E	;3
	MOV	A,RT_ADD
	CJNE	A,#03H,LING_DH3
	MOV	A,#0BH
	LJMP	READ_XRAM_E
LING_DH2:
	JNB	ACC.1,LING_DH3		;DH2
	MOV	A,RT_ADD
	CJNE	A,#02H,$+8
	MOV	A,#0BH
	LJMP	READ_XRAM_E
LING_DH3:
	MOV	A,#00H
READ_XRAM_E:				;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	MOV	R7,#cont_smq		;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#02A1H
READ_XRAM_E_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_E_1
	NOP

⌨️ 快捷键说明

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