📄 kzwj230.asm
字号:
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 + -