📄 cd64k.asm
字号:
SETDIRMODE: JB HSBERRENB,STDRMD0F
MOV A,MASTINPUT
XRL A,#10H
JZ STDRMD01 ;模拟
MOV A,MASTDSNAME
XRL A,#14H
JZ STDRMD01 ;PCM
MOV A,MASTDSNAME
XRL A,#24H
JZ STDRMD01 ;AC-3
SJMP STDRMD0F
STDRMD01:
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
MOV A,B
CJNE A,#19H,STDRMD05
MOV A,MASTSETMODE ;3-S
ANL A,#07H
CJNE A,#01H,STDRMD02
SJMP STDRMD03
STDRMD02: MOV R6,#31H ;3-S
MOV R7,#81H
SJMP STDRMD08
STDRMD03: MOV R6,#31H ;BYPASS
MOV R7,#80H
SJMP STDRMD08
STDRMD05: CJNE A,#18H,STDRMD0F
MOV A,MASTSETMODE ;PRO-LOGIC
ANL A,#07H
XRL A,#02H
JZ STDRMD03 ;原是PRO-LOGIC
MOV R6,#31H
MOV R7,#82H
STDRMD08: LCALL HSBMSGRET
JNZ SETDIRMODE
MOV A,R4
XRL A,#31H
JNZ STDRMD0F
SETB DISPMODEOREFT
MOV MASTSETMODE,R5
ANL MASTSETMODE,#07H
LCALL DISPMODE
LCALL DISPEFMODE
STDRMD0F: LJMP WLOOP
;----------------------------------------------------------------
;设置/读取聆听模式
SETMODE: JB HSBERRENB,SINCM04
MOV A,MASTSETMODE
ANL A,#07H
XRL A,#04H
JNZ SETMOD01
MOV A,MASTINPUT
XRL A,#10H
JZ SETMODK0
MOV A,MASTDSNAME
XRL A,#20H
JZ SETMODK1
MOV A,MASTDSNAME
XRL A,#24H
JZ SETMODK1
SJMP SETMODK0
SETMODK1: MOV R6,#31H
MOV R7,#81H
SJMP SETMOD02
SETMODK0: MOV R6,#31H
MOV R7,#80H
SJMP SETMOD02
SETMOD01: MOV R6,#01H
MOV R7,#0C0H
SETMOD02: LCALL HSBMSGRET
JNZ SETMODE
SJMP SINCM02
GETMODE: JB HSBERRENB,SINCM04
MOV R6,#01H
MOV R7,#00H
LCALL HSBMSGRET
JNZ GETMODE
SINCM02: MOV A,R4
XRL A,#7DH
JZ SINCM04
MOV A,R4
XRL A,#31H
JNZ GETMODE
SINCM03: MOV MASTSETMODE,R5
ANL MASTSETMODE,#07H
MOV A,MASTINPUT
XRL A,#10H
JZ SINCM04
MOV A,MASTDSNAME
XRL A,#20H
JZ SINCM05
MOV A,MASTDSNAME
XRL A,#24H
JZ SINCM05
SJMP SINCM04
SINCM05: MOV A,MASTSETMODE
JZ SETMODE
SINCM04: RET
;----------------------------------------------------------------
;显示聆听模式
DISPMODE: MOV DPX0,#82 ;DTS
MOV DPX1,#123
MOV DPY0,#133
MOV DPY1,#152
MOV A,MASTDSNAME
XRL A,#20H
JZ DISPMDT03
DISPMDT02: LCALL ClrRect
SJMP DISPMDT11
DISPMDT03: LCALL FilRect
DISPMDT11: MOV DPX0,#35 ;DolBy Digital
MOV DPX1,#76
MOV DPY0,#133
MOV DPY1,#152
MOV A,MASTDSNAME
XRL A,#24H
JZ DISPMDT13
DISPMDT12: LCALL ClrRect
SJMP DISPMDT21
DISPMDT13: LCALL FilRect
DISPMDT21: MOV DPX0,#2 ;PRO-LOGIC
MOV DPX1,#47
MOV DPY0,#35
MOV DPY1,#47
JNB DISPMODEOREFT,DISPMDT22
MOV A,MASTDSNAME ;DTS
XRL A,#20H
JZ DISPMDT22
MOV A,MASTSETMODE ;AN
XRL A,#02H
JNZ DISPMDT22
SJMP DISPMDT23
DISPMDT22: LCALL ClrRect
SJMP DISPMDT31
DISPMDT23: LCALL FilRect
DISPMDT31: MOV DPX0,#2 ;STEREO
MOV DPX1,#47
MOV DPY0,#54
MOV DPY1,#66
JNB DISPMODEOREFT,DISPMDT32
MOV A,MASTDSNAME ;DTS
XRL A,#20H
JZ DISPMDT32
MOV A,MASTSETMODE
XRL A,#01H
JZ DISPMDT33 ;is 3-s
SJMP DISPMDT32
DISPMDT32: LCALL ClrRect
RET
DISPMDT33: LCALL FilRect
RET
;----------------------------------------------------------------
;聆听模式操作
DOSETMODE:
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
SETB DISPMODEOREFT
MOV A,MASTDSNAME
XRL A,#20H
JZ DSTEFMD11 ;DTS
MOV A,MASTDSNAME
XRL A,#24H
JZ DSTEFMD01 ;DOLBY DIGITAL
SJMP DSTEFMD21 ;PCM/NULL
DSTEFMD01: NOP ;DOLBY DIGITAL
DSTEFMD02: JB HSBERRENB,DSTEFMDFF
LCALL SETMODE
MOV A,MASTSETMODE
JZ DSTEFMD02
XRL A,#04H
JZ DSTEFMD02
LJMP DSTEFMDFF
DSTEFMD11: NOP ;DTS:4
MOV MASTSETMODE,#03H
LCALL SETMODE
LJMP DSTEFMDFF
DSTEFMD21: LCALL SETMODE ;PCM/NULL:0-2
MOV A,MASTSETMODE
CLR C
SUBB A,#03H
JNC DSTEFMD22
LJMP DSTEFMDFF
DSTEFMD22: MOV MASTSETMODE,#04H
JB HSBERRENB,DSTEFMDFF
SJMP DSTEFMD21
DSTEFMDFF: MOV A,MASTINPUT
XRL A,#10H
JNZ DSTEFMDF0
DSTEFMDF0: LCALL DISPMODE
LCALL DISPEFMODE
LJMP WLOOP
;----------------------------------------------------------------
;返回SPERKER STATE
GETSPKSTATE: MOV A,MASTDSFORMAT
ANL A,#0F0H
SWAP A
ADD A,#SPKSTATETABEL-GSPKST001
MOVC A,@A+PC
GSPKST001: RET
SPKSTATETABEL: DB HISRL ;0H
DB HISRL ;1H
DB HISRL ;2H
DB HISRL+HISCT ;3H
DB HISRL+HISRR ;4H
DB HISRL+HISRR+HISCT ;5H
DB HISRL+HISRR ;6H
DB HISRL+HISRR+HISCT ;7H
DB 00H ;8H
DB HISRL+HISSW ;9H
DB HISRL+HISSW ;AH
DB HISRL+HISCT+HISSW ;BH
DB HISRL+HISRR+HISSW ;CH
DB HISRL+HISRR+HISCT+HISSW ;DH
DB HISRL+HISRR+HISSW ;EH
DB HISRL+HISRR+HISCT+HISSW ;FH
;----------------------------------------------------------------
;DISPLAY SPEAKER STATE 显示声道信息
DISPSPKSTATE: MOV DPX0,#58 ;CENTER
MOV DPX1,#100
MOV DPY0,#2
MOV DPY1,#20
LCALL GETSPKSTATE
JNB ACC.0,DSPKST01
LCALL FilRect
SJMP DSPKST02
DSPKST01: LCALL ClrRect
DSPKST02: MOV DPX0,#2 ;REAR
MOV DPX1,#28
MOV DPY0,#130
MOV DPY1,#156
LCALL GETSPKSTATE
JNB ACC.1,DSPKST03
LCALL FilRect
SJMP DSPKST04
DSPKST03: LCALL ClrRect
DSPKST04: MOV DPX0,#130 ;REAR
MOV DPX1,#156
MOV DPY0,#130
MOV DPY1,#156
LCALL GETSPKSTATE
JNB ACC.1,DSPKST05
LCALL FilRect
SJMP DSPKST06
DSPKST05: LCALL ClrRect
DSPKST06: MOV DPX0,#2 ;MAIN
MOV DPX1,#28
MOV DPY0,#2
MOV DPY1,#28
LCALL GETSPKSTATE
JNB ACC.2,DSPKST07
LCALL FilRect
SJMP DSPKST08
DSPKST07: LCALL ClrRect
DSPKST08: MOV DPX0,#130 ;MAIN
MOV DPX1,#156
MOV DPY0,#2
MOV DPY1,#28
LCALL GETSPKSTATE
JNB ACC.2,DSPKST09
LCALL FilRect
SJMP DSPKST0A
DSPKST09: LCALL ClrRect
DSPKST0A: MOV DPX0,#132 ;SW
MOV DPX1,#154
MOV DPY0,#34
MOV DPY1,#62
LCALL GETSPKSTATE
JNB ACC.3,DSPKST0B
LCALL FilRect
SJMP DSPKST0C
DSPKST0B: LCALL ClrRect
DSPKST0C: RET
;-------------------------------------------------------------
;显示频率信息
DISPDFMSG: JNB ENBMUTE,DPDFM001
MOV A,#04H ;显示静音
MOV C,MULTILANGUAGE
ANL C,ISCHINESE
JNC DPDFM007
INC A
INC A
DPDFM007: LCALL DSPFRMP
RET
DPDFM001: MOV A,MASTDSNAME
JNZ DPDFM002
MOV A,#05H ;显示空白
MOV C,MULTILANGUAGE
ANL C,ISCHINESE
JNC DPDFM007
INC A
INC A
LCALL DSPFRMP
RET
DPDFM002: MOV A,MASTDSFORMAT
ANL A,#03H ;显示频率
LCALL DSPFRMP
RET
DPDFM003: NOP
RET
;-------------------------------------------------------------
VDSPFMP01: MOV R6,#64H
MOV R7,#04H
ANL A,#0FH
RL A
MOV R1,A
MOV DPTR,#FRMPICTV
MOVC A,@A+DPTR
XCH A,R1
INC A
MOVC A,@A+DPTR
MOV DPL,A
XCH A,R1
MOV DPH,A
MOV R4,#48
CLR SEDCTLCS
VDSPFMP02: MOV A,#46H
MOV R0,#01H
MOVX @R0,A
MOV A,R6
MOV R0,#00H
MOVX @R0,A
MOV A,R7
MOV R0,#00H
MOVX @R0,A
MOV A,#42H
MOV R0,#01H
MOVX @R0,A
MOV R5,#02H
MOV R0,#00H
VDSPFMP05: MOV A,#00H
MOVC A,@A+DPTR
MOVX @R0,A
INC DPTR
DJNZ R5,VDSPFMP05
MOV A,R6
ADD A,#14H
MOV R6,A
JNC VDSPFMP08
INC R7
VDSPFMP08: DJNZ R4,VDSPFMP02
SETB SEDCTLCS
RET
;显示频率图象
DSPFRMP: JB PLACEDIR,DSPFMP01
LJMP VDSPFMP01
DSPFMP01: MOV R6,#0C7H
MOV R7,#08H
ANL A,#0FH
RL A
MOV R1,A
MOV DPTR,#FRMPICTH
MOVC A,@A+DPTR
XCH A,R1
INC A
MOVC A,@A+DPTR
MOV DPL,A
XCH A,R1
MOV DPH,A
MOV R4,#10H
CLR SEDCTLCS
DSPFMP02: MOV A,#46H
MOV R0,#01H
MOVX @R0,A
MOV A,R6
MOV R0,#00H
MOVX @R0,A
MOV A,R7
MOV R0,#00H
MOVX @R0,A
MOV A,#42H
MOV R0,#01H
MOVX @R0,A
MOV R5,#06H
MOV R0,#00H
DSPFMP05: MOV A,#00H
MOVC A,@A+DPTR
MOVX @R0,A
INC DPTR
DJNZ R5,DSPFMP05
MOV A,R6
ADD A,#14H
MOV R6,A
JNC DSPFMP08
INC R7
DSPFMP08: DJNZ R4,DSPFMP02
SETB SEDCTLCS
RET
FRMPICTH: DW F48KHZH
DW F44KHZH
DW F32KHZH
DW F96KHZH
DW MUTEONH
DW MUTEOFFH
DW MUTECONH ;中文
DW MUTECOFFH ;中文
DW FMCLEAR
FRMPICTV: DW F48KHZV
DW F44KHZV
DW F32KHZV
DW F96KHZV
DW MUTEONV
DW MUTEOFFV
DW MUTECONV ;中文
DW MUTECOFFV ;中文
DW FMCLEAR
;-------------------------------------------------------------
;MUTE FUNCTION
PFMUTE: CPL ENBMUTE
MOV C,ENBMUTE
MOV MUTEPORT,C
LCALL DISPDFMSG
LJMP WLOOP
;-------------------------------------------------------------
SETNIGHT: MOV C,ENBNIGHT
MOV A,#10H
MOV ACC.0,C
MOV R7,A
MOV R6,#7EH
LCALL HSBMSGRET
JB HSBERRENB,SNIGHT02
JNZ SETNIGHT
RET
SNIGHT02: CPL ENBNIGHT
RET
;-------------------------------------------------------------
;NIGHT FUNCTION
PFNIGHT: CPL ENBNIGHT ;1为正常
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
LCALL SETNIGHT
LCALL DISPNIGHT
LJMP WLOOP
DISPNIGHT: MOV DPX0,#61 ;
MOV DPX1,#98 ;
MOV DPY0,#97 ;
MOV DPY1,#108 ;
JNB ENBNIGHT,DSPNGHT01
LCALL ClrRect
RET
DSPNGHT01: LCALL FilRect
RET
;-------------------------------------------------------------
;INPUT
PF031:
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB MUTEPORT
SETB DISPMODEOREFT
LCALL PF030
LCALL PF038 ;保存音源输入状态
LCALL PF03B ;显示音源输入状态
; LCALL GETDSFORMAT ;读取音频格式
MOV MASTSETMODE,#00H
MOV MASTDSNAME,#00H
MOV MASTDSFORMAT,#00H
LCALL DISPMODE
LCALL DISPSPKSTATE
LCALL DISPDFMSG
LCALL DISPEFMODE
LJMP WLOOP
PF0311: SETB MUTEPORT
SETB ENBDELAYMUTE ;延迟静音使能
MOV DELAYMUTECTR,#14H ;延迟静音
SETB DISPMODEOREFT
MOV A,B
CJNE A,#1DH,PF0313
MOV MASTINPUT,#10H ;原为模拟:后为数字1
LCALL PF030
SJMP PF0316
PF0313: CJNE A,#1EH,PF0315
MOV MASTINPUT,#00H ;原为数字1:后为数字2
LCALL PF030
SJMP PF0316
PF0315: CJNE A,#1FH,PF0317
MOV MASTINPUT,#01H ;原为数字2:后为模拟
LCALL PF030
SJMP PF0316
PF0316: LCALL PF038 ;保存音源输入状态
LCALL PF03B ;显示音源输入状态
PF0317: LJMP WLOOP
PF030: JB HSBERRENB,PF035A
MOV A,MASTINPUT
XRL A,#10H
JNZ PF032
MOV R6,#34H ;原为模拟:后为数字1
MOV R7,#80H
SJMP PF035
PF032: MOV A,MASTINPUT
JNZ PF033
MOV R6,#34H ;原为数字1:后为数字2
MOV R7,#81H
SJMP PF035
PF033: MOV R6,#33H ;原为数字2:后为模拟
MOV R7,#80H
SJMP PF035
PF035: LCALL HSBMSGRET
JNZ PF030
RET
PF035A: MOV R4,#00H
RET
PF036: JB HSBERRENB,PF035A
MOV R6,#34H ;34H
MOV R7,#00H ;00H
LCALL HSBMSGRET
JNZ PF036
PF038: MOV A,R4
CJNE A,#33H,PF039
MOV MASTINPUT,#10H ;为模拟
SJMP PF03A
PF039: CJNE A,#34H,PF036
MOV A,R5 ;为数字
ANL A,#07H
MOV MASTINPUT,A
PF03A: RET
PF03B: MOV DPX0,#112
MOV DPX1,#156
MOV DPY0,#73
MOV DPY1,#123
LCALL ClrRect
MOV A,MASTINPUT
XRL A,#10H
JNZ PF03BC
MOV DPY0,#111 ;为模拟
MOV DPY1,#123
SJMP PF03BE
PF03BC: MOV A,MASTINPUT
JNZ PF03BD
MOV DPY0,#73 ;为数字1
MOV DPY1,#85
SJMP PF03BE
PF03BD: MOV DPY0,#92 ;为数字2
MOV DPY1,#104
SJMP PF03BE
PF03BE: MOV DPX0,#112
MOV DPX1,#156
LCALL FilRect
RET
;-------------------------------------------------------------
;POWER DOWN
POWERUPDOWN: MOV A,POWERSTATE
XRL A,#SPOWERUP
JNZ POWERUP
POWERDOWN: MOV A,#SPOWERUP
CPL A
MOV POWERSTATE,A
SETB MUTEPORT
MOV A,#01H
LCALL DISPWIN
LCALL DELAY200MS
LCALL DELAY200MS
LCALL DELAY200MS
SETB POWERUPDISP
CLR SEDCTLCS
NOP
NOP
MOV A,#58H
MOV R0,#01H
MOVX @R0,A
SETB SEDCTLCS
LJMP WLOOP
POWERUP: CLR POWERUPDISP
MOV A,KEYSTATE
MOV C,ACC.6
CPL C
MOV PLACEDIR,C
MOV POWERSTATE,#SPOWERUP
CLR SEDCTLCS
NOP
NOP
MOV A,#59H
MOV R0,#01H
MOVX @R0,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -