📄 av-p06a.asm
字号:
BI39D: CJNE A,#3,BI39e
MOV DP_MODE,#0
BI39E: MOV DP_SAVE,DP_MODE ; 把DP_MODE模式保存起来
JMP RET6
BI40: JMP BI41
DESTINE: ;*******调用预设值********
setb power_flag
setb main_mute
MOV GIF_SIGN,#1 ;初始化动画进程
MOV GIF_TIME,#0 ;动画跑字速度间隔时间清0
MOV GIF_LONG,#0 ;动画字幕长度清0
MOV AD_SIM1,#0
MOV AD_SIM2,#0
MOV AD_SIM3,#0
MOV AD_SIM4,#0
mov ad_sim5,#0
mov ad_sim6,#0
MOV AD_TEM,#0 ;电平临时数据
MOV AD_SIGN,#0 ;AD转换进程标记(=0,C放电 =1,测量数据 =2,测量结束)
MOV AD_TIME1,#0
MOV DP_MODE,#0 ;电平显示模式
MOV DP_NUM,#0 ;自动电平的当前进度格数
MOV DP_SAVE,#0
CLR START_FLAG ;STA_DATA=0,表示第一次开机 STA_DATA=0,表示开机初始化结束
CLR AUTO_FLAG ;AUTO_SIGN=0,频谱自走 AUTO_SIGN=1,显示AD
MOV AUTO_NUM,#0
MOV KEY_DELAY,#129 ;按键连发执行间隔时间
MOV TIME1,#0 ;总时间刷新
MOV INPUT_DATA,#1 ;预置#1,CD/VCD选通 ;(CD/VCD=1,TUNER=2,AC3=3)
MOV BASS_DATA,#8 ;
MOV TREB_DATA,#8
MOV MAIN_DATA,#0
MOV BALN_DATA,#4 ;平衡设置
MOV DSP_DATA,#0 ;预置为DSP关闭
MOV CH_DATA,#0 ;预置为5.1CH
MOV MVOL_DATA,#9
MOV ECHO_DATA,#15
MOV DELAY_DATA,#25 ; 卡拉OK延时时间预设为250mS
MOV SURL_DATA,#0
MOV SURR_DATA,#0
MOV CEN_DATA,#0
MOV BW_DATA,#0
CLR MUTE_FLAG ;关静音
CLR LOUND_FLAG ;关等响
MOV SYS_SIGN,#0 ;开机后显示主音量
MOV DISP_BUFFER,#22H ;显示缓冲区首址复位
MOV DISP_INDEX,#0H ;片内地址指针复位
MOV R2,#26 ;把显示缓冲区共28个单元数值清0
MOV R1,#22H
DES1: MOV @R1,#0
INC R1
DJNZ R2,DES1
JNB BOOT_START,BI40C ;!!!!!!!!!!1检测是第一次开机读预置还是遥控读预置,判断返回地址
BI41: JMP RET6
BI40C: SETB BOOT_START
RET
RET7: MOV SYS_SIGN,#11 ;设置对应显示标记
RET6: ; 每调用一次BIJIAO2,则调用一次芯片数据输入程序
;/////////////////////////把数据输入到PT2314/PT2315/M62429芯片中//////////////////////////
DATA_IN: CLR TR1
;PT2314数据写入
MAN_INPUT:MOV A,INPUT_DATA ;(CD/VCD=1,TUNER=2,AC3=3)
MOV DPTR,#TABLE9
MOVC A,@A+DPTR
JNB LOUND_FLAG,MM1 ;ACC.2对应PT2313的LOUND位
CLR ACC.2
JMP MM2
MM1: SETB ACC.2
MM2: MOV MTD1,A ;存入INPUT,增益,等响度关
CALL OUT_DA_A
MAN_VOL1 :MOV A,BALN_DATA
MOV DPTR,#TAB_2314_L
MOVC A,@A+DPTR
ADD A,#0c0H
MOV MTD1,A ;存入左前声道
CALL OUT_DA_A
MAN_VOL2 :MOV A,BALN_DATA
MOV DPTR,#TAB_2314_R
MOVC A,@A+DPTR
ADD A,#0e0H
MOV MTD1,A ;存入右前声道
CALL OUT_DA_A
MAN_VOL3 :JNB MUTE_FLAG,MV3_1 ;静音判断
MOV A,#0
JMP MV3_2
MV3_1: MOV A,MAIN_DATA
MV3_2: MOV DPTR,#TAB_2314_MVOL
MOVC A,@A+DPTR
MOV MTD1,A ;存入主声道
CALL OUT_DA_A
MAN_BASS :MOV A,DSP_DATA ;根据DSP_DATA内保存的数据判断是输入DSP数据或是手动调节数据
JZ BASS1 ;DSP_DATA模式=0说明DSP关闭,跳到BASS2
MOV A,DSP_DATA ;DSP模式开启动,输入DSP模式数据
MOV DPTR,#TAB_DSP_1
JMP BASS3
BASS1: MOV A,BASS_DATA
BASS2: MOV DPTR,#TAB_2314_TB
BASS3: MOVC A,@A+DPTR
ADD A,#60H
MOV MTD1,A ;存入BASS
CALL OUT_DA_A
MAN_TR : MOV A,DSP_DATA
JZ TR_1 ;根据DSP_DATA内保存的数据判断是输入DSP数据或是手动调节数据
MOV A,DSP_DATA
MOV DPTR,#TAB_DSP_2
JMP TR_3
TR_1: MOV A,TREB_DATA
TR_2: MOV DPTR,#TAB_2314_TB
TR_3: MOVC A,@A+DPTR
ADD A,#70H
MOV MTD1,A ;存入TREBLE
CALL OUT_DA_A
;-----------------------------------------------------------------------------------------
;PT2315数据写入
MOV A,MVOL_DATA
MOV A,#20
SUBB A,MVOL_DATA
ADD A,#80H
MOV MTD6,A
CALL OUT_DA_B
MOV A,ECHO_DATA
MOV A,#20
SUBB A,ECHO_DATA
ADD A,#0a0H
MOV MTD6,A
CALL OUT_DA_B
;////////////////////////////////////////M62429///////////////////////////////////////////
CLR C ; 选通通道1(SURL)
CALL ML_1A
JB MUTE_FLAG,M_SL0 ; 判断SL是否静音
MOV A,CH_DATA
CJNE A,#0,M_SL0 ;除非CH_DATA=0(5.1CH),否则SL静音
JMP M_SL1
M_SL0: MOV A,#0
JMP M_SL2
M_SL1: MOV A,SURL_DATA ;
M_SL2: MOV DPTR,#TAB_62429_VOL
MOVC A,@A+DPTR
MOV R6,#8
CALL ML_1B ; 输入音量数据
CALL ML_1C ; 输入结尾符号(2位1)
SETB C ; 选通通道2(SURR)
CALL ML_1A
JB MUTE_FLAG,M_SR0 ; 判断SR是否静音
MOV A,CH_DATA
CJNE A,#0,M_SR0 ; 除非CH_DATA=0(5.1CH),否则SR静音
JMP M_SR1
M_SR0: MOV A,#0
JMP M_SR2
M_SR1: MOV A,SURR_DATA
M_SR2: MOV DPTR,#TAB_62429_VOL
MOVC A,@A+DPTR
MOV R6,#8
CALL ML_1B
CALL ML_1C
;;----------------------------------------------------------------------------------------
CLR C ; 选通通道1(BW)
CALL ML_2A
JB MUTE_FLAG,M_BW0 ; 判断BW是否静音
MOV A,CH_DATA
CJNE A,#3,M_BW1 ; 除非CH_DATA=3(2CH),否则重低音开启
M_BW0: MOV A,#0
JMP M_BW2
M_BW1: MOV A,BW_DATA ;
M_BW2: MOV DPTR,#TAB_62429_VOL
MOVC A,@A+DPTR
MOV R6,#8
CALL ML_2B
CALL ML_2C ; 输入结尾符号(2位1)
SETB C ; 选通通道2(CEN)
CALL ML_2A
JB MUTE_FLAG,M_CEN0 ; 判断CEN是否静音
MOV A,CH_DATA
CJNE A,#3,CEN_A ; 2CH则中置静音
JMP M_CEN0
CEN_A: CJNE A,#2,M_CEN1 ; 2.1CH则中置静音
M_CEN0: MOV A,#0
JMP M_CEN2
M_CEN1: MOV A,CEN_DATA
M_CEN2: MOV DPTR,#TAB_62429_VOL
MOVC A,@A+DPTR
MOV R6,#8
CALL ML_2B
CALL ML_2C
SETB TR1
MOV A,REM_SIGN
JZ XX1
JMP BI_RET
XX1: RET
;/////////////////////////////////////////////////////////////////////////////////////////
ML_1A: CLR M62429_DAT
CLR M62429_CK1
NOP
NOP
MOV M62429_DAT ,C
SETB M62429_CK1 ;CK上升沿串入数据
NOP
NOP
CLR M62429_DAT
CLR M62429_CK1
RET
ML_1B: RLC A ;串入音量数据
MOV M62429_DAT,C
SETB M62429_CK1
NOP
NOP
CLR M62429_DAT
CLR M62429_CK1
NOP
NOP
DJNZ R6,ML_1B
RET
ML_1C: SETB C
NOP
NOP
MOV M62429_DAT,C
SETB M62429_CK1
NOP
NOP
CLR M62429_DAT
CLR M62429_CK1
NOP
NOP
MOV M62429_DAT,C
SETB M62429_CK1
NOP
NOP
NOP
NOP
CLR M62429_CK1
NOP
NOP
RET
;----------------
ML_2A: CLR M62429_DAT
CLR M62429_CK2
NOP
NOP
MOV M62429_DAT ,C
SETB M62429_CK2 ;CK上升沿串入数据
NOP
NOP
CLR M62429_DAT
CLR M62429_CK2
RET
ML_2B: RLC A ;串入音量数据
MOV M62429_DAT,C
SETB M62429_CK2
NOP
NOP
CLR M62429_DAT
CLR M62429_CK2
NOP
NOP
DJNZ R6,ML_2B
RET
ML_2C: SETB C ;结尾
NOP
NOP
MOV M62429_DAT,C
SETB M62429_CK2
NOP
NOP
CLR M62429_DAT
CLR M62429_CK2
NOP
NOP
MOV M62429_DAT,C
SETB M62429_CK2
NOP
NOP
NOP
NOP
CLR M62429_CK2
NOP
NOP
RET
;/////////////////////////////////////////I2C协议/////////////////////////////////////////
;PT2314发送n个字节
OUT_DA_A: LCALL START
MOV A,#88H ;送PT2314地址控制字节
LCALL SEND
LCALL ACKI
JC QUIT_1_A
MOV A,MTD1
CALL SEND
CALL ACKI
JC QUIT_1_A
CALL STOP
RET
QUIT_1_A: CALL STOP
LJMP OUT_DA_A ;重发
;-----------------------------------------------------------------------------------------
;PT2315发送n个字节
OUT_DA_B: LCALL START
MOV A,#80H ;送PT2315地址控制字节
LCALL SEND
LCALL ACKI
JC QUIT_1_B
MOV A,MTD6
CALL SEND
CALL ACKI
JC QUIT_1_B
CALL STOP
RET
QUIT_1_B: CALL STOP
LJMP OUT_DA_B ;重发
;-----------------------------------------------------------------------------------------
; 启动子程序
START: CLR PT2314_5_CLK ; CLK在高电平期间PT2314_5_DATA由高到低变化
SETB PT2314_5_DATA
NOP
SETB PT2314_5_CLK
NOP
CLR PT2314_5_DATA
NOP
CLR PT2314_5_CLK
RET
;停止子程序
STOP: CLR PT2314_5_CLK
CLR PT2314_5_DATA
NOP
NOP
SETB PT2314_5_CLK
NOP
NOP
SETB PT2314_5_DATA
NOP
NOP
CLR PT2314_5_CLK
RET
;接收一个应答位
ACKI: SETB PT2314_5_CLK
NOP
NOP
MOV C,PT2314_5_DATA
CLR PT2314_5_CLK
RET
;发送一个字节子程序
SEND: MOV R0,#08H ;要发送的数据字节为8
SEND0: RLC A
MOV PT2314_5_DATA,C
NOP
NOP
SETB PT2314_5_CLK
NOP
NOP
CLR PT2314_5_CLK
NOP
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -