📄 cd64k.asm
字号:
LJMP PF50D
;读取 DELAY TIME
PF518: MOV A,PROGPRTM
CLR C
SUBB A,#02H
CLR A
JC PF519
LJMP PF51C
PF519: JB HSBERRENB,PF51C
MOV A,#05H
ADD A,PROGPRTM
MOV R6,A
MOV R7,#00H
LCALL HSBMSGRET
JNZ PF519
PF51A: MOV A,#35H
ADD A,PROGPRTM
XRL A,R4
JNZ PF518
MOV A,R5
CLR C
SUBB A,#50H
JC PF51B
MOV R5,#50H
PF51B: MOV A,R5
PF51C: RET
;-------------------------------------------------------------
;触摸屏
PF541: MOV A,B
ANL A,#0FH
MOV R1,A
SUBB A,#02H
JNC PF542
MOV PROGPRTM,R1
MOV R4,#00H
LJMP PF501K1
PF542: MOV PROGSTATE,#00H
LJMP PF001
;-------------------------------------------------------------
;DELAY TIME
PF500: MOV R4,#00H
MOV A,PROGPRTM
CJNE A,#02H,PF500K1
MOV PROGSTATE,#00H
LJMP PF001
PF500K1: INC PROGPRTM
PF500K2: MOV A,PROGPRTM
CLR C
SUBB A,#03H
JC PF501K1
PF501: MOV R4,#00H
MOV PROGPRTM,#00H
PF501K1: MOV A,#06H
LCALL DISPWIN ;显示一窗口
PF502: LCALL CLRWINBCK
MOV A,PROGPRTM
CJNE A,#00H,PF508
;CENTER
MOV DPX0,#58
MOV DPX1,#100
MOV DPY0,#2
MOV DPY1,#20
LCALL FilRect
MOV R4,#00H
LJMP PF50D
PF508: CJNE A,#01H,PF50C
;REAR
MOV DPX0,#2
MOV DPX1,#28
MOV DPY0,#130
MOV DPY1,#156
LCALL FilRect
MOV DPX0,#130
MOV DPX1,#156
MOV DPY0,#130
MOV DPY1,#156
LCALL FilRect
MOV R4,#00H
LJMP PF50D
PF50D: LCALL PF51A
MOV PROGPRTS,A
LCALL DISPDTL ;显示DELAY TIME
LCALL PF520
LJMP PF50E
PF50C: MOV DPX0,#51 ;RETURN
MOV DPX1,#110
MOV DPY0,#134
MOV DPY1,#153
LCALL FilRect
PF50E: LJMP WLEND
;-------------------------------------------------------------
;显示BAR
PF520: MOV A,PROGPRTM
JNZ PF522
;CENTER
MOV A,PROGPRTS
CLR C
SUBB A,#05H
JC PF521
MOV PROGPRTS,#05H
PF521: MOV A,PROGPRTS
MOV B,#12H
MUL AB
MOV PROGPRTS,A
SJMP PF525
PF522: MOV A,PROGPRTS
CLR C
SUBB A,#0FH
JC PF523
MOV PROGPRTS,#0FH
PF523: MOV A,PROGPRTS
MOV B,#06H
MUL AB
MOV PROGPRTS,A
PF525: MOV A,PROGPRTS
JZ PF52C
CLR C
SUBB A,#90
JNC PF52D
PF526:
MOV DPX0,#35
MOV A,PROGPRTS
ADD A,#35
MOV PROGPRTS,A
MOV DPX1,A
MOV DPY0,#106
MOV DPY1,#125
LCALL FilRect
MOV DPX0,PROGPRTS
MOV DPX1,#125
MOV DPY0,#106
MOV DPY1,#125
LCALL ClrRect
RET
PF52C: ;0
MOV DPX0,#35
MOV DPX1,#125
MOV DPY0,#106
MOV DPY1,#125
LCALL ClrRect
RET
PF52D: ;所有
MOV DPX0,#35
MOV DPX1,#125
MOV DPY0,#106
MOV DPY1,#125
LCALL FilRect
RET
;-------------------------------------------------------------
;读取 LEVEL TRIM
PF618: MOV A,PROGPRTM
CLR C
SUBB A,#04H
CLR A
JC PF619
LJMP PF61C
PF619: JB HSBERRENB,PF61C
MOV A,#18H
ADD A,PROGPRTM
MOV R6,A
MOV R7,#00H
LCALL HSBMSGRET
JNZ PF619
PF61A: MOV A,#48H
ADD A,PROGPRTM
XRL A,R4
JNZ PF618
MOV A,R5
CLR C
SUBB A,#15H
JC PF61B
MOV R5,#14H
PF61B: MOV A,R5
PF61C: RET
;设置 LEVEL TRIM
;++
PF612: MOV A,PROGPRTM
CLR C
SUBB A,#04H
JC PF613
LJMP PF60E
PF613: JB HSBERRENB,PF613K3
MOV A,#18H
ADD A,PROGPRTM
MOV R6,A
MOV R7,#0C0H
LCALL HSBMSGRET
JNZ PF613
PF613K3: LJMP PF603
;--
PF614: MOV A,PROGPRTM
CLR C
SUBB A,#04H
JC PF615
LJMP PF60E
PF615: JB HSBERRENB,PF613K3
MOV A,#18H
ADD A,PROGPRTM
MOV R6,A
MOV R7,#80H
LCALL HSBMSGRET
JNZ PF615
LJMP PF603
;触摸屏
PF641: MOV A,B
ANL A,#0FH
MOV R1,A
SUBB A,#04H
JNC PF642
MOV PROGPRTM,R1
MOV R4,#00H
LJMP PF602
PF642: MOV PROGSTATE,#00H
LJMP PF001
;DO LEVEL TRIM
PF631: MOV R4,#00H
MOV A,PROGPRTM
CLR C
SUBB A,#04H
JC PF635
MOV PROGSTATE,#00H
LJMP PF001
PF635: INC PROGPRTM
LJMP PF602
;LEVEL TRIM
PF601: MOV R4,#00H
MOV PROGPRTM,#00H
PF602: MOV A,#07H
LCALL DISPWIN ;显示一窗口
LCALL CLRWINBCK
MOV A,PROGPRTM
CJNE A,#00H,PF605
;CENTER
MOV DPX0,#58 ;CENTER
MOV DPX1,#100
MOV DPY0,#2
MOV DPY1,#20
LCALL FilRect
LJMP PF60C
PF605: CJNE A,#01H,PF608
;SUPPWOOFER
MOV DPX0,#5 ;SW
MOV DPX1,#27
MOV DPY0,#97
MOV DPY1,#125
LCALL FilRect
LJMP PF60C
PF608: CJNE A,#02H,PF60A
;REAR LEFT
MOV DPX0,#2 ;REAR
MOV DPX1,#28
MOV DPY0,#130
MOV DPY1,#156
LCALL FilRect
LJMP PF60C
PF60A: CJNE A,#03H,PF60B
;REAR RIGHT
MOV DPX0,#130 ;REAR
MOV DPX1,#156
MOV DPY0,#130
MOV DPY1,#156
LCALL FilRect
SJMP PF60C
PF60B: ;RETURN
MOV DPX0,#49
MOV DPX1,#110
MOV DPY0,#134
MOV DPY1,#153
LCALL FilRect
LJMP WLEND
PF60C: MOV R4,#00H
PF603: LCALL PF61A
MOV R1,A
CLR C
MOV A,#14H
SUBB A,R1
MOV PROGPRTS,A
LCALL DISPDTL ;显示LEVEL TRIM
MOV A,PROGPRTS
MOV B,#04H
MUL AB
MOV DPX0,A
MOV A,#129
SUBB A,DPX0
MOV DPX0,A
MOV DPX1,#132
MOV DPY0,#106
MOV DPY1,#125
LCALL ClrRect
MOV A,PROGPRTS
MOV B,#04H
MUL AB
MOV DPX1,A
MOV A,#129
SUBB A,DPX1
MOV DPX1,A
MOV DPX0,#31
MOV DPY0,#106
MOV DPY1,#125
LCALL FilRect
PF60E: LJMP WLEND
;-------------------------------------------------------------
PIV00F: POP ACC
POP PSW
RETI
PINT0: PUSH PSW ;遥控接收处理
PUSH ACC
MOV PSW,#08H ;RS=01
JNB RMTSNLHI,PIV01E
PIV011: MOV A,RMTSNLWCTR
SUBB A,#0FAH
JNC PIV00F
MOV A,RMTSNLWCTR
SUBB A,#0F7H
JNC PIV01E
MOV A,RMTSNLWCTR
SUBB A,#0F3H ;F6-F3
JC PIV013
MOV A,RMTSNLWCTR
CLR C ;BIT 0
SJMP PIV021
PIV013: MOV A,RMTSNLWCTR
SUBB A,#0ECH
JNC PIV01E
MOV A,RMTSNLWCTR
SUBB A,#0E8H ;EB-E8
JC PIV015
MOV A,RMTSNLWCTR
SETB C ;BIT 1
SJMP PIV021
PIV015: MOV A,RMTSNLWCTR
SUBB A,#98H
JNC PIV01E ;>11.4ms
MOV A,RMTSNLWCTR
SUBB A,#88H
JC PIV016 ;<10.9ms
;连续按键前导信号
JNB RMKEYENB,PIV01E
MOV RMKEYINPUT,#INPUTENB
SETB RMKEYCNTUE ;为连续键有效标志
MOV RMKEYCTR,#1BH ;<120 ms
MOV RMTSNLWCTR,#00H
SETB RMTSNLHI
POP ACC
POP PSW
RETI
PIV016: MOV A,RMTSNLWCTR
SUBB A,#7FH
JNC PIV01E ;>13.9ms
MOV A,RMTSNLWCTR
SUBB A,#73H
JC PIV01E ;<13.1ms
;新按键前导信号
SETB RMKEYBUFENB ;有效标志
MOV RMKEYBUFPNT,#00H ;缓冲区指针
MOV RMKEYINPUT,#ISNULL
CLR RMKEYENB ;命令标志
MOV RMTSNLWCTR,#00H
SETB RMTSNLHI
POP ACC
POP PSW
RETI
PIV01E: MOV RMTSNLWCTR,#00H
SETB RMTSNLHI
CLR RMKEYBUFENB ;有效标志
POP ACC
POP PSW
RETI
PIV021: NOP ;新按键数据位
JNB RMKEYBUFENB,PIV01E
MOV A,RMKEYBUF+3
RRC A
MOV RMKEYBUF+3,A
MOV A,RMKEYBUF+2
RRC A
MOV RMKEYBUF+2,A
MOV A,RMKEYBUF+1
RRC A
MOV RMKEYBUF+1,A
MOV A,RMKEYBUF
RRC A
MOV RMKEYBUF,A
INC RMKEYBUFPNT ;缓冲区指针
MOV A,RMKEYBUFPNT
XRL A,#20H
JNZ PIVEFF
;接收命令完成
MOV A,RMKEYBUF
CPL A
XRL A,RMKEYBUF+1
JNZ PIV01E
MOV A,RMKEYBUF
XRL A,#14H
; JNZ PIV01E
MOV A,RMKEYBUF+2
CPL A
XRL A,RMKEYBUF+3
JNZ PIV01E
CLR RMKEYBUFENB
SETB RMKEYENB ;命令标志
MOV RMKEYWORD,RMKEYBUF+2 ;命令字节
MOV RMKEYINPUT,#INPUTENB
CLR RMKEYCNTUE ;开始按键
MOV RMKEYCTR,#0FH ;<120-45 ms
CLR A
MOV RMKEYBUF,A
MOV RMKEYBUF+1,A
MOV RMKEYBUF+2,A
MOV RMKEYBUF+3,A
PIVEFF: MOV RMTSNLWCTR,#00H
SETB RMTSNLHI
POP ACC
POP PSW
RETI
;-------------------------------------------------------------------
TIME0: DJNZ RMTSNLWCTR,PTI001
CLR RMTSNLHI ;信号宽度最大溢出
PTI001: DJNZ SYSTCRL,PTI00E
PUSH PSW
PUSH ACC
MOV SYSTCRL,#32H ;5ms定时
MOV C,HSBSEND
ORL C,HSBRECEIVE
ORL C,HSBREQUEST
JNC PTI011
DJNZ HSBTCNT,PTI011
MOV A,22H
CLR HSBSEND ;HSB命令超时
CLR HSBRECEIVE
CLR HSBREQUEST ;已请求标志
SETB HSBHOLD
SETB HSBSDA
SETB HSBBCK
PTI011: JNB RMKEYENB,PTI012
DJNZ RMKEYCTR,PTI012
CLR RMKEYENB ;命令超时
PTI012: DJNZ SYSTCRH,PTI013
MOV SYSTCRH,#0AH ;50ms定时
SETB INKEYENB ;接收按键
SETB GETPENENBLED ;读触摸屏使能
PTI012K: DJNZ HSBERRNUMTCR,PTI013 ;出错次数
MOV HSBERRNUMTCR,#10H
SETB HSBERRENB ;出错使能
PTI013: DJNZ DSPFLCTR,PTI014 ;其它处理
MOV DSPFLCTR,#64H ;500ms
SETB DSPFLENB ;闪动标志
PTI014: DJNZ PROGHSBTCR,PTI01F
SETB PROGHSBERR
PTI01F: POP ACC
POP PSW
PTI00E: RETI
;------------------------------------------------------------
;发送/接收命令
;参数:命令于R6-R7
;返回:A(如成功 A=0x00) R4R5:回收数据
HSBMSGRET:
; JNB HSBKEYENB,MPM01
; LCALL GDSFMTROK
; CLR HSBKEYENB
; MOV A,#02H
; RET
MPM01: LCALL HSBSENDMSG
JZ HSBMSGR01
HSBMSGR00: RET
HSBMSGR01: MOV PROGHSBTCR,#64H ;=100*5ms
NOP
CLR PROGHSBERR
CLR HSBCMDENB
HSBMSGR03: MOV A,#05H ;回收数据出错
JB PROGHSBERR,HSBMSGR00
NOP
JB HSBCMDENB,HSBMSGR05
NOP
SJMP HSBMSGR03
HSBMSGR05: MOV R4,HSBCMDBUF
MOV R5,HSBCMDBUF+1
CLR HSBCMDENB
CLR A
RET
;------------------------------------------------------------
;发送/接收命令
;参数:命令于R6-R7
;返回:A(如成功 A=0x00) R4R5:回收数据
HSBKEYRET: LCALL HSBSENDMSG
JZ HSBKEYR01
HSBKEYR00: RET
HSBKEYR01: MOV PROGHSBTCR,#64H ;=100*5ms
NOP
CLR PROGHSBERR
CLR HSBKEYENB
HSBKEYR03: MOV A,#05H ;回收数据出错
JB PROGHSBERR,HSBKEYR00
NOP
JB HSBKEYENB,HSBKEYR05
NOP
SJMP HSBKEYR03
HSBKEYR05: MOV R4,HSBKEYBUF
MOV R5,HSBKEYBUF+1
CLR HSBKEYENB
CLR A
RET
;------------------------------------------------------------
TIME1: PUSH ACC
SETB RPSNL
JB RPSNL,PTI1EE
MOV A,#05H
PTI111: NOP
NOP
DEC A
JNZ PTI111
JB RPSNL,PTI1EE
MOV A,#05H
PTI112: NOP
NOP
DEC A
JNZ PTI112
JB RPSNL,PTI1EE
MOV A,#05H
PTI113: NOP
NOP
DEC A
JNZ PTI113
MOV A,#05H
PTI114: NOP
NOP
DEC A
JNZ PTI114
JB RPSNL,PTI1EE
SETB RPDIRSNL ;数码电位器中断
SETB RPENB
JB RPDIRSNL,PTI101
CLR RPDIR ;反方向
POP ACC
RETI
PTI101: SETB RPDIR ;正方向
PTI1EE: POP ACC
RETI
;------------------------------------------------------------
PINT1: JB HSBSEND,PIV1FE ;发送中
PUSH PSW ;HSB处理
PUSH ACC
MOV PSW,#10H ;RS=01
JB HSBRECEIVE,PIV131 ;接收中
JB HSBHOLD,PIV1FF
; JNB HSBCMDENB,PIV111
; SETB HSBREQUEST ;设置已请求标志
; MOV HSBTCNT,#29H
; SJMP PIV1FF
PIV111: MOV HSBBUFPNT,#00H
MOV HSBTCNT,#29H
SETB HSBRECEIVE
CLR HSBBCK
PIV1FF: POP ACC
POP PSW
PIV1FE: RETI
PIV131: MOV A,#0FH
CLR C
SUBB A,HSBBUFPNT
JC PIV133 ;已完成
MOV C,HSBSDA ;接收一位
MOV A,HSBBUF+1
RLC A
MOV HSBBUF+1,A
MOV A,HSBBUF
RLC A
MOV HSBBUF,A
INC HSBBUFPNT
MOV A,HSBBUFPNT
MOV C,ACC.0
MOV HSBBCK,C
SJMP PIV1FF
PIV133: CLR HSBRECEIVE
MOV A,HSBBUF
CLR C
SUBB A,#30H
JNC PIV134
SETB HSBKEYENB
MOV HSBKEYBUF,HSBBUF
MOV HSBKEYBUF+1,HSBBUF+1
SETB HSBBCK
SJMP PIV1FF
PIV134: JB HSBCMDENB,PIV135 ;命令缓冲区已满
MOV HSBCMDBUF,HSBBUF
MOV HSBCMDBUF+1,HSBBUF+1
SETB HSBCMDENB
PIV135: SETB HSBBCK
SJMP PIV1FF
;-------------------------------------------------------------------
;发送命令
;参数:命令于R6-R7
;返回:A(如成功 A=0x00)
HSBSENDMSG: MOV A,#0FH
CLR EX1
JB HSBRECEIVE,HSBSMSGFF
JB HSBREQUEST,HSBSMSGFF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -