📄 cd64k.asm
字号:
;-----------------------------------------------------------------------------------
;HORIZONTAL : X从左向右 Y从下向上 D先横后纵 MSB 输出数据压缩
;VERTICAL : X从左向右 Y从上向下 D先纵后横 MSB 输出数据压缩
;-----------------------------------------------------------------------------------
POWERUPDISP BIT P3.0 ;电源照明显示
MUTEPORT BIT P3.1 ;静噪输出
RMTSNLHI BIT 00H ;遥控信号已高
INKEYENB BIT 06H ;按键待处理
SYSTCRL DATA 30H ;系统定时器
SYSTCRH DATA 31H ;系统定时器
DSPFLCTR DATA 34H ;闪动计时器
DSPFLENB BIT 04H ;闪动标志
RMTSNLWCTR DATA 33H ;信号宽度定时器
RMKEYCTR DATA 35H ;命令定时器
RMKEYENB BIT 02H ;命令标志
RMKEYBUFENB BIT 03H ;缓冲区有效标志
RMKEYBUFPNT DATA 38H ;缓冲区指针
RMKEYBUF DATA 39H ;39H-3CH遥控接收缓冲区
RMKEYWORD DATA 36H ;命令字节
RMKEYINPUT DATA 37H ;已有命令输入标志
RMKEYCNTUE BIT 05H ;为连续键标志
INPUTENB EQU 5AH ;命令有效标志
ISNULL EQU 00H
SEDCTLCS BIT 09H ;SED11305F片选
HSBSDA BIT P1.1 ;
HSBHOLD BIT P1.0 ;
HSBBCK BIT T0 ;
HSBINT BIT INT1 ;
HSBINTESLT BIT P1.7 ;
HSBSEND BIT 10H ;HSB发送中标志
HSBRECEIVE BIT 11H ;HSB接收中标志
HSBREQUEST BIT 12H ;HSB 已申请向主机发送信息
HSBBUFPNT DATA 3EH ;缓冲区指针
HSBBUF DATA 42H ;通信缓冲区42-43
HSBTCNT DATA 41H ;通信计时
HSBCMDENB BIT 13H ;命令标志
HSBCMDBUF DATA 44H ;命令缓冲区44H-45H
HSBKEYENB BIT 16H ;音频数码格式使能
HSBKEYBUF DATA 4DH ;音频数码格式缓冲区4D-4E
RPDIRSNL BIT P1.3 ;数码电位器方向引脚
RPSNL BIT T1 ;数码电位器引脚
RPDIR BIT 07H ;数码电位器旋转方向
RPENB BIT 08H ;数码电位器已旋转标志
HORVKEY BIT P1.6 ;横向或纵向开关
POWERKEY BIT P1.5 ;电源开关按键
MENUKEY BIT P1.4 ;旋钮按键
KEYSTATE DATA 46H ;本机按键状态
KEYSTEMP DATA 47H ;按键内部状态
POWERSTATE DATA 48H ;电源状态
SPOWERUP EQU 5AH ;电源为打开标志
LCDLINE EQU 14H ;定义LCD每行占用字节数(41h,43h,44h)
LCDHEIGH EQU 0A0H ;定义LCD行数 --- 42H
PROGSTATE DATA 49H ;程序状态字节
PROGPRTM DATA 4AH ;程序主参数字
PROGPRTS DATA 4BH ;程序从参数字
MAXPRGSTATE EQU 06H ;程序最大状态
PLACEDIR BIT 14H ;主机放置方向 1:HORIZONTAL
PROGHSBTCR DATA 4CH ;主程序通信计时器
PROGHSBERR BIT 15H ;主程序通信超时
MASTVALUME DATA 4FH ;主音量
MASTINPUT DATA 54H ;输入缓冲区
ENBMUTE BIT 17H ;静噪标志
ENBNIGHT BIT 18H ;压缩标志
MASTDSFORMAT DATA 55H ;音频数码格式
MASTDSNAME DATA 56H ;数码流名称
HSBERRNUMTCR DATA 59H ;出错次数
HSBERRENB BIT 1AH ;出错使能
DISPMODEOREFT BIT 1BH ;DISPLAY MODE OR Effect mode
MASTSETMODE DATA 57H ;已选聆听模式
MASTEFMODE DATA 58H ;Effect mode
SETMODEDIR BIT 19H ;dir of set mode
DPX0 DATA 50H
DPX1 DATA 51H
DPY0 DATA 52H
DPY1 DATA 53H
;;=======================================================================
;此段程序加入主程序
;触摸屏加入以下定义
PRTDCLK BIT P1.2 ;ADS7843 DCLK P16
PRTCS BIT 0D8H ;P4.0 ADS7843 CS P15
PRTDIN BIT 0D9H ;P4.1 ADS7843 DIN P14
PRTIRQ BIT 0DAH ;P4.2 ADS7843 PIRQ P11
PRTDOUT BIT 0DBH ;P4.3 ADS7843 DOUT P12
PRTRDXP EQU 97H ;读取X old is 97h
PENXMAX EQU 0AEH ;old is 0D5H
PENXVH EQU 0EH
PENXVL EQU 1AH
PENXVLP EQU 0E6H
PRTRDYP EQU 0D7H ;读取Y old is 0d7h
PENYMAX EQU 0E9H ;old is 0A0H
PENYVH EQU 0EH ;*28/0395
PENYVL EQU 3DH
PENYVLP EQU 0C3H
PENOLDNUMBER DATA 5AH ;上次触摸键数字
PENOLDPRGSTATE DATA 5BH ;上次触摸键程序状态
PENXBAK DATA 5CH ;X
PENYBAK DATA 5DH ;Y
GETPENENBLED BIT 1CH ;读触摸屏使能
GETPENCPL BIT 1DH ;
;-----------------------------------------------------------------
MULTILANGUAGE BIT 1EH ;多语言系统
ISCHINESE BIT 1FH ;为中文语言标志
LANCHANGE BIT 0DAH ;语言模块切换信号
;-----------------------------------------------------------------
ENBDELAYMUTE BIT 0FH ;延迟静音使能
DELAYMUTECTR DATA 5EH ;延迟静音
;-----------------------------------------------------------------
;定义主机按键
MASTPWRKEY EQU 01H ;主机电源按键
MASTMENUKEY EQU 04H ;主机菜单按键
MASTUPKEY EQU 11H ;主机旋钮增大
MASTDOWNKEY EQU 12H ;主机旋钮减小
MASTDIRKEY EQU 13H ;主机横放
MASTHSBKEY EQU 14H ;GR32B返回音频格式
HISCT EQU 01H ;
HISRR EQU 02H ;
HISRL EQU 04H ;
HISSW EQU 08H ;
;-----------------------------------------------------------------
ORG 0000H
LJMP START
LJMP PINT0 ;遥控接收定时
NOP
NOP
LJMP START
LJMP TIME0 ;旋钮转动处理
NOP
NOP
LJMP START
LJMP PINT1 ;HSB通信口信号处理
NOP
NOP
LJMP START
LJMP TIME1 ;控制输出定时,按键处理
NOP
NOP
LJMP START
RETI
NOP
NOP
NOP
NOP
LJMP START
RETI
;-----------------------------------------------------------
;遥控键值表
;功能:键值
REMOTEKEYTAB: DB 01H, 9CH ;电源
DB 02H, 98H ;音量--
DB 03H, 94H ;音量++
DB 04H, 8CH ;菜单/SPK-CHOOSE
DB 05H, 80H ;菜单--
DB 06H, 84H ;菜单++
DB 07H, 99H ;EQ-CHOOSE
DB 08H, 95H ;EQ--
DB 09H, 91H ;EQ++
DB 0AH, 90H ;Effect效果/KARAOKE
DB 0BH, 88H ;INPUT
DB 0CH, 9DH ;聆听模式切换/MODE
DB 0DH, 8DH ;MUTE
DB 00H, 00H ;结束标志
LJMP START
PRGSTATETABLE: DW STATE00
DW STATE01
DW STATE02
DW STATE03
DW STATE04
DW STATE05
DW STATE06
; DW STATE07
; DW STATE08
; DW STATE09
; DW STATE0A
; DW STATE0B
DW 0000H
;-------------------------------------------------------------
;主窗口
STATE00: DB 01H,00H,01H ;电源
DB 02H,00H,02H ;音量--
DB 03H,00H,03H ;音量++
DB 04H,02H,10H ;菜单
DB 07H,00H,04H ;NIGHT ON&OFF /菜单--
DB 0AH,00H,06H ;Effect效果/KARAOKE
DB 0BH,00H,07H ;INPUT
DB 0CH,00H,08H ;聆听模式切换/MODE
DB 0DH,00H,09H ;MUTE
DB 11H,00H,03H ;主机旋钮增大
DB 12H,00H,02H ;主机旋钮减小
DB 13H,00H,0AH ;主机横/纵放
DB 14H,00H,0BH ;返回音频格式
DB 18H,00H,0CH ;触摸屏-PROLOGIC
DB 19H,00H,0CH ;触摸屏-3STEREO
DB 1AH,00H,0DH ;触摸屏-THEAT
DB 1BH,00H,0DH ;触摸屏-HALL
DB 1CH,00H,0DH ;触摸屏-GAME
DB 1DH,00H,0EH ;触摸屏-DIGITAL 1
DB 1EH,00H,0EH ;触摸屏-DIGITAL 2
DB 1FH,00H,0EH ;触摸屏-ANALOG
DB 00H,00H,00H ;结束
STATE01: DB 01H,00H,01H ;电源
DB 02H,01H,02H ;音量--
DB 03H,01H,03H ;音量++
DB 04H,01H,00H ;菜单
DB 05H,01H,00H ;菜单--
DB 06H,01H,00H ;菜单++
DB 14H,01H,0BH ;返回音频格式
DB 00H,01H,00H ;结束
;-------------------------------------------------------------
;系统设置窗口
STATE02: DB 01H,00H,01H ;电源
DB 14H,02H,0BH ;返回音频格式
; DB 02H,00H,02H ;音量--
; DB 03H,00H,03H ;音量++
DB 11H,02H,11H ;主机旋钮增大
DB 12H,02H,12H ;主机旋钮减小
DB 13H,02H,25H ;主机方向
DB 04H,02H,14H ;菜单
DB 05H,02H,12H ;菜单--
DB 06H,02H,11H ;菜单++
DB 20H,02H,2EH ;触摸屏-Test
DB 21H,02H,2EH ;触摸屏-Speaker
DB 22H,02H,2EH ;触摸屏-Delay time
DB 23H,02H,2EH ;触摸屏-Level trim
DB 24H,02H,2EH ;触摸屏-Return
DB 25H,02H,05H ;系统语言切换
DB 00H,02H,00H ;结束
;-------------------------------------------------------------
;TONE TEST 设置
STATE03: DB 01H,00H,01H ;电源
DB 14H,03H,0BH ;返回音频格式
; DB 02H,00H,02H ;音量--
; DB 03H,00H,03H ;音量++
DB 11H,03H,15H ;主机旋钮增大
DB 12H,03H,16H ;主机旋钮减小
DB 13H,03H,26H ;主机方向
DB 04H,03H,17H ;菜单
DB 05H,03H,16H ;菜单--
DB 06H,03H,15H ;菜单++
DB 30H,03H,2DH ;触摸屏-Auto test
DB 31H,03H,2DH ;触摸屏-manual test
DB 32H,03H,2DH ;触摸屏-Return
DB 00H,03H,00H ;结束
;-------------------------------------------------------------
;SPEAKER 设置
STATE04: DB 01H,00H,01H ;电源
; DB 02H,00H,02H ;音量--
; DB 03H,00H,03H ;音量++
DB 14H,04H,0BH ;返回音频格式
DB 11H,04H,18H ;主机旋钮增大
DB 12H,04H,19H ;主机旋钮减小
DB 13H,04H,27H ;主机方向
DB 04H,04H,1AH ;菜单
DB 05H,04H,19H ;菜单--
DB 06H,04H,18H ;菜单++
DB 40H,04H,2CH ;触摸屏-3/2/1
DB 41H,04H,2CH ;触摸屏-3/0/1
DB 42H,04H,2CH ;触摸屏-2/2/1
DB 43H,04H,2CH ;触摸屏-2/0/1
DB 44H,04H,2CH ;触摸屏-Return
DB 00H,04H,00H ;结束
;-------------------------------------------------------------
;DELAY TIME 设置
STATE05: DB 01H,00H,01H ;电源
; DB 02H,00H,02H ;音量--
; DB 03H,00H,03H ;音量++
DB 14H,05H,0BH ;返回音频格式
DB 11H,05H,1BH ;主机旋钮增大
DB 12H,05H,1CH ;主机旋钮减小
DB 13H,05H,28H ;主机方向
DB 04H,05H,1DH ;菜单
DB 05H,05H,1BH ;菜单--
DB 06H,05H,1CH ;菜单++
DB 50H,05H,2BH ;触摸屏-center
DB 51H,05H,2BH ;触摸屏-rear
DB 52H,05H,2BH ;触摸屏-return
DB 00H,05H,00H ;结束
;-------------------------------------------------------------
;LEVEL TRIM 设置
STATE06: DB 01H,00H,01H ;电源
; DB 02H,00H,02H ;音量--
; DB 03H,00H,03H ;音量++
DB 14H,06H,0BH ;返回音频格式
DB 11H,06H,1EH ;主机旋钮增大
DB 12H,06H,1FH ;主机旋钮减小
DB 13H,06H,29H ;主机方向
DB 04H,06H,20H ;菜单
DB 05H,06H,1EH ;菜单--
DB 06H,06H,1FH ;菜单++
DB 60H,06H,2AH ;触摸屏-center
DB 61H,06H,2AH ;触摸屏-sw
DB 62H,06H,2AH ;触摸屏-rear left
DB 63H,06H,2AH ;触摸屏-rear right
DB 64H,06H,2AH ;触摸屏-return
DB 00H,06H,00H ;结束
;-------------------------------------------------------------
FUNTABLE: LJMP WLEND ;00H 返回
LJMP POWERUPDOWN ;01H 电源开关
LJMP PF021 ;02H volume--
LJMP PF011 ;03H volume++
LJMP PFNIGHT ;04H NIGHT 开关
LJMP PF261 ;05H 系统语言切换
LJMP DOSETEFMODE ;06H
LJMP PF031 ;07H 设置音源
LJMP DOSETMODE ;08H 设置聆听模式
LJMP PFMUTE ;09H
LJMP PF001 ;0AH 0态主机摆放方向改变
LJMP DODISPDSFORMAT ;0BH 返回音频格式
LJMP SETDIRMODE ;0CH
LJMP SETDIREFMODE ;0DH
LJMP PF0311 ;0EH 触摸屏设置音源
LJMP WLEND ;0FH
LJMP PF201 ;10H 显示设置窗口
LJMP PF202 ;11H ++
LJMP PF204 ;12H --
LJMP PF206 ;13H +90
LJMP PF221 ;14H DO SYSTEM SETUP
LJMP PF302 ;15H TONE TEST ++
LJMP PF304 ;16H TONE TEST --
LJMP PF321 ;17H DO TONE TEST
LJMP PF412 ;18H SPERKER ++
LJMP PF414 ;19H SPERKER --
LJMP PF421 ;1AH DO SPERKER SETUP
LJMP PF512 ;1BH DELAY TIME ++
LJMP PF514 ;1CH DELAY TIME --
LJMP PF500 ;1DH DO DELAY TIME
LJMP PF612 ;1EH LEVEL TRIM ++
LJMP PF614 ;1FH LEVEL TRIM --
LJMP PF631 ;20H DO LEVEL TRIM
LJMP WLEND ;21H
LJMP WLEND ;22H
LJMP WLEND ;23H
LJMP WLEND ;24H 1态主机摆放方向改变
LJMP PF206 ;25H 2态主机摆放方向改变
LJMP PF308 ;26H 3态主机摆放方向改变
LJMP PF402 ;27H 4态主机摆放方向改变
LJMP PF501K1 ;28H 5态主机摆放方向改变
LJMP PF602 ;29H 6态主机摆放方向改变
LJMP PF641 ;2AH
LJMP PF541 ;2BH
LJMP PF4A1 ;2CH
LJMP PF341 ;2DH
LJMP PF241 ;2EH
LJMP WLEND ;2FH
;----------------------------------------------------------------
;返回显示音频格式
DODISPDSFORMAT: MOV A,PROGSTATE
JZ DDSPSFMT01
MOV PROGSTATE,#00H
LJMP PF001
DDSPSFMT01: LCALL DISPMODE
LCALL DISPSPKSTATE
LCALL DISPDFMSG
LCALL DISPEFMODE
LJMP WLOOP
;----------------------------------------------------------------
;读取音频格式
GETDSFORMAT: JB HSBERRENB,GDSFMTRK0F
MOV R6,#30H
MOV R7,#00H
LCALL HSBKEYRET
JNZ GETDSFORMAT
MOV MASTDSNAME,R4
MOV MASTDSFORMAT,R5
;返回已读取标志
GDSFMTROK: MOV R6,#00H
MOV R7,#5AH
LCALL HSBSENDMSG
JB HSBERRENB,GDSFMTRK0F
JNZ GDSFMTROK
GDSFMTRK0F: RET
;----------------------------------------------------------------
;显示效果模式
DISPEFMODE: MOV DPX0,#2 ;THEAT
MOV DPX1,#47
MOV DPY0,#73
MOV DPY1,#85
JB DISPMODEOREFT,DISPEFT12
MOV A,MASTDSNAME
XRL A,#14H
JNZ DISPEFT12
MOV A,MASTEFMODE
XRL A,#01H
JZ DISPEFT13
DISPEFT12: LCALL ClrRect
SJMP DISPEFT21
DISPEFT13: LCALL FilRect
DISPEFT21: MOV DPX0,#2 ;HALL
MOV DPX1,#47
MOV DPY0,#92
MOV DPY1,#104
JB DISPMODEOREFT,DISPEFT22
MOV A,MASTDSNAME
XRL A,#14H
JNZ DISPEFT22
MOV A,MASTEFMODE
XRL A,#02H
JZ DISPEFT23
DISPEFT22: LCALL ClrRect
SJMP DISPEFT31
DISPEFT23: LCALL FilRect
DISPEFT31: MOV DPX0,#2 ;GAME
MOV DPX1,#47
MOV DPY0,#111
MOV DPY1,#123
JB DISPMODEOREFT,DISPEFT32
MOV A,MASTDSNAME
XRL A,#14H
JNZ DISPEFT32
MOV A,MASTEFMODE
XRL A,#03H
JZ DISPEFT33
DISPEFT32: LCALL ClrRect
SJMP DISPEFT41
DISPEFT33: LCALL FilRect
DISPEFT41: RET
;----------------------------------------------------------------
;设置/读取效果模式
SETEFMODE: MOV A,MASTDSNAME
XRL A,#14H
JZ SETEFMD01
MOV MASTEFMODE,#00H
SETEFMD00: RET
SETEFMD01: CLR DISPMODEOREFT
JB HSBERRENB,SETEFMD00
MOV A,MASTEFMODE
JNZ SETEFMD08 ;NOT BYBASS
MOV MASTSETMODE,#04H
LCALL SETMODE
SETB DISPMODEOREFT
LJMP GETEFMD04
SETEFMD08: MOV A,MASTEFMODE
ANL A,#03H
ORL A,#80H
MOV R7,A
MOV R6,#3FH
LCALL HSBMSGRET
JNZ SETEFMD01
SJMP GETEFMD03
GETEFMODE: MOV A,MASTDSNAME
XRL A,#14H
JZ GETEFMD01
MOV MASTEFMODE,#00H
RET
GETEFMD01: JB HSBERRENB,GETEFMD04
MOV R6,#0FH
MOV R7,#00H
LCALL HSBMSGRET
JNZ GETEFMD01
GETEFMD03: MOV A,R4
XRL A,#7DH
JZ GETEFMD04
MOV A,R4
XRL A,#3FH
JNZ GETEFMODE
MOV MASTEFMODE,R5
ANL MASTEFMODE,#03H
GETEFMD04: RET
;----------------------------------------------------------------
DISPVOLBAR: MOV DPX0,#55
MOV DPY0,#42
MOV DPX1,#108
MOV DPY1,#53
LCALL ClrRect
MOV A,MASTVALUME ;*5/8
MOV B,#05
MUL AB
RR A
RR A
RR A
ANL A,#1FH
MOV R5,A
MOV A,B
JZ DPVLBR01
MOV A,#20H
ADD A,R5
MOV R5,A
DPVLBR01: MOV A,#55
ADD A,R5
MOV DPX0,A
INC A
INC A
MOV DPX1,A
MOV DPY0,#42
MOV DPY1,#53
LCALL FilRect
RET
;----------------------------------------------------------------
;设置/读取效果模式
DOSETEFMODE: INC MASTEFMODE
ANL MASTEFMODE,#03H
LCALL SETEFMODE
DOPSTMD01: LCALL DISPEFMODE
LCALL DISPMODE
LJMP WLOOP
;----------------------------------------------------------------
;响应触摸屏直接设置效果模式
SETDIREFMODE: JB HSBERRENB,STDRFMD0F
MOV A,MASTINPUT
XRL A,#10H
JZ STDRFMD0F ;模拟
MOV A,MASTDSNAME
XRL A,#14H
JZ STDRFMD01 ;PCM
SJMP STDRFMD0F
STDRFMD01: MOV A,B
CJNE A,#1AH,STDRFMD05
MOV A,MASTEFMODE ;THEAT
XRL A,#01H
JZ STDRFMD03
STDRFMD02: MOV R7,#81H ;THEAT
SJMP STDRFMD08
STDRFMD03: MOV MASTSETMODE,#04H ;BYPASS
LCALL SETMODE
SETB DISPMODEOREFT
LCALL DISPMODE
LCALL DISPEFMODE
LJMP STDRFMD0F
STDRFMD05: CJNE A,#1BH,STDRFMD07
MOV A,MASTEFMODE ;HALL
XRL A,#02H
JZ STDRFMD03 ;原是HALL
MOV R7,#82H
SJMP STDRFMD08
STDRFMD07: CJNE A,#1CH,STDRFMD0F
MOV A,MASTEFMODE ;GAME
XRL A,#03H
JZ STDRFMD03 ;原是GAME
MOV R7,#83H
SJMP STDRFMD08
STDRFMD08: MOV R6,#3FH
LCALL HSBMSGRET
JNZ SETDIREFMODE
MOV A,R4
XRL A,#3FH
JNZ STDRFMD0F
CLR DISPMODEOREFT
MOV MASTEFMODE,R5
ANL MASTEFMODE,#07H
LCALL DISPMODE
LCALL DISPEFMODE
STDRFMD0F: LJMP WLOOP
;----------------------------------------------------------------
;响应触摸屏直接设置聆听模式
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -