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

📄 kzwj230.asm

📁 完成485总线数据的收发。 按键扫描等
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_E:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0700H
WRITE_DRAM_E_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_E_1
THIS_TIME_END_E:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;17--空2
	MOV	A,#00H
READ_XRAM_F:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0331H
READ_XRAM_F_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_F_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_F:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0880H
WRITE_DRAM_F_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_F_1
THIS_TIME_END_F:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;16--近地,全向,信标,临界控制,临界告警————合成
	MOV	A,RT_ADD
	CJNE	A,#04H,$+8	;3
	MOV	A,#00H		;2
	LJMP	READ_XRAM_G	;3
	MOV	A,#0BH
READ_XRAM_g:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0301H
READ_XRAM_g_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_g_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_g:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0800H
WRITE_DRAM_g_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_g_1
THIS_TIME_END_g:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;15--集中告警
	MOV	A,#0BH
READ_XRAM_h:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A
	CLR	A
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#02D1H
READ_XRAM_h_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_h_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_h:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0780H
WRITE_DRAM_h_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_h_1
THIS_TIME_END_h:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;空3
	MOV	A,#00H
READ_XRAM_i:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0361H
READ_XRAM_i_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_i_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_i:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0900H
WRITE_DRAM_i_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_i_1
THIS_TIME_END_i:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;空4
	MOV	A,#00H
READ_XRAM_j:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0361H
READ_XRAM_j_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_j_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_j:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0980H
WRITE_DRAM_j_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_j_1
THIS_TIME_END_j:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;空5
	MOV	A,#00H
READ_XRAM_k:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0361H
READ_XRAM_k_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_k_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_k:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0A00H
WRITE_DRAM_k_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_k_1
THIS_TIME_END_k:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;空6
	MOV	A,#00H
READ_XRAM_l:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0361H
READ_XRAM_l_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_l_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_l:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0A80H
WRITE_DRAM_l_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_l_1
THIS_TIME_END_l:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$

;空7
	MOV	A,#00H
READ_XRAM_m:	;从总线地址内取出43话音字,放在80H~AAH内
	MOV	R0,#cont_vram		;解码置音量字
	MOV	@R0,A	
	CLR	A
	MOV	R7,#cont_smq			;43 TONE_BYTE
	MOV	R0,#80H
	MOV	DPTR,#0361H
READ_XRAM_m_1:
	MOVX	A,@DPTR
	MOV	@R0,A
	NOP
	INC	R0
	INC	DPTR
	DJNZ	R7,READ_XRAM_m_1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
WRITE_DRAM_m:	;把80H~ABH内的话音字及音量字写入声码器
	MOV	R7,#cont_smq+1
	MOV	R0,#80H
	MOV	DPTR,#0B00H
WRITE_DRAM_m_1:
	MOV	A,@R0
	MOV	B,A
	LCALL	WRITE_XRAM
	INC	R0
	INC	DPTR
	INC	DPTR
	DJNZ	R7,WRITE_DRAM_m_1
THIS_TIME_END_m:
	MOV	Temp,#02h		;延时1uS 3
	DJNZ	Temp,$
	MOV	PRT3CF, #00h ; Output configuration for P3 

	LCALL	WRITE_WR1		;OUTPUT MZ SIGNAL
	LCALL	WRITE_LED1
	LCALL	WRITE_LED2
	SETB	ES
	SETB	ET0
	LJMP	LOOP
;*********************************************************************
;CLPD:
;	/CER--P2=02H(A12=A13=0)		 RD1--P2=04H(A12=A13=0)
;	 RD2--P2=06H(A12=A13=0)		/WR1--P2=08H(A12=A13=0)
;	VOL1--P2=0AH(A12=A13=0)		VOL2--P2=0CH(A12=A13=0)
;	VOL3--P2=0EH(A12=A13=0)		LED1--P2=10H(A12=A13=0)
;	LED2--P2=12H(A12=A13=0)		LED3--P2=14H(A12=A13=0)
;	/RD --P2=16H(A12=1,A13=0)	/WR --P2=18H(A12=0,A13=1)
;	声码器读:A12=1,A13=0
;	声码器写:A12=0,A13=1
;	空:A12=A13=1(DEFAULT)
;*********************************************************************
;	SUB_ROUNT		;子程序

;********************************子程序***************************************
;与声码器通信用
Read_xram:	;子程序--将外部ram相应dptr为地址的数读入到A,返回值在A。
	MOV	P3,#0FFh	;2
	MOV	A,DPH		;2
	RRC	A		;1
	MOV	P1.0,C		;2
	RRC	A		;1
	MOV	P1.1,C		;2
	RRC	A		;1
	MOV	P1.2,C		;2
	RRC	A		;1
	MOV	P1.3,C		;2
	MOV	P2,DPL		;3
	SETB	A12
	CLR	A13		;/RD VALID
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	MOV	A,P3		;2
	SETB	A13		;BACK TO DEFAULT————A12=A13=1
	RET

Write_xram:	;子程序--将B的数写入外部ram相应dptr为地址的空间
	
;	ORL	P1,#00110000B	;DEFAULT:A12=A13=1
	MOV	P3,B		;3
	NOP			;1
	NOP			;1
	NOP			;1
	MOV	A,DPH		;2
	RRC	A		;1
	MOV	P1.0,C		;2
	RRC	A		;1
	MOV	P1.1,C		;2
	RRC	A		;1
	MOV	P1.2,C		;2
	RRC	A		;1
	MOV	P1.3,C		;2
	MOV	P2,DPL		;3
	SETB	A13
	CLR	A12		;/WR VALID
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	NOP			;1
	SETB	A12		;BACK TO DEFAULT————A12=A13=1
	RET


LOCK_DPTR:	;RT_ID存放于A内,产生DPRT指向对应外存区域
	CJNE	A,#01H,LOCK_DPTR1	;控制盒1
	MOV	DPTR,#0030H
	RET
LOCK_DPTR1:
	CJNE	A,#02H,LOCK_DPTR2	;控制盒2
	MOV	DPTR,#0060H
	RET
LOCK_DPTR2:
	CJNE	A,#03H,LOCK_DPTR3	;控制盒3
	MOV	DPTR,#0090H
	RET
LOCK_DPTR3:
	CJNE	A,#04H,LOCK_DPTR4	;控制盒4
	MOV	DPTR,#00C0H
	RET
LOCK_DPTR4:
	CJNE	A,#05H,LOCK_DPTR5	;超1
	MOV	DPTR,#00f0H
	RET
LOCK_DPTR5:
	CJNE	A,#06H,LOCK_DPTR6	;超2
	MOV	DPTR,#0120H
	RET
LOCK_DPTR6:
	CJNE	A,#07H,LOCK_DPTR7	;短1
	MOV	DPTR,#0150H
	RET
LOCK_DPTR7:
	CJNE	A,#08H,LOCK_DPTR8	;短2
	MOV	DPTR,#0180H
	RET
LOCK_DPTR8:
	CJNE	A,#09H,LOCK_DPTR9	;罗1
	MOV	DPTR,#01B0H
	RET
LOCK_DPTR9:
	CJNE	A,#0AH,LOCK_DPTRa	;罗2
	MOV	DPTR,#01E0H
	RET
LOCK_DPTRa:
	CJNE	A,#0BH,LOCK_DPTRb	;导航
	MOV	DPTR,#0210H
	RET
LOCK_DPTRb:
;	CJNE	A,#0CH,LOCK_DPTRc	;任务
;	MOV	DPTR,#0240H
;	RET
LOCK_DPTRc:
	CJNE	A,#0DH,LOCK_DPTRD	;DME+塔康
	MOV	DPTR,#0270H
	RET
LOCK_DPTRD:
	CJNE	A,#0EH,LOCK_DPTRE	;临界攻角DH1+DH2
	MOV	DPTR,#02A0H
	RET
LOCK_DPTRE:
	CJNE	A,#0FH,LOCK_DPTRF	;集中告警
	MOV	DPTR,#02D0H
	RET
LOCK_DPTRF:
	CJNE	A,#10H,LOCK_DPTRg	;合成
	MOV	DPTR,#0300H
	RET
LOCK_DPTRg:
	CJNE	A,#11H,LOCK_DPTRH
	MOV	DPTR,#0330H		;空2
	RET
LOCK_DPTRH:
	MOV	DPTR,#0360H		;空3~空7
	RET

READ_KEYH:
	LCALL	READ_RD1
	ANL	A,#0F0H
	JB	ACC.4,KEYH_NEXT1	;KEYH-1
	MOV	A,#01H
	RET
KEYH_NEXT1:
	JB	ACC.5,KEYH_NEXT2	;KEYH-2
	MOV	A,#02H
	RET
KEYH_NEXT2:
	JB	ACC.6,KEYH_NEXT3	;KEYH-3
	MOV	A,#04H
	RET
KEYH_NEXT3:
	JB	ACC.7,KEYH_NEXT4	;KEYH-4
	MOV	A,#08H
	RET
KEYH_NEXT4:
	MOV	A,#00H
	RET

Write_LED1:
	MOV	A,LED1
Write_LED1_1:
	MOV	P3,A
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV	P2,#10H		;SETB	XXX
	ANL	P1,#11001111B	;CLEAR A12,A13
	LCALL	DELAY10us
	ORL	P1,#00110000B	;DEFAULT:A12=A13=1
	MOV	P2,#00H		;CLR	XXX
	LCALL	DELAY10us
	RET

Write_LED2:
	MOV	A,LED2
Write_LED2_1:
	MOV	P3,A
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV	P2,#12H
	ANL	P1,#11001111B	;CLEAR A12,A13
	LCALL	DELAY10us
	ORL	P1,#00110000B	;DEFAULT:A12=A13=1
	MOV	P2,#00H
	LCALL	DELAY10us
	RET

Write_LED3:
	MOV	A,LED3   ;# FEH
	MOV	P3,A
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV	P2,#14H
	ANL	P1,#11001111B	;CLEAR A12,A13
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	ORL	P1,#00110000B	;DEFAULT:A12=A13=1
	MOV	P2,#00H
	RET

READ_VOL1:
	MOV	P3,#0FFH
	MOV	P2,#0AH
	ANL	P1,#11001111B	;CLEAR A12,A13
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV	A,P3
	ORL	P1,#00110000B	;DEFAULT:A12=A13=1
	MOV	B,A
	ANL	A,#0FH
	XRL	A,#0FH
	MOV	VOL_C1,A

	MOV	A,B
	ANL	A,#0F0H
	XRL	A,#0F0H
	SWAP	A
	MOV	VOL_C2,A
	RET

READ_VOL2:
	MOV	P3,#0FFH
	MOV	P2,#0CH
	ANL	P1,#11001111B	;CLEAR A12,A13
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV	A,P3
	ORL	P1,#00110000B	;DEFAULT:A12=A13=1
	MOV	B,A
	ANL	A,#0FH
	XRL	A,#0FH
	MOV	VOL_HF1,A

	MOV	A,B
	ANL	A,#0F0H
	XRL	A,#0F0H
	SWAP	A
	MOV	VOL_HF2,A
	RET

READ_VOL3:
	MOV	P3,#0FFH
	MOV	P2,#0EH
	ANL	P1,#11001111B	;CLEAR A12,A13
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP

⌨️ 快捷键说明

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