遥控6声道AV机PT6311的汇编程序
扫描二维码
随时随地手机看文章
;;;;;;;;;;;;;;;;;;;6CHAMPLIFIER;;;;;;;;;;;;;;;;
;----脚位定义-----
;;;;;;;;;;;;;;;;;;;6CHAMPLIFIER;;;;;;;;;;;;;;;;
;----脚位定义-----
PT6311_CLKEQUP3.4
PT6311_STBEQUP3.5
PT6311_DATAEQUP3.3
UPEQUP3.1
DOENEQUP3.0
PT2313_DATAEQUP0.7
PT2313_CLKEQUP2.7
AC3EQUP2.6;(控制4053的信号)
M62429_DAEQUP2.3;(SURL/R)
M62429_CKEQUP2.4
M62429_CK1EQUP2.5;(C/BW)
M62429_CK3EQUP0.0;(ECHO,MVOL)
M62429_DA3EQUP1.7
M_DELAY1EQUP0.1
M_DELAY2EQUP0.2
AD_OUTBITP0.5
AD_INBITP0.6
;----片内RAM定义--------
GIF_SIGNEQU40H;动画进程标记(=1,走过场字幕)
GIF_TIME1EQU41H;动画跑字的时间间隔速度
GIF_LONGEQU42H;动画字幕的长度
DISP_BUFFEREQU43H;显示缓冲区地址指针
DISP_INDEXEQU44H;PT6311片内地址指针
INPUT_DATAEQU60H;(CD/VCD=1,TUNER=2,AC3=3)
BASS_DATAEQU45H
TR_DATAEQU46H
MAIN_DATAEQU47H
BAL_DATAEQU48H
MVOL_DATAEQU49H
ECHO_DATAEQU4AH
SURL_DATAEQU4BH
SURR_DATAEQU4CH
CEN_DATAEQU4EH
BW_DATAEQU4FH
DELAY_DATAEQU50H
DSP_DATAEQU51H
CH_DATAEQU52H;CH_DATA=#0,5.1CHCH_DATA=#1,3.1CHCH_DATA=#2,2.1CHCH_DATA=#3,2.0CH
KEY_NUMEQU53H;按键编号,INPUT=2,MAIN=3,OK=4,V-=5,V+=1
KEYNUM_SAVEEQU54H;按键过去式记录
SYS_SIGNEQU55H;真值表
KEY_DELAYEQU56H;每执行一次按键处理所间隔的时间
DIV_16EQU57H
DP_NUMEQU58H;自动电平当前进度的格数
DP_MODEEQU59H;电平显示模式,分单针显示,双针显示等多种多样
REM_SIGNEQU5AH;
REM_FIXEQU5BH;
REM_KEYEQU5DH;
REM_KEY1EQU5EH;
REM_TIMEEQU5FH;
AD_SIGNEQU61H;AD进程标记(=0则把电容放电,=1则进行数据检测,=2则表示检测完成,存入数据到AD_DATA)
AD_CLREQU62H;AD放电时间记忆单元
AD_CYCEQU6AH;AD判断周期记忆单元
AD_TEMEQU63H;AD数据临时保存单元
AD_DATA1EQU64H;AD转换最终存放数据
AD_TIMEEQU65H;AD模拟运算速度调节
AD_SIM1EQU66H;AD模拟运算结果保存单元1
AD_SIM2EQU67H;AD模拟运算结果保存单元2
AD_SIM3EQU68H;AD模拟运算结果保存单元3
AD_SIM4EQU69H;AD模拟运算结果保存单元4
AD_TIME2EQU21H;AD自动电平上升时间
AD_DATA2EQU6BH;AD转换最终存放数据2
AD_DATA3EQU6CH;AD转换最终存放数据3
AD_DATA4EQU6DH;AD转换最终存放数据4
AUTO_NUMEQU6EH;AD_DATA1连续为0的数量统计标记
AUTO_TIMEEQU6FH
DP_SAVEEQU70H;显示模式记忆单元
TIME1EQU71H;主循环执行时间
TIME2EQU72H;显示缓冲区数据处理间隔时间
DISP_HEQU73H
DISP_LEQU74H
MTD5EQU75H
MTD4EQU76H
MTD3EQU77H
MTD2EQU78H
MTD1EQU79H
KEY_CELLEQU7AH;(7FH-7AH为6个键值保存单元)
POWEREQU20H.4;开关机标记,POWER=0,开机POWER=1,关机
BOOT_STREQU20H.5;开机初始化标记,首次开机时候置0,读完预置后置1
MUTE_DATAEQU20H.0;MUTE=1,开MUTE=0,关
LOUND_DATAEQU20H.1;LOUND_DATA=1,开等响,LOUND=0,关等响
STA_DATAEQU20H.2;STA_DATA=0,表示第一次开机STA_DATA=1,表示开机初始化结束
AUTO_SIGNEQU20H.3;AUTO=0,频谱自走AUTO=1,显示AD转换结果
;;;;;;;资源占用情况;;;;;;;;
;R7:DISP子程序占用,可通用
;R4,R5复位占用,独立
;R0,R1,R2I2C协议占用,可通用
;R3NC
;R6通用
;-------------------
ORG00H
JMPMAIN
ORG0003H;EX0中断程序入口,遥控占用
JMPINT
ORG000BH;T0溢出中断入口,遥控接收码时间脉宽测量
JMPTIME
ORG001BH;T1中断入口
JMPAD_GO
;显示中断入口
MAIN:SETBP2.0
JNBP2.0,$
MOVR0,#95;把所有单元数据清0
MOVR1,#20H
FRIST1:MOV@R1,#0
INCR1
DJNZR0,FRIST1
MOVP3,#0FFH
CALLDESTINE;调用预设,并把显示缓冲区清0,把动画进程置1
MOVTL1,#06H;T1中断时间:250ns
MOVTH1,#06H
MOVSP,#10H;10H-24H共20个单元作为堆栈
MOVIE,#138;开中断总开关、允许EX0、T0,T1中断
MOVTMOD,#33;设T0为16位定时器,软启动,T1为自动重装8位计数器
MOVIP,#195;设定T0,EX0为高级中断,T1为低级中断(设定后遥控不受T1工作干扰)
CALLSTART_VFD;设置PT6311显示段数(13位15段)
CALLBRIGHT;设置PT6311亮度子程序14/16
SETBIT0;外部中断0为边沿触发方式
SETBTR1;T1是显示中断入口
;------------------------------主循环-------------------------------------------
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
RUN_STA:JNBP2.0,$
MOVA,TIME1
CJNEA,#1,RUN2
JMPGIF_1;
DISP_B:INCTIME1
JMPRUN_END
;xxxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXX
RUN2:MOVA,TIME1
CJNEA,#3,RUN3
JBSTA_DATA,RUN2_01;
MOVA,GIF_SIGN
CJNEA,#1,RUN2_3;
JMPRUN2_4
RUN2_3:CALLSTA;调用开机自走子程序
RUN2_4:JMPRUN2_1
RUN2_01:JMPKEY_GO;
RUN2_02:JMPKEY_REST;
RUN2_1:INCTIME1
JMPRUN_END
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RUN3:MOVA,TIME1
CJNEA,#5,RUN4
JMPAUTO;调用无信号自动频谱设定子程序(改变AUTO_SIGN值)
RUN3_1:JMPAD_INTO;调用AD模拟值运算
RUN3_2:INCTIME1
JMPRUN_END
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RUN4:MOVA,TIME1
CJNEA,#7,RUN5
CLRTR1
JMPWR_VFD;写入PT6311数据
RUN4_1:SETBTR1
INCTIME1
JMPRUN_END
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RUN5:MOVA,TIME1
CJNEA,#21,RUN_END
JMPRD_KEY;读如按键值并把他分析结果存放到KEY_NUM中
RUN5_1:MOVTIME1,#0
;xxxxxxxxxxxxxx
RUN_END:JMPRUN_STA
;;;;;;;;;;;;;;;;;;;开机自走程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STA:INCDELAY_DATA;借用DELAY_DATA
MOVA,DELAY_DATA
CJNEA,#45,SAT_RET
MOVDELAY_DATA,#0
CALLRM1;每调用一次音量+1
CALLDATA_IN;初始化结束,调用一次芯片输入程序
MOVA,MAIN_DATA
CJNEA,#20,SAT_RET
MOVSYS_SIGN,#17;自跑字幕结束后显示INPUT选项
SETBEX0;音量提升完后才开启EX0遥控接口
SETBSTA_DATA;开始程序结束,STA_DATA置1
SETBAUTO_SIGN
SAT_RET:RET
;;;;;;;;;;;;;;;;;;无信号自动频谱设定子程序;;;;;;;;;;;;;;;;;;;;;;;;;;
AUTO:JNBSTA_DATA,AUTO_RET;开机状态下无需改变AUTO_SIGN值,直接退出
MOVA,AD_DATA1
JZAUTO1;检测到没信号转无信号处理
SETBAUTO_SIGN;只要一检测到AD_CYCA有信号,马上把AUTO_SIGN=1,使自走程序停止
MOVAUTO_NUM,#0;AD转换值连续=0的计数器
MOVDP_MODE,DP_SAVE;恢复自走前设定的频谱模式
MOVAD_TIME2,#0
MOVAUTO_NUM,#0
JMPAUTO_RET;检测到有信号则跳过自动频谱处理
;---------------------------------
AUTO1:JNBAUTO_SIGN,AUTO2;产生自跑信号自跑程序(令AUTO_SIGN=0)
INCAD_TIME2
MOVA,AD_TIME2
CJNEA,#20,AUTO_RET
MOVAD_TIME2,#0
INCAUTO_NUM;AUTO_NUM产生自动电平的时间值
MOVA,AUTO_NUM
CJNEA,#100,AUTO_RET
MOVAUTO_NUM,#0
CLRAUTO_SIGN;检测到200次AD_DATA为0,即100次无信号,SIGN置0
MOVDP_MODE,#0
MOVDP_NUM,#0
JMPAUTO_RET
;-----------------------------------;自动频谱处理
AUTO2:INCAD_TIME2;AD自动电平上升进程
MOVA,AD_TIME2
CJNEA,#80,AUTO_RET
MOVAD_TIME2,#0
INCDP_NUM
MOVA,DP_NUM
CJNEA,#13,AUTO_RET;自动电平上升极限是不是14格(0也算1格)
MOVDP_NUM,#0
BB0:MOVA,DP_MODE;每隔14个步长自动转换一次频谱
CJNEA,#0,BB1
MOVDP_MODE,#1
JMPAUTO_RET
BB1:CJNEA,#1,BB2
MOVDP_MODE,#2
JMPAUTO_RET
BB2:CJNEA,#2,BB3
MOVDP_MODE,#3
JMPAUTO_RET
BB3:MOVDP_MODE,#0
AUTO_RET:JMPRUN3_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AD模拟值运算;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AD_INTO:INCAD_TIME
MOVA,AD_TIME
CJNEA,#10,IN02;------------------------------------------模拟比较1
MOVA,AD_SIM1
CJNEA,AD_DATA1,INTO_01
JMPIN02;如果前后电平没变化,则AD_SIM1保持不变
INTO_01:SUBBA,AD_DATA1
JNCAD_SUB;AD_SIM1大于当前AD_DATA值,转AD_SUB减处理
AD_UP:MOVA,AD_SIM1;AD_SIM1小于当前AD_DATA值,转AD_CYC减处理
INCA
MOVAD_SIM1,A
JMPIN02
AD_SUB:MOVA,AD_SIM1
DECA
MOVAD_SIM1,A
JMPINTO_RET
IN02:MOVA,AD_TIME;------------------------------------------模拟比较2
CJNEA,#20,IN03
MOVA,AD_SIM2
CJNEA,AD_DATA1,INTO_02
JMPIN03;如果前后电平没变化,则AD_SIM2保持不变
INTO_02:SUBBA,AD_DATA1
JNCAD_SUB2;AD_SIM2大于当前AD_DATA2值,转AD_SUB减处理
AD_UP2:MOVA,AD_SIM2;AD_SIM2小于当前AD_DATA2值,转AD_CYC减处理
INCA
MOVAD_SIM2,A
JMPIN03
AD_SUB2:MOVA,AD_SIM2
DECA
MOVAD_SIM2,A
JMPINTO_RET
IN03:MOVA,AD_TIME;;------------------------------------------模拟比较3
CJNEA,#30,IN04
MOVA,AD_SIM3
CJNEA,AD_DATA1,INTO_03
JMPIN04;如果前后电平没变化,则AD_SIM2保持不变
INTO_03:SUBBA,AD_DATA1
JNCAD_SUB3;AD_SIM2大于当前AD_DATA2值,转AD_SUB减处理
AD_UP3:MOVA,AD_SIM3;AD_SIM2小于当前AD_DATA2值,转AD_CYC减处理
INCA
MOVAD_SIM3,A
JMPIN04
AD_SUB3:MOVA,AD_SIM3
DECA
MOVAD_SIM3,A
JMPINTO_RET
IN04:MOVA,AD_TIME;------------------------------------------模拟比较4
CJNEA,#40,INTO_RET
MOVAD_TIME,#0
MOVA,AD_SIM4
CJNEA,AD_DATA1,INTO_04
JMPINTO_RET;如果前后电平没变化,则AD_SIM2保持不变
INTO_04:SUBBA,AD_DATA1
JNCAD_SUB4;AD_SIM2大于当前AD_DATA2值,转AD_SUB减处理
AD_UP4:MOVA,AD_SIM4;AD_SIM2小于当前AD_DATA2值,转AD_CYC减处理
INCA
MOVAD_SIM4,A
JMPINTO_RET
AD_SUB4:MOVA,AD_SIM4
DECA
MOVAD_SIM4,A
INTO_RET:JMPRUN3_2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示数据的处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
GIF_1:JNBPOWER,GIF_V1
JMPGIF_V2
GIF_V1:CALLCLR_ALL;查看是否有关机标记,有则把显示缓冲区清0
JMPRET1
GIF_V2:MOV3AH,#0CH;G13的数据数据输入(点亮装析图标)
MOV3BH,#111111B
JNBSTA_DATA,GIF_V9;开机初始化时候不显示频谱
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;频谱输入;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVR0,#22H;显示频谱时先把旧显示数据清空
MOVR1,#8
GIF_V3:MOV@R0,#0
INCR0
DJNZR1,GIF_V3
V3_0:MOVA,DP_MODE;频谱模式的转换
CJNEA,#0,V3_1
MOVDPTR,#TAB26
V3_1:CJNEA,#1,V3_2
MOVDPTR,#TAB27
V3_2:CJNEA,#2,V3_3
MOVDPTR,#TAB28
V3_3:CJNEA,#3,V3_4
MOVDPTR,#TAB29
V3_4:CJNEA,#4,V3_5
MOVDPTR,#TAB30
V3_5:CJNEA,#5,V3_8
MOVDPTR,#TAB31
V3_8:JBAUTO_SIGN,V3_12;是信号频谱则转相关处理
MOVR0,#29H;是自动频谱转相关处理
MOVR1,#4
V3_11:MOVA,DP_NUM
RLA
MOVCA,@A+DPTR
MOV@R0,A
DECR0
MOVA,DP_NUM
RLA
INCA
MOVCA,@A+DPTR
MOV@R0,A
DECR0
DJNZR1,V3_11
JMPGIF_1D
V3_12:MOVR0,#29H;-------------;G1-G4数据输入(显示频谱)
MOVR1,#AD_SIM1
MOVR2,#4;-----------一个循环输入2个字节,4次刚好把8个缓冲区数据处理完毕
GIF_V4:MOVA,@R1
RLA
MOVCA,@A+DPTR
MOV@R0,A
DECR0
MOVA,@R1
RLA
INCA
MOVCA,@A+DPTR
MOV@R0,A
DECR0
INCR1
DJNZR2,GIF_V4
GIF_1D:MOVA,23H;加上装饰条
ADDA,#40H
MOV23H,A
MOVA,29H;加上装饰条
ADDA,#40H
MOV29H,A
JMPGIF_1C
;-------------------------------------------------------------
GIF_V9:MOV22H,#0;开机音量自跑过程中不显示频谱,把G1-G4数据清空(!!!!!!!!!)
MOV23H,#60H;留下装惜条和显示最低位频谱(20H+40H)
MOV24H,#0
MOV25H,#20H;显示最低位频谱
MOV26H,#0
MOV27H,#20H;显示最低位频谱
MOV28H,#0
MOV29H,#60H;留下装惜条和显示最低位频谱(20H+40H)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;跑过场字幕;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GIF_1C:MOVA,GIF_SIGN
CJNEA,#1,GIF_2
INCGIF_TIME1
MOVA,GIF_TIME1
CJNEA,#70,GIF_A1;跑字速度
MOVGIF_TIME1,#0
MOVDPTR,#TAB2
CALLGIF_LEFT;调用左移一位子程序
INCGIF_LONG;动画字幕长度
MOVA,GIF_LONG
CJNEA,#23,C5_1;跑23步后结束
MOVGIF_LONG,#0
MOVGIF_SIGN,#2;开机序幕结束,SIGN=2
GIF_A1:JMPRET1
;;-----------------------------------------------------------------------------------------------
;;-----------------------------------------------------------------------------------------------
GIF_2:MOVA,GIF_SIGN;;;;;;;;;--------------------------显示带功能的数值,如VOL,BASS,ECHO等
CJNEA,#2,GIF_X1
MOVR0,#2CH;G6-G12字母区数据前先把该处理区的数据清空免得重叠
MOVR1,#14
GIF_2X:MOV@R0,#0
INCR0
DJNZR1,GIF_2X
GIF_2A:INCGIF_TIME1;GIF_SIGN=2的持续时间
MOVA,GIF_TIME1
CJNEA,#150,GIF_0B
MOVGIF_TIME1,#0
INCGIF_LONG
MOVA,GIF_LONG
CJNEA,#30,GIF_0B
MOVGIF_LONG,#0
MOVGIF_SIGN,#3
JMPRET1
GIF_0B:MOVR7,SYS_SIGN;处理G9-G13的显示缓冲区数据
CJNER7,#0,GIF_C
MOVDPTR,#TAB4;----------主音量显示(NO1)
CALLGIF_DIG4;----------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,MAIN_DATA;----------主音量分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_X1:LJMPGIF_3
GIF_C:;-----------------------------输入INPUT显示(NO2)
CJNER7,#17,GIF_D
MOVR6,INPUT_DATA
CJNER6,#1,GIF_C2
MOVDPTR,#TAB18;显示CD/VCD
CLRAC3;4053的控制信号
JMPGIF_C5
GIF_C2:CJNER6,#2,GIF_C3
MOVDPTR,#TAB19;显示TUNER
CLRAC3
JMPGIF_C5
GIF_C3:MOVDPTR,#TAB20;显示AC-3
SETBAC3
GIF_C5:CALLGIF_DIG7;-----------调用7位显示数据(G6-G12)
C5_1:JMPRET1
GIF_D:CJNER7,#1,GIF_E;-----------输入BASS显示(NO3)
MOVDPTR,#TAB5
CALLGIF_DIG4
MOVDPTR,#TAB21
MOVA,BASS_DATA
CALLGIF_DG3B
JMPRET1
GIF_E:CJNER7,#2,GIF_F;-----------输入TREBLE显示(NO4)
MOVDPTR,#TAB6
CALLGIF_DIG4
MOVDPTR,#TAB21
MOVA,TR_DATA
CALLGIF_DG3B
JMPRET1
GIF_F:CJNER7,#3,GIF_G
MOVDPTR,#TAB13;----------MVOL显示(NO5)
CALLGIF_DIG4;----------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,MVOL_DATA;----------MVOL音量分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_G:CJNER7,#4,GIF_H
MOVDPTR,#TAB12;----------MECHO显示(NO6)
CALLGIF_DIG4;----------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,ECHO_DATA;----------ECHO分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_H:CJNER7,#5,GIF_I
MOVDPTR,#TAB14;----------DELAY显示(NO7)
CALLGIF_DIG4;----------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,DELAY_DATA;----------DELAY分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_I:CJNER7,#6,GIF_J
MOVDPTR,#TAB8;----------SL显示(NO8)
CALLGIF_DIG4;---------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,SURL_DATA;----------SL音量分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_J:CJNER7,#7,GIF_K
MOVDPTR,#TAB9;----------SR显示(NO9)
CALLGIF_DIG4;---------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,SURR_DATA;----------SUR音量分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_K:CJNER7,#8,GIF_L
MOVDPTR,#TAB11;---------CEN显示(NO10)
CALLGIF_DIG4;---------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,CEN_DATA;----------CEN音量分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_L:CJNER7,#9,GIF_M
MOVDPTR,#TAB10;----------BW显示(NO11)
CALLGIF_DIG4;---------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,BW_DATA;----------BW音量分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_M:CJNER7,#11,GIF_N
MOVDPTR,#TAB15;----------DISP显示(NO12)
CALLGIF_DIG4;---------调用高4位显示(G12-G9的显示)
MOVDPTR,#TAB3
MOVA,DSP_DATA;----------DSP分解
CALLGIF_DG3A;----------调用低3位显示数据(G8-G6的显示)
JMPRET1
GIF_N:CJNER7,#15,GIF_O;(NO13)
MOVDPTR,#TAB22
JNBMUTE_DATA,GIF_N1;不是静音状态不显示静音,显示主音量值
CALLGIF_DIG7
JMPRET1
GIF_N1:MOVSYS_SIGN,#0
JMPRET1
GIF_O:CJNER7,#13,GIF_P;显示5.1ch(NO12)
MOVDPTR,#TAB16
CALLGIF_DIG7
JMPRET1
GIF_P:CJNER7,#12,GIF_Q;显示2.1CH(NO13)
MOVDPTR,#TAB17
CALLGIF_DIG7
JMPRET1
GIF_Q:CJNER7,#14,GIF_R;(NO14)
JBLOUND_DATA,GIF_Q1
MOVDPTR,#TAB24
JMPGIF_Q2
GIF_Q1:MOVDPTR,#TAB23
GIF_Q2:CALLGIF_DIG7
JMPRET1
GIF_R:CJNER7,#20,GIF_S
MOVDPTR,#TAB40
CALLGIF_DIG7
GIF_S:NOP
RET5:JMPRET1
;;--------------------------------------------------------------------------
;;--------------------------------------------------------------------------
GIF_3:CALLCLR_ALL
MOVGIF_SIGN,#1
JMPRET1
RET1:JMPDISP_B
;++++++++++++++++++++++++显示缓冲区清空子程序++++++++++++++++++++++++++++
CLR_ALL:MOVR2,#26;把显示缓冲区共28个单元数值清0
MOVR1,#22H
DES2:MOV@R1,#0
INCR1
DJNZR2,DES2
RET
;+++++++++++++++++++++++++G12-G67位字母左移子程序;++++++++++++++++++++++
GIF_LEFT:MOV39H,37H;-------------------;G11转G12;左移一位子程序
MOV38H,36H;
MOV37H,35H;-------------------;G10转G11
MOV36H,34H
MOV35H,33H;-------------------;G9转G10
MOV34H,32H
MOV33H,31H;-------------------;G8转G9
MOV32H,30H
MOV31H,2FH;-------------------;G7转G8
MOV30H,2EH
MOV2FH,2DH;-------------------;G6转G7
MOV2EH,2CH
MOVA,GIF_LONG;;更新最低位数值
RLA
MOVCA,@A+DPTR
MOV2CH,A
MOVA,GIF_LONG
RLA
INCA
MOVCA,@A+DPTR
MOV2DH,A
RET
;+++++++++++++++++++++++++G12-G9高4位字母存入子程序;++++++++++++++++++++++
GIF_DIG4:MOVR1,#8
MOVR2,#0
MOVR0,#39H
DIG4_1:MOVA,R2
MOVCA,@A+DPTR
MOV@R0,A
DECR0
INCR2
DJNZR1,DIG4_1
RET
;++++++++++++++++++++++++G6-G8低3位数值输入程序A;++++++++++++++++++++++++++++++++
GIF_DG3A:MOVDIV_16,A
CALLDIV10
MOVA,DISP_H;输入个位显示数值到显示缓冲区(G8)
RLA
MOVCA,@A+DPTR
MOV2FH,A
MOVA,DISP_H
RLA
INCA
MOVCA,@A+DPTR
MOV2EH,A
MOVA,DISP_L;输入个位显示数值到显示缓冲区(G8)
RLA
MOVCA,@A+DPTR
MOV2DH,A
MOVA,DISP_L
RLA
INCA
MOVCA,@A+DPTR
MOV2CH,A
RET
;++++++++++++++++++++++++G6-G8低3位数值输入程序A;++++++++++++++++++++++++++++++++
GIF_DG3B:
MOVB,#6
MULAB
MOVR1,A
MOVR0,#31H
MOVR2,#6
DG3B_1:MOVA,R1
MOVCA,@A+DPTR
MOV@R0,A
DECR0
INCDPTR
DJNZR2,DG3B_1
RET
;+++++++++++++++++++++++++G12-G97位字母存入子程序;++++++++++++++++++++++
GIF_DIG7:MOVR1,#14;处理14个显示缓冲区,即G6-G12的显示区间
MOVR2,#0;DPTR指针
MOVR0,#39H
DIG7_1:MOVA,R2
MOVCA,@A+DPTR
MOV@R0,A
DECR0
INCR2
DJNZR1,DIG7_1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AD模拟值运算;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AD_GO:INCTIME1
PUSHACC
PUSHPSW
AD:MOVR3,AD_SIGN
CJNER3,#0,AD_1
SETBAD_OUT
INCAD_CLR
MOVR3,AD_CLR
MOVAD_TEM,#0
CJNER3,#50,AD_RET;;放电250ms(调节该参数的另一功能是可以使显示刷新时间改变)
MOVAD_CLR,#0
MOVAD_CYC,#0
MOVAD_SIGN,#1;放电完毕,AD_SIGN置1
JMPAD_RET
AD_1:MOVR3,AD_SIGN
CJNER3,#1,AD_RET
CLRAD_OUT
INCAD_CYC;AD检测周期+1
JNBAD_IN,AD_1_1;检测到为低电平,AD数据不+1
INCAD_TEM;检测到为高电平,AD数据不+1
AD_1_1:MOVR3,AD_CYC
CJNER3,#13,AD_RET;检测周期为13次
MOVAD_CYC,#0
MOVAD_DATA1,AD_TEM
MOVAD_SIGN,#0;AD数据检测结束,AD_SIGN置0
AD_RET:POPPSW
POPACC
RETI
NOP
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PT16311读写程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WR_VFD:
CLRPT6311_STB;写入一组8位数据
MOVA,#70H;设置为正常工作,地址增量,写显示数据模式
CALLOUTDATA
SETBPT6311_STB
NOP
NOP
CLRPT6311_STB
MOVA,DISP_INDEX;设置写入地址指针
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
ADDA,#0C0H;修正
CLRC
CALLOUTDATA;
MOVR1,DISP_BUFFER;把显示缓冲区数据写入PT16311
WR_VFD1:MOVA,@R1
CALLOUTDATA
INCDISP_BUFFER
INCDISP_INDEX
MOVA,DISP_INDEX
CJNEA,#26,WR_QUT;;扫描完13列后PT6311片内地址指针复0(每列需要2个数据缓冲区数据)
MOVDISP_BUFFER,#22H;显示缓冲区首址复位
MOVDISP_INDEX,#0H;片内地址指针复位
WR_QUT:SETBPT6311_STB
NOP
NOP
JMPRUN4_1
OUTDATA:MOVR0,#8;写入一个字节子程序
SETBPT6311_DATA
NOP
W1:CLRPT6311_CLK
RRCA
MOVPT6311_DATA,C
SETBPT6311_CLK;时钟上升沿写入数据
DJNZR0,W1
RET
START_VFD:CLRPT6311_STB
MOVA,#0CH;13位15段
CALLOUTDATA;输入一组数据
SETBPT6311_STB
RET
BRIGHT:CLRPT6311_STB;设置亮度子程序14/16
MOVA,#0BDH
CALLOUTDATA
SETBPT6311_STB
RET
INDATA:MOVR6,#8;读入一个字节子程序(读键盘)
SETBPT6311_DATA;令PT6311_DATA接口有效
INDATA1:SETBPT6311_CLK;时钟的下降沿读出数据(??)
CLRPT6311_CLK;读出一个位
MOVC,PT6311_DATA;读出的数据暂存位积存器C
RRCA;位数据入ACC
DJNZR6,INDATA1
RET
;;------------------------------------------------------------------
RD_KEY:MOVR1,#KEY_CELL;读键值子程序
MOVR2,#06H;要读入的键值单元数为6
CLRPT6311_STB;
MOVA,#76H;01110110命令字:读键盘值
CALLOUTDATA;写入控制字
RD_1:CALLINDATA;读入键盘键值
MOV@R1,A
INCR1
DJNZR2,RD_1
SETBPT6311_STB
NOP
CLRPT6311_STB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;按键键值判断程序(把键值整理后放KEY_NUM中);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY_EX:MOVA,7AH;判断那一行闭合
JZKEY_2
MOVR6,#00
JMPTAKE
KEY_2:MOVA,7BH
JZKEY_3
MOVR6,#08
JMPTAKE
KEY_3:MOVA,7CH
JZKEY_4
MOVR6,#16
JMPTAKE
KEY_4:MOVA,7DH
JZKEY_5
MOVR6,#024
JMPTAKE
KEY_5:MOVA,7EH
JZKEY_6
MOVR6,#32
JMPTAKE
KEY_6:MOVA,7FH
JZRET2;无按键按下退出
MOVR6,#40
TAKE:JNBACC.0,N2;判断那一列闭合
MOVR7,#1
JMPADD_KEY
N2:JNBACC.1,N3
MOVR7,#2
JMPADD_KEY
N3:JNBACC.2,N4
MOVR7,#3
JMPADD_KEY
N4:JNBACC.3,N5
MOVR7,#4
JMPADD_KEY
N5:JNBACC.4,N6
MOVR7,#5
JMPADD_KEY
N6:JNBACC.5,N7
MOVR7,#06
JMPADD_KEY
N7:JNBACC.6,N8
MOVR7,#07
JMPADD_KEY
N8:JNBACC.7,RET2
MOVR7,#08
ADD_KEY:MOVA,R6
ADDA,R7
MOVKEY_NUM,A
JMPRET3
RET2:MOVKEY_NUM,#00H;无按键按下键值清0
RET3:JMPRUN5_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;进制转换子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
DIV10:MOVA,DIV_16;十六进转十进制子程序
MOVB,#100
DIVAB
MOVA,B
MOVB,#10
DIVAB
MOVDISP_H,A;把十位数值存入高位显示缓冲区
MOVDISP_L,B;把个位数值存入低位显示缓冲区
RET
;------------------------------------按键处理子程序----------------------------------------
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
KEY_GO:MOVA,KEY_NUM
JZDELAY_4;没按键按下退出
INCKEY_DELAY
MOVA,KEY_DELAY
CJNEA,#130,OUT
MOVA,KEY_NUM
CJNEA,#9,DELAY_0;带功能复合键跳过单键处理(KEY_NUM=9,1,5是功能复合键)
JMPDELAY_2
DELAY_0:CJNEA,#1,DELAY_1
JMPDELAY_2
DELAY_1:CJNEA,#5,DELAY_3
DELAY_2:MOVA,KEYNUM_SAVE;=====================连发/单发的原理=============================
CJNEA,KEY_NUM,DELAY_3;如果检测到连续两次都不是同一键按下的,执行该按键的功能的处理
JMPOUT;如果检测到连续两次都是同一键按下的,不执行该按键的功能处理
DELAY_3:CALLBIJIAO;调用按键处理程序(要隔2x8x23ms才调用一次按键比较程序,连发一次大约0.5S)
MOVR4,#00
MOVR5,#00
MOVKEY_DELAY,#00H
JMPOUT
DELAY_4:MOVKEY_DELAY,#129
OUT:MOVKEYNUM_SAVE,KEY_NUM
JMPRUN2_02
;---------------------------------按键处理---------------------------------------------
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BIJIAO:MOVR6,KEY_NUM
CJNER6,#09,BA_1
MOVSYS_SIGN,#17
CALLINPUT
JMPRET4
BA_1:CJNER6,#1,BA_2
CALLMUISE
JMPRET4
BA_2:CJNER6,#5,BA_3
CALLKARAOKE
JMPRET4
BA_3:CJNER6,#6,BA_4
CALLFRIST;调用优先比较程序,当在输入状态或等响显示状态下时,按下UP键会把VOL值优先调用提升
CALLVOL_UP
JMPRET4
BA_4:CJNER6,#10,RET9
CALLFRIST;调用优先比较程序,当在输入状态或等响显示状态下时,按下UP键会把VOL值优先调用提升
CALLVOL_DOWN
RET4:CALLDATA_IN
RET9:RET
;-----------
;-----------
INPUT:MOVR5,INPUT_DATA;(CD/VCD=1,TUNER=2,AC3=3)
CJNER5,#1,IN1
MOVINPUT_DATA,#2
RET
IN1:CJNER5,#2,IN2
MOVINPUT_DATA,#3
RET
IN2:MOVINPUT_DATA,#1
RET
;-----------
;-----------
MUISE:MOVR5,SYS_SIGN;主音量复合键切换
CJNER5,#0,MUISE1
MOVSYS_SIGN,#1;设置为低音
MOVDSP_DATA,#0
RET
MUISE1:CJNER5,#1,MUISE2
MOVSYS_SIGN,#2;设置为高音
MOVDSP_DATA,#0
RET
MUISE2:CJNER5,#2,MUISE3
MOVSYS_SIGN,#6
RET
MUISE3:CJNER5,#6,MUISE4
MOVSYS_SIGN,#7
RET
MUISE4:CJNER5,#7,MUISE5
MOVSYS_SIGN,#8
RET
MUISE5:CJNER5,#8,MUISE6
MOVSYS_SIGN,#9
RET
MUISE6:MOVSYS_SIGN,#0
RET
;-----------
;-----------
KARAOKE:MOVR5,SYS_SIGN;卡拉OK真值切换
CJNER5,#3,KARAOKE1
MOVSYS_SIGN,#4
RET
KARAOKE1:CJNER5,#4,KARAOKE2
MOVSYS_SIGN,#5
RET
KARAOKE2:CJNER5,#5,KARAOKE3
MOVSYS_SIGN,#3
RET
KARAOKE3:MOVSYS_SIGN,#3
RET
;-----------
;-----------
VOL_UP:MOVR5,SYS_SIGN
VOL1:CJNER5,#0,VOL2;总音量调节,上限为64
RM1:MOVA,MAIN_DATA;(遥控占用)
INCA
CJNEA,#65,VOL_1A
JMPVOL_1B
VOL_1A:MOVMAIN_DATA,A
VOL_1B:MOVA,SURL_DATA
INCA
CJNEA,#65,VOL_1C
JMPVOL_1D
VOL_1C:MOVSURL_DATA,A
VOL_1D:MOVA,SURR_DATA
INCA
CJNEA,#65,VOL_1E
JMPVOL_1F
VOL_1E:MOVSURR_DATA,A
VOL_1F:MOVA,CEN_DATA
INCA
CJNEA,#65,VOL_1G
JMPVOL_1H
VOL_1G:MOVCEN_DATA,A
VOL_1H:MOVA,BW_DATA
INCA
CJNEA,#65,VOL_1I
JMPVOL_1J
VOL_1I:MOVBW_DATA,A
VOL_1J:RET
VOL2:CJNER5,#1,VOL3;低音量调节,上限为14
RM3:MOVA,BASS_DATA
INCA
CJNEA,#15,VOL_2A
RET
VOL_2A:MOVBASS_DATA,A
RET
VOL3:CJNER5,#2,VOL4;高音量调节,上限为14
RM4:MOVA,TR_DATA
INCA
CJNEA,#15,VOL_3A
RET
VOL_3A:MOVTR_DATA,A
RET
VOL4:CJNER5,#3,VOL5;卡拉OK量调节,上限为16
RM5:MOVA,MVOL_DATA
INCA
CJNEA,#17,VOL_4A
RET
VOL_4A:MOVMVOL_DATA,A
RET
VOL5:CJNER5,#4,VOL6;ECHO量调节,上限为16
RM6:MOVA,ECHO_DATA
INCA
CJNEA,#17,VOL_5A
RET
VOL_5A:MOVECHO_DATA,A
RET
VOL6:CJNER5,#5,VOL7;DELAY调节
MOVA,DELAY_DATA
CJNEA,#25,VOL6A
MOVDELAY_DATA,#10
SETBM_DELAY1
SETBM_DELAY2
RET
VOL6A:CJNEA,#10,VOL6B
MOVDELAY_DATA,#15
CLRM_DELAY1
SETBM_DELAY2
RET
VOL6B:CJNEA,#15,VOL6C
MOVDELAY_DATA,#20
SETBM_DELAY1
CLRM_DELAY2
RET
VOL6C:MOVDELAY_DATA,#25
CLRM_DELAY1
CLRM_DELAY2
VOL7:CJNER5,#6,VOL8;SURL调节,上限为64
RM7:MOVA,SURL_DATA
INCA
CJNEA,#65,VOL_7A
RET
VOL_7A:MOVSURL_DATA,A
RET
VOL8:CJNER5,#7,VOL9;SURR调节,上限为64
RM8:MOVA,SURR_DATA
INCA
CJNEA,#65,VOL_8A
RET
VOL_8A:MOVSURR_DATA,A
RET
VOL9:CJNER5,#8,VOL10;CEN调节,上限为64
RM9:MOVA,CEN_DATA
INCA
CJNEA,#65,VOL_9A
RET
VOL_9A:MOVCEN_DATA,A
RET
VOL10:CJNER5,#9,VOL_11;SW调节,上限为64
RM10:MOVA,BW_DATA
INCA
CJNEA,#65,VOL_10A
RET
VOL_10A:MOVBW_DATA,A
VOL_11:RET
;-------------------------------"VOL-"------------------------
VOL_DOWN:MOVR5,SYS_SIGN
V1:CJNER5,#0,VL2;总音量调节,下限为0
RM2:MOVA,MAIN_DATA;(遥控占用)
DECA
CJNEA,#255,VL_1A
JMPVL_1B
VL_1A:MOVMAIN_DATA,A
VL_1B:MOVA,SURL_DATA
DECA
CJNEA,#255,VL_1C
JMPVL_1D
VL_1C:MOVSURL_DATA,A
VL_1D:MOVA,SURR_DATA
DECA
CJNEA,#255,VL_1E
JMPVL_1F
VL_1E:MOVSURR_DATA,A
VL_1F:MOVA,CEN_DATA
DECA
CJNEA,#255,VL_1G
JMPVL_1H
VL_1G:MOVCEN_DATA,A
VL_1H:MOVA,BW_DATA
DECA
CJNEA,#255,VL_1I
JMPVL_1J
VL_1I:MOVBW_DATA,A
VL_1J:RET
VL2:CJNER5,#1,VL3;低音量调节,下限为0
RM12:MOVA,BASS_DATA
DECA
CJNEA,#255,VL_2A
RET
VL_2A:MOVBASS_DATA,A
VL3:CJNER5,#2,VL4;高音量调节,下限为0
RM13:MOVA,TR_DATA
DECA
CJNEA,#255,VL_3A
RET
VL_3A:MOVTR_DATA,A
VL4:CJNER5,#3,VL5;卡拉OK量调节,下限为0
RM14:MOVA,MVOL_DATA
DECA
CJNEA,#255,VL_4A
RET
VL_4A:MOVMVOL_DATA,A
VL5:CJNER5,#4,VL6;ECHO量调节,下限为0
RM15:MOVA,ECHO_DATA
DECA
CJNEA,#255,VL_5A
RET
VL_5A:MOVECHO_DATA,A
VL6:CJNER5,#5,VL7;DELAY调节
MOVA,DELAY_DATA
CJNEA,#25,VL6A
MOVDELAY_DATA,#20
CLRM_DELAY2
SETBM_DELAY1
RET
VL6A:CJNEA,#20,VL6B
MOVDELAY_DATA,#15
CLRM_DELAY1
SETBM_DELAY2
RET
VL6B:CJNEA,#15,VL6C
MOVDELAY_DATA,#10
SETBM_DELAY1
SETBM_DELAY2
RET
VL6C:MOVDELAY_DATA,#25
CLRM_DELAY1
CLRM_DELAY2
VL7:CJNER5,#6,VL8;SURL调节,下限为0
RM16:MOVA,SURL_DATA
DECA
CJNEA,#255,VL_7A
RET
VL_7A:MOVSURL_DATA,A
VL8:CJNER5,#7,VL9;SURR调节,下限为0
RM17:MOVA,SURR_DATA
DECA
CJNEA,#255,VL_8A
RET
VL_8A:MOVSURR_DATA,A
VL9:CJNER5,#8,VL10;CEN调节,下限为0
RM18:MOVA,CEN_DATA
DECA
CJNEA,#255,VL_9A
RET
VL_9A:MOVCEN_DATA,A
VL10:CJNER5,#9,VL11;SW调节,下限为0
RM19:MOVA,BW_DATA
DECA
CJNEA,#255,VL_10A
RET
VL_10A:MOVBW_DATA,A
VL11:RET
;;-------------------------操作优先排位子程序--------------------------------
FRIST:MOVA,SYS_SIGN
CJNEA,#17,FRI_2;处在INPUT显示模式下,按下加减键会把VOL操作排在第一位
MOVSYS_SIGN,#0
FRI_2:CJNEA,#13,FRI_3;处在5.1显示模式下,按下加减键会把VOL操作排在第一位
MOVSYS_SIGN,#0
FRI_3:CJNEA,#12,FRI_4;处在2.0显示模式下,按下加减键会把VOL操作排在第一位
MOVSYS_SIGN,#0
FRI_4:CJNEA,#14,FRI_5;处在LOUND显示模式下,按下加减键会把VOL操作排在第一位
MOVSYS_SIGN,#0
FRI_5:CJNEA,#15,FRI_6;处在MUTE显示模式下,按下加减键会把VOL操作排在第一位
MOVSYS_SIGN,#0
CLRMUTE_DATA;顺便把静音也关闭了
FRI_6:RET
;;--------------------------无按键按下自动复位子程序----------------------------
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
KEY_REST:MOVA,KEY_NUM
JNZBCK_1;
BCK_0:INCR4;
CJNER4,#150,BCK_2;
BCK_3:MOVR4,#00H
INCR5
CJNER5,#16,BCK_2
MOVR5,#00H
MOVSYS_SIGN,#17;把SYS_SIGN预置为"INPUT状态"
MOVKEY_DELAY,#129
JMPBCK_2
BCK_1:MOVR4,#00
MOVR5,#00
MOVGIF_SIGN,#2;有按键按把GIF_SIGN置2
MOVGIF_LONG,#0
BCK_2:JMPRUN2_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;I2C协议(PT6311);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;;;;;;;;;;;;;;;;;;;;;;I2C协议;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;启动子程序;;;;;;;;;;;;;;;;;;;;;;
START:CLRPT2313_CLK;CLK在高电平期间PT2313_DATA由高到低变化
SETBPT2313_DATA
NOP
SETBPT2313_CLK
NOP
CLRPT2313_DATA
NOP
CLRPT2313_CLK
RET
;;;;;;;;;;;;;;;;;;;停止子程序;;;;;;;;;;;;;;;;;;;;;;;;
STOP:CLRPT2313_CLK
CLRPT2313_DATA
NOP
NOP
SETBPT2313_CLK
NOP
NOP
SETBPT2313_DATA
NOP
NOP
CLRPT2313_CLK
RET
;;;;;;;;;;;;;;;;;;接收一个应答位;;;;;;;;;;;;;;;;;;;;;;;;;
ACKI:SETBPT2313_CLK
NOP
NOP
MOVC,PT2313_DATA
CLRPT2313_CLK
RET
;;;;;;;;;;;;;;;;;;;发送一个字节子程序;;;;;;;;;;;;;;;;;
SEND:MOVR0,#08H;要发送的数据字节为8
SEND0:RLCA
MOVPT2313_DATA,C
NOP
NOP
SETBPT2313_CLK
NOP
NOP
CLRPT2313_CLK
NOP
NOP
DJNZR0,SEND0
SETBPT2313_DATA
RET
;;;;;;;;;;;;;;;;;;;;发送n个字节;;;;;;;;;;;;;;;;;;;;;;;;;;;
OUT_DA:LCALLSTART
MOVA,#88H;送写控制字节
LCALLSEND
LCALLACKI
JCQUIT_1
OUT1:MOVA,MTD1
CALLSEND
CALLACKI
JCQUIT_1
CALLSTOP
RET
QUIT_1:CALLSTOP
LJMPOUT_DA;重发
TIME:PUSHACC
PUSHPSW
SETBRS0
MOVA,REM_SIGN
CJNEA,#03H,EXIT1;不是连发的定时溢出标记清0
INCR1;执行一次遥控按键处理后,T0延事超过60ms,R1+1
INCR2;T0中断次数存储单元,当T0中断3次(每次60ms),本次遥控结束
MOVA,R2
SUBBA,#3;判断在250ms内有无连发码出现
JNCEXIT0;无则清0
MOVTH0,#15H;定时值60MS
MOVTL0,#0A0H
SETBTR0
JMPEXIT2
EXIT0:CLRTR0
MOVR2,#00H
EXIT1:MOVREM_SIGN,#00H
EXIT2:POPPSW
POPACC
RETI
NOP
NOP
INT:MOVMTD2,A
MOVMTD3,PSW
MOVMTD4,DPH
MOVMTD5,DPL
SETBRS0;使用另一组寄存器
MOVR2,#00H
CLRTR0
CLREX0
MOVR5,REM_SIGN
CJNER5,#00H,INT_2;初始化原始数据
MOVR0,#REM_FIX;遥控数据接收的首址
MOVR1,#0;
MOVR2,#0;R2是连发溢出标记,当T0延时60ms*3后仍未检测到有遥控中断,本次遥控结束
MOVR3,#8;每个字节的位数
MOVR6,#0;数据对比单元
MOVR7,#4;要接收的字节数
MOVREM_SIGN,#01H;建立标记01
JMPINT_OFF
INT_2:CJNER5,#01H,INT_3;起始码和结果码的判断
MOVA,#30H;
MOVR6,TH0
SUBBA,R6
JNCERR_OUT;启动码+结果码<12.55ms退出(忽略TL0的值)
MOVA,#039H
SUBBA,R6
JCERR_OUT;启动码+结果码〉14.6ms推出(忽略TL0的值)
MOVREM_SIGN,#02H;建立标记02
JMPINT_OFF
INT_3:CJNER5,#02H,INT_4;(oldkey_out)
MOVA,#03H
MOVR6,TH0
SUBBA,R6;R6内存TH0的值
JNCERR_OUT;周期<1ms退出
MOVA,#0BH
SUBBA,R6
JCERR_OUT;周期>2.69ms退出
MOVA,#6H;输入检测周期1.6ms用来判断1或0
SUBBA,R6;
MOVA,@R0;
RRCA;存入一位数值
MOV@R0,A
DJNZR3,INT_OFF
INT_3_1:INCR0
MOVR3,#08H
DJNZR7,INT_OFF
MOVA,REM_KEY1
CPLA
CJNEA,REM_KEY,ERR_OUT;正反码比较,错则退
MOVREM_TIME,#8;
;----------------------------------------------------------
INT_4:;
;----------------------------------------------------------
KY_OUT:MOVA,REM_SIGN
CJNEA,#3,ODD;判断遥控是出于第一次按键触发还是处于连发阶段,连发阶段的标记是REM_SIG=3
MOVA,R1;连发最小时间判断,过滤掉<60ms的脉冲,因<60ms的脉冲不会令T0溢出
JZNORUN
ODD:INCREM_TIME;每连发一次连发记忆单元+1
NORUN:MOVA,REM_TIME;因为跳过上一步IREM_TIME+1,所以不会执行BIJIAO(不够减)
SUBBA,#5;连发5次调用一次按键处理程序
JNCGO_0
JMPGO_1
GO_0:MOVREM_TIME,#00H;每调用一次按键处理子程序连发记忆单元清0
JMPBIJIAO2
BI_RET:MOVR1,#00
MOVREM_SIGN,#03H;执行一次按键处理后建立遥控标记#03
GO_1:SETBTR0
JMPINT_OFF1
ERR_OUT:MOVREM_SIGN,#00H;报错标记清0
LJMPINT_OFF1;报错返回不启动定时器
INT_OFF:SETBTR0
INT_OFF1:MOVTH0,#00H
MOVTL0,#00H
SETBEX0
MOVDPL,MTD5
MOVDPH,MTD4
MOVPSW,MTD3
MOVA,MTD2
MOVR4,#0
MOVR5,#0;确定遥控结束后的参数复位时间
RETI
NOP
NOP
BIJIAO2:MOVGIF_SIGN,#2;动画进程置2,让他显示功能内容
MOVGIF_LONG,#0
MOVR4,REM_KEY
CJNER4,#2,BI1
CALLRM1;总音量调节+
MOVSYS_SIGN,#0
BI1:CJNER4,#1,BI2
CALLRM2;总音量调节-
MOVSYS_SIGN,#0
BI2:CJNER4,#56H,BI3
MOVDSP_DATA,#0
CALLRM3;BASS+
MOVSYS_SIGN,#1;调整显示参数
BI3:CJNER4,#11H,BI4
MOVDSP_DATA,#0
CALLRM4;TR+
MOVSYS_SIGN,#2
BI4:CJNER4,#1DH,BI5
CALLRM5;MVOL+
MOVSYS_SIGN,#3
BI5:CJNER4,#1CH,BI6
CALLRM6;ECHO+
MOVSYS_SIGN,#4
BI6:CJNER4,#50H,BI7;SL+
CALLRM7
MOVSYS_SIGN,#6
BI7:CJNER4,#46H,BI8;SR+
CALLRM8
MOVSYS_SIGN,#7
BI8:CJNER4,#44H,BI9;CEN+
CALLRM9
MOVSYS_SIGN,#8
BI9:CJNER4,#5EH,BI10;BW+
CALLRM10
MOVSYS_SIGN,#9
BI10:CJNER4,#57H,BI11;BASS-
MOVDSP_DATA,#0
CALLRM12
MOVSYS_SIGN,#1
BI11:CJNER4,#0DH,BI12
MOVDSP_DATA,#0
CALLRM13;TR-
MOVSYS_SIGN,#2
BI12:CJNER4,#16H,BI13
MOVDSP_DATA,#0
CALLRM14;MVOL-
MOVSYS_SIGN,#3
BI13:CJNER4,#17H,BI14
CALLRM15;ECHO-
MOVSYS_SIGN,#4
BI14:CJNER4,#53H,BI15
CALLRM16;SL-
MOVSYS_SIGN,#6
BI15:CJNER4,#03H,BI16
CALLRM17;SR-
MOVSYS_SIGN,#7
BI16:CJNER4,#13H,BI17
CALLRM18;CEN-
MOVSYS_SIGN,#8
BI17:CJNER4,#1FH,BI18
CALLRM19;BW-
MOVSYS_SIGN,#9
BI18:CJNER4,#42H,BI19
MOVINPUT_DATA,#1;AUX
MOVSYS_SIGN,#17
BI19:CJNER4,#43H,BI20
MOVINPUT_DATA,#2;VCD
MOVSYS_SIGN,#17
BI20:CJNER4,#0FH,BI21;AC3
MOVINPUT_DATA,#3
MOVCH_DATA,#0;AC3状态下启动5.1ch
MOVSYS_SIGN,#17
BI21:CJNER4,#0BH,BI22
MOVDELAY_DATA,#10;100MS
SETBM_DELAY2
SETBM_DELAY1
MOVSYS_SIGN,#5
BI22:CJNER4,#0AH,BI23
MOVDELAY_DATA,#15;150MS
CLRM_DELAY1
SETBM_DELAY2
MOVSYS_SIGN,#5
BI23:CJNER4,#1AH,BI24
MOVDELAY_DATA,#20;200MS
CLRM_DELAY2
SETBM_DELAY1
MOVSYS_SIGN,#5
BI24:CJNER4,#40H,BI25
MOVDELAY_DATA,#25;250MS
CLRM_DELAY2
CLRM_DELAY1
MOVSYS_SIGN,#5
BI25:CJNER4,#0CH,BI26;平衡L
MOVSYS_SIGN,#10
MOVA,BAL_DATA
INCA
CJNEA,#9,BI25_0
JMPRET6
BI25_0:MOVBAL_DATA,A
JMPRET6
BI26:CJNER4,#05H,BI27;平衡R
MOVSYS_SIGN,#10
MOVA,BAL_DATA
DECA
CJNEA,#255,BI26_0
JMPRET6
BI26_0:MOVBAL_DATA,A
JMPRET6
BI27:CJNER4,#45H,BI28
MOVDSP_DATA,#1;DSP1
JMPRET7
BI28:CJNER4,#8H,BI29
MOVDSP_DATA,#2;DSP2
JMPRET7
BI29:CJNER4,#7H,BI30
MOVDSP_DATA,#3;DSP3
JMPRET7
BI30:CJNER4,#9H,BI31
MOVDSP_DATA,#4;DSP4
JMPRET7
BI31:CJNER4,#47H,BI32
MOVDSP_DATA,#5;DSP5
JMPRET7
BI32:CJNER4,#4CH,BI33
MOVDSP_DATA,#6;DSP6
JMPRET7
BI33:CJNER4,#4AH,BI34
MOVDSP_DATA,#7;DSP7
JMPRET7
BI34:CJNER4,#1BH,BI35
MOVDSP_DATA,#0;DSP8
JMPRET7
BI35:CJNER4,#4DH,BI36;MUTE
MOVSYS_SIGN,#15
MOVA,REM_SIGN;MUTE连发调用无效(REM_SIGN=#3是连发阶段)
CJNEA,#3,BI35A
JMPRET6
BI35A:JNBMUTE_DATA,MUTE1
CLRMUTE_DATA
JMPRET6
MUTE1:SETBMUTE_DATA
BI36:CJNER4,#49H,BI37;2.0CH
;MOVCH_DATA,#3H
MOVA,INPUT_DATA
CJNEA,#3,BI36_1;在DVD状态下声道模式不能切换
MOVSYS_SIGN,#20
JMPBI37
BI36_1:MOVSYS_SIGN,#12
MOVCH_DATA,#3H
BI37:CJNER4,#48H,BI38;5.1CH
MOVCH_DATA,#0
MOVSYS_SIGN,#13
BI38:CJNER4,#5FH,BI39;LOUND
MOVSYS_SIGN,#14
MOVA,REM_SIGN;LOUND连发调用无效(REM_SIGN=#3是连发阶段)
CJNEA,#3,BI38A
JMPRET6
BI38A:JNBLOUND_DATA,LOU1
CLRLOUND_DATA
JMPRET6
LOU1:SETBLOUND_DATA
BI39:CJNER4,#4FH,BI40
MOVA,REM_SIGN;DISP_MODE连发调用无效(REM_SIGN=#3是连发阶段)
CJNEA,#3,BI39A
JMPRET6
BI39A:MOVA,DP_MODE;各种显示模式的切换
CJNEA,#0,BI39B
MOVDP_MODE,#1
BI39B:CJNEA,#1,BI39C
MOVDP_MODE,#2
BI39C:CJNEA,#2,BI39D
MOVDP_MODE,#3
BI39D:CJNEA,#3,BI39F
MOVDP_MODE,#4
BI39F:CJNEA,#4,BI39G
MOVDP_MODE,#5
BI39G:CJNEA,#5,BI39E
MOVDP_MODE,#0
BI39E:MOVDP_SAVE,DP_MODE;把DP_MODE模式保存起来
JMPRET6
BI40:CJNER4,#04H,BI40B;POWER
MOVA,REM_SIGN;POWER连发调用无效(REM_SIGN=#3是连发阶段)
CJNEA,#3,BI40A
JMPRET6
BI40A:JNBPOWER,destine;读预设,开机
CLRPOWER;
SETBMUTE_DATA;收到关机指令后开静音
JMPRET6
BI40B:JMPBI41
DESTINE:;*******调用预设值********
SETBPOWER;启动电源标记(只有但POWER=1,才可令MUTE=0关闭静音和关闭显示,关闭显示可以清空显示缓冲)
MOVGIF_SIGN,#1;初始化动画进程
MOVGIF_TIME1,#0;动画跑字速度间隔时间清0
MOVGIF_LONG,#0;动画字幕长度清0
MOVAD_SIM1,#0
MOVAD_SIM2,#0
MOVAD_SIM3,#0
MOVAD_SIM4,#0
MOVAD_TEM,#0;电平临时数据
MOVAD_SIGN,#0;AD转换进程标记(=0,C放电=1,测量数据=2,测量结束)
MOVAD_TIME,#0
MOVDP_MODE,#0;电平显示模式
MOVDP_NUM,#0;自动电平的当前进度格数
MOVDP_SAVE,#0
CLRSTA_DATA;STA_DATA=0,表示第一次开机STA_DATA=0,表示开机初始化结束
CLRAUTO_SIGN;AUTO_SIGN=0,频谱自走AUTO_SIGN=1,显示AD
MOVAUTO_NUM,#0
MOVKEY_DELAY,#129;按键连发执行间隔时间
MOVTIME1,#0;总时间刷新
MOVINPUT_DATA,#1;预置#1,CD/VCD选通;(CD/VCD=1,TUNER=2,AC3=3)
MOVBASS_DATA,#8;
MOVTR_DATA,#8
MOVMAIN_DATA,#0
MOVBAL_DATA,#4;平衡设置
MOVDSP_DATA,#0;预置为DSP关闭
MOVCH_DATA,#0;预置为5.1CH
MOVMVOL_DATA,#9
MOVECHO_DATA,#15
MOVDELAY_DATA,#25;卡拉OK延时时间预设为250mS
CLRM_DELAY1
CLRM_DELAY2
MOVSURL_DATA,#0
MOVSURR_DATA,#0
MOVCEN_DATA,#0
MOVBW_DATA,#0
CLRMUTE_DATA;关静音
CLRLOUND_DATA;关等响
MOVSYS_SIGN,#0;开机后显示主音量
MOVDISP_BUFFER,#22H;显示缓冲区首址复位
MOVDISP_INDEX,#0H;片内地址指针复位
MOVR2,#26;把显示缓冲区共28个单元数值清0
MOVR1,#22H
DES1:MOV@R1,#0
INCR1
DJNZR2,DES1
JNBBOOT_STR,BI40C;!!!!!!!!!!1检测是第一次开机读预置还是遥控读预置,判断返回地址
BI41:JMPRET6
BI40C:SETBBOOT_STR
RET
RET7:MOVSYS_SIGN,#11;设置对应显示标记
RET6:;每调用一次BIJIAO2,则调用一次芯片数据输入程序
;;-----------------------------把数据输入到PT2313/M62429芯片中------------------------------------------
DATA_IN:CLRTR1;PT2313数据写入
MAN_INPUT:MOVA,INPUT_DATA;(CD/VCD=1,TUNER=2,AC3=3)
MOVDPTR,#TABLE9
MOVCA,@A+DPTR
JNBLOUND_DATA,MM1;ACC.2对应PT2313的LOUND位
CLRACC.2
JMPMM2
MM1:SETBACC.2
MM2:MOVMTD1,A;存入INPUT,增益,等响度关
CALLOUT_DA
MAN_VOL1:MOVA,BAL_DATA
MOVDPTR,#TABLE10
MOVCA,@A+DPTR
ADDA,#80H
MOVMTD1,A;存入左前声道
CALLOUT_DA
MAN_VOL2:MOVA,BAL_DATA
MOVDPTR,#TABLE10A
MOVCA,@A+DPTR
ADDA,#0A0H
MOVMTD1,A;存入右前声道
CALLOUT_DA
MAN_VOL3:JNBMUTE_DATA,MV3_1;静音判断
MOVA,#0
JMPMV3_2
MV3_1:MOVA,MAIN_DATA
MV3_2:MOVDPTR,#TABLE11
MOVCA,@A+DPTR
MOVMTD1,A;存入主声道
CALLOUT_DA
MAN_BASS:MOVA,DSP_DATA;根据DSP_DATA内保存的数据判断是输入DSP数据或是手动调节数据
JZBASS1;DSP_DATA模式=0说明DSP关闭,跳到BASS2
MOVA,DSP_DATA;DSP模式开启动,输入DSP模式数据
MOVDPTR,#TABLE15
JMPBASS3
BASS1:MOVA,BASS_DATA
BASS2:MOVDPTR,#TABLE12
BASS3:MOVCA,@A+DPTR
ADDA,#60H
MOVMTD1,A;存入BASS
CALLOUT_DA
MAN_TR:MOVA,DSP_DATA
JZTR_1;根据DSP_DATA内保存的数据判断是输入DSP数据或是手动调节数据
MOVA,DSP_DATA
MOVDPTR,#TABLE16
JMPTR_3
TR_1:MOVA,TR_DATA
TR_2:MOVDPTR,#TABLE12
TR_3:MOVCA,@A+DPTR
ADDA,#70H
MOVMTD1,A;存入TREBLE
CALLOUT_DA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;M62429;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLRC;选通通道1(SURL)
CALLML_1A
JBMUTE_DATA,M_SL0;判断SL是否静音
MOVA,CH_DATA
CJNEA,#0,M_SL0;除非CH_DATA=0(5.1CH),否则SL静音
JMPM_SL1
M_SL0:MOVA,#0
JMPM_SL2
M_SL1:MOVA,SURL_DATA;
M_SL2:MOVDPTR,#TABLE13
MOVCA,@A+DPTR
MOVR6,#8
CALLML_1B;输入音量数据
CALLML_1C;输入结尾符号(2位1)
;-------
SETBC;选通通道2(SURR)
CALLML_1A
JBMUTE_DATA,M_SR0;判断SR是否静音
MOVA,CH_DATA
CJNEA,#0,M_SR0;除非CH_DATA=0(5.1CH),否则SR静音
JMPM_SR1
M_SR0:MOVA,#0
JMPM_SR2
M_SR1:MOVA,SURR_DATA
M_SR2:MOVDPTR,#TABLE13
MOVCA,@A+DPTR
MOVR6,#8
CALLML_1B
CALLML_1C
;;-----------------------------
CLRC;选通通道1(BW)
CALLML_2A
JBMUTE_DATA,M_BW0;判断BW是否静音
MOVA,CH_DATA
CJNEA,#3,M_BW1;除非CH_DATA=3(2CH),否则重低音开启
M_BW0:MOVA,#0
JMPM_BW2
M_BW1:MOVA,BW_DATA;
M_BW2:MOVDPTR,#TABLE13
MOVCA,@A+DPTR
MOVR6,#8
CALLML_2B
CALLML_2C;输入结尾符号(2位1)
SETBC;选通通道2(CEN)
CALLML_2A
JBMUTE_DATA,M_CEN0;判断CEN是否静音
MOVA,CH_DATA
CJNEA,#3,CEN_A;2CH则中置静音
JMPM_CEN0
CEN_A:CJNEA,#2,M_CEN1;2.1CH则中置静音
M_CEN0:MOVA,#0
JMPM_CEN2
M_CEN1:MOVA,CEN_DATA
M_CEN2:MOVDPTR,#TABLE13
MOVCA,@A+DPTR
MOVR6,#8
CALLML_2B
CALLML_2C
;;-----------------------------
CLRC;选通通道1(MVOL)
CALLML_3A
JNBMUTE_DATA,M_OK1;判断MVOL是否静音
MOVA,#0
JMPM_OK2
M_OK1:MOVA,MVOL_DATA;
M_OK2:MOVDPTR,#TABLE14
MOVCA,@A+DPTR
MOVR6,#8
CALLML_3B
CALLML_3C;输入结尾符号(2位1)
SETBC;选通通道2(ECHO)
CALLML_3A
MOVA,ECHO_DATA
MOVDPTR,#TABLE14
MOVCA,@A+DPTR
MOVR6,#8
CALLML_3B
CALLML_3C
SETBTR1
MOVA,REM_SIGN
JZXX1
JMPBI_RET
XX1:RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ML_1A:CLRM62429_DA
CLRM62429_CK
NOP
NOP
MOVM62429_DA,C
SETBM62429_CK;CK上升沿串入数据
NOP
NOP
CLRM62429_DA
CLRM62429_CK
RET
ML_1B:RLCA;串入音量数据
MOVM62429_DA,C
SETBM62429_CK
NOP
NOP
CLRM62429_DA
CLRM62429_CK
NOP
NOP
DJNZR6,ML_1B
RET
ML_1C:SETBC
NOP
NOP
MOVM62429_DA,C
SETBM62429_CK
NOP
NOP
CLRM62429_DA
CLRM62429_CK
NOP
NOP
MOVM62429_DA,C
SETBM62429_CK
NOP
NOP
NOP
NOP
CLRM62429_CK
NOP
NOP
RET
;----------------
ML_2A:CLRM62429_DA
CLRM62429_CK1
NOP
NOP
MOVM62429_DA,C
SETBM62429_CK1;CK上升沿串入数据
NOP
NOP
CLRM62429_DA
CLRM62429_CK1
RET
ML_2B:RLCA;串入音量数据
MOVM62429_DA,C
SETBM62429_CK1
NOP
NOP
CLRM62429_DA
CLRM62429_CK1
NOP
NOP
DJNZR6,ML_2B
RET
ML_2C:SETBC;结尾
NOP
NOP
MOVM62429_DA,C
SETBM62429_CK1
NOP
NOP
CLRM62429_DA
CLRM62429_CK1
NOP
NOP
MOVM62429_DA,C
SETBM62429_CK1
NOP
NOP
NOP
NOP
CLRM62429_CK1
NOP
NOP
RET
;---------------------
ML_3A:CLRM62429_DA3
CLRM62429_CK3
NOP
NOP
MOVM62429_DA3,C
SETBM62429_CK3;CK上升沿串入数据
NOP
NOP
CLRM62429_DA3
CLRM62429_CK3
RET
ML_3B:RLCA;串入音量数据
MOVM62429_DA3,C
SETBM62429_CK3
NOP
NOP
CLRM62429_DA3
CLRM62429_CK3
NOP
NOP
DJNZR6,ML_3B
RET
ML_3C:SETBC;结尾
NOP
NOP
MOVM62429_DA3,C
SETBM62429_CK3
NOP
NOP
CLRM62429_DA3
CLRM62429_CK3
NOP
NOP
MOVM62429_DA3,C
SETBM62429_CK3
NOP
NOP
NOP
NOP
CLRM62429_CK3
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;数据表格;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TABLE1:DB00H,01H,03H,04H,06H,07H,09H,0AH,0CH,0DH,0FH,10H,12H,13H,15H,16H
DB18H,19H,1BH,1CH,1EH,1FH,21H,22H,24H,25H;(PT6311片内积存器地址)
TAB2:DB227,17,34,49,7,41,9,36,35,49,0,0,227,17,43,21,227,16
DB32,48,9,36,225,16,9,36,225,48,226,16,00,00,00,00,00,00,00,00,00
DB00,00,00,00,00,00,00,00;(英文:AUDIOAMPLIFIER)
TAB3:DB49,35,4,8,48,195,33,195,1,226
DB33,225,49,225,1,3,49,227,33,227;(数字0-9)
TAB4:DB00,00,24,48,49,35,48,32,00,00;(字符串VOL)
TAB5:DB49,224,17,227,33,225,33,225;(字符串BASS)
TAB6:DB4,9,16,226,48,225,49,224;(字符串TREB)
TAB7:DB49,227,48,32,17,227,19,38;(字符串BLAN)
TAB8:DB00,00,00,00,33,225,48,32;(字符串SL)
TAB9:DB00,00,00,00,33,225,16,226;(字符串SR)
TAB10:DB00,00,00,00,33,225,53,42;(字符串SW)
TAB11:DB00,00,48,33,48,225,19,38;(字符串CEN)
TAB12:DB48,225,48,33,17,226,49,35;(字符串ECHO)
TAB13:DB21,43,24,48,49,35,48,32;(字符串MVOL)
TAB14:DB00,00,41,7,48,225,48,32;(字符串DEL)
TAB15:DB00,00,41,7,33,225,16,227;(字符串DSP)
TAB16:DB48,33,17,226,0,192,33,225,64,0,4,8,00,00;(字符串CH-5.1)
TAB17:DB48,33,17,226,0,192,48,195,64,0,49,35,00,00;(字符串CH-2.O)
TAB18:DB00,00,48,33,41,7,8,16,24,48,48,33,41,7;(字符串CD/VCD)
TAB19:DB00,00,4,9,49,34,19,38,48,225,16,226,00,00;(字符串TUNER)
TAB20:DB00,00,00,00,41,7,24,48,41,7,00,00,00,00;(字符串AC3)
TAB21:DB0,192,4,8,1,226,0,192,4,8,48,195,0,192,4,8,49,35,0,192,0,0,49,227
DB0,192,0,0,49,225,0,192,0,0,1,226,0,192,0,0,48,195,0,0,0,0,49,35
DB4,200,0,0,48,195,4,200,0,0,1,226,4,200,0,0,49,225,4,200,0,0,49,227
DB4,200,4,8,49,35,4,200,4,8,48,195,4,200,4,8,1,226;(BASS和TREBLE的显示表格)
TAB22:DB0,0,0,0,21,43,49,34,4,9,48,225,0,0;(字符串MUTE)
TAB23:DB48,32,49,35,49,34,41,7,0,0,49,35,19,38;(字符串LOUDON)
TAB24:DB48,32,49,35,49,34,41,7,0,0,49,35,16,225;(字符串LOUDOF)
TAB26:DB32,0,48,0,56,0,60,0,62,0,63,0,63,128,63,192,63,224,63,240,63,248,63,252,63,254,63,255;(柱状频谱1)
TAB27:DB0,1,0,3,0,7,0,15,0,31,0,63,0,127,0,255,1,255,3,255,7,255,15,255,31,255,63,255;(柱状频谱2)
TAB28:DB32,0,16,0,8,0,4,0,2,0,1,0,0,128,0,64,0,32,0,16,0,8,0,4,0,2,0,1;(点状频谱1)
TAB29:DB0,1,0,2,0,4,0,8,0,16,0,32,0,64,0,128,1,0,2,0,4,0,8,0,16,0,32,0;(点状频谱2)
TAB30:DB31,255,47,255,55,255,59,255,61,255,62,255,63,127,63,191,63,223,63,239,63,247,63,251,63,253,63,254
TAB31:DB63,254,63,253,63,251,63,247,63,239,63,223,63,191,63,127,62,255,61,255,59,255,55,255,47,255,31,255
TAB40:DB00,00,00,00,00,00,48,225,16,226,16,226,00,00;(ERR字符串)
TABLE9:DB0,5CH,5DH,5EH;(PT2313,+0dB,等响关,通道选择1-3)
TABLE10:DB0,0,0,0,0,5,8,13,31;(PT2313前L声道控制)
TABLE10A:DB31,13,8,5,0,0,0,0,0;(PT2313前R声道控制)
TABLE11:DB63,62,61,60,59,58,57,56,55,54,53,52,51,50;(PT2313主音量)
DB49,48,47,46,45,44,43,42,41,40,39,38,37,36
DB35,34,33,32,31,30,29,28,27,26,25,24,23,22
DB21,20,19,18,17,16,15,14,13,12,11,10,9,8
DB7,6,5,4,3,2,1,0
TABLE12:DB0,1,2,3,4,5,6,7,14,13,12,11,10,9,8;(PT2313高低音)
;-14,-12,-10,-8,-6,-4,-2,0,+2,+4,+6,+8,+10,+12,+14
TABLE13:DB192,192,162,162,225,225,147,147,176,176;(M62429音量,SR,CEN,BW)
DB240,240,136,136,200,200,168,168,232,232
DB235,235,153,153,218,218,184,184,187,187
DB250,250,251,251,134,134,135,135,198,198
DB199,199,166,166,167,167,230,230,231,231
DB150,150,151,151,212,212,214,214,213,213
DB215,215,215,215,215,215
TABLE14:DB192,147,136,232,218,187,134,199,167,231,151,212,214,213,215,215,215;(M62429音量,MVOL,ECHO)
TABLE15:DB7,7,8,8,11,3,7,11;(DSP模式设定,共8种,该表用在PT2313查值)
TABLE16:DB7,8,7,8,11,7,3,3
END