遙控6聲道AV機(jī)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的信號(hào))
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
;----片內(nèi)RAM定義--------
GIF_SIGNEQU40H;動(dòng)畫進(jìn)程標(biāo)記(=1,走過(guò)場(chǎng)字幕)
GIF_TIME1EQU41H;動(dòng)畫跑字的時(shí)間間隔速度
GIF_LONGEQU42H;動(dòng)畫字幕的長(zhǎng)度
DISP_BUFFEREQU43H;顯示緩沖區(qū)地址指針
DISP_INDEXEQU44H;PT6311片內(nèi)地址指針
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;按鍵編號(hào),INPUT=2,MAIN=3,OK=4,V-=5,V+=1
KEYNUM_SAVEEQU54H;按鍵過(guò)去式記錄
SYS_SIGNEQU55H;真值表
KEY_DELAYEQU56H;每執(zhí)行一次按鍵處理所間隔的時(shí)間
DIV_16EQU57H
DP_NUMEQU58H;自動(dòng)電平當(dāng)前進(jìn)度的格數(shù)
DP_MODEEQU59H;電平顯示模式,分單針顯示,雙針顯示等多種多樣
REM_SIGNEQU5AH;
REM_FIXEQU5BH;
REM_KEYEQU5DH;
REM_KEY1EQU5EH;
REM_TIMEEQU5FH;
AD_SIGNEQU61H;AD進(jìn)程標(biāo)記(=0則把電容放電,=1則進(jìn)行數(shù)據(jù)檢測(cè),=2則表示檢測(cè)完成,存入數(shù)據(jù)到AD_DATA)
AD_CLREQU62H;AD放電時(shí)間記憶單元
AD_CYCEQU6AH;AD判斷周期記憶單元
AD_TEMEQU63H;AD數(shù)據(jù)臨時(shí)保存單元
AD_DATA1EQU64H;AD轉(zhuǎn)換最終存放數(shù)據(jù)
AD_TIMEEQU65H;AD模擬運(yùn)算速度調(diào)節(jié)
AD_SIM1EQU66H;AD模擬運(yùn)算結(jié)果保存單元1
AD_SIM2EQU67H;AD模擬運(yùn)算結(jié)果保存單元2
AD_SIM3EQU68H;AD模擬運(yùn)算結(jié)果保存單元3
AD_SIM4EQU69H;AD模擬運(yùn)算結(jié)果保存單元4
AD_TIME2EQU21H;AD自動(dòng)電平上升時(shí)間
AD_DATA2EQU6BH;AD轉(zhuǎn)換最終存放數(shù)據(jù)2
AD_DATA3EQU6CH;AD轉(zhuǎn)換最終存放數(shù)據(jù)3
AD_DATA4EQU6DH;AD轉(zhuǎn)換最終存放數(shù)據(jù)4
AUTO_NUMEQU6EH;AD_DATA1連續(xù)為0的數(shù)量統(tǒng)計(jì)標(biāo)記
AUTO_TIMEEQU6FH
DP_SAVEEQU70H;顯示模式記憶單元
TIME1EQU71H;主循環(huán)執(zhí)行時(shí)間
TIME2EQU72H;顯示緩沖區(qū)數(shù)據(jù)處理間隔時(shí)間
DISP_HEQU73H
DISP_LEQU74H
MTD5EQU75H
MTD4EQU76H
MTD3EQU77H
MTD2EQU78H
MTD1EQU79H
KEY_CELLEQU7AH;(7FH-7AH為6個(gè)鍵值保存單元)
POWEREQU20H.4;開關(guān)機(jī)標(biāo)記,POWER=0,開機(jī)POWER=1,關(guān)機(jī)
BOOT_STREQU20H.5;開機(jī)初始化標(biāo)記,首次開機(jī)時(shí)候置0,讀完預(yù)置后置1
MUTE_DATAEQU20H.0;MUTE=1,開MUTE=0,關(guān)
LOUND_DATAEQU20H.1;LOUND_DATA=1,開等響,LOUND=0,關(guān)等響
STA_DATAEQU20H.2;STA_DATA=0,表示第一次開機(jī)STA_DATA=1,表示開機(jī)初始化結(jié)束
AUTO_SIGNEQU20H.3;AUTO=0,頻譜自走AUTO=1,顯示AD轉(zhuǎn)換結(jié)果
;;;;;;;資源占用情況;;;;;;;;
;R7:DISP子程序占用,可通用
;R4,R5復(fù)位占用,獨(dú)立
;R0,R1,R2I2C協(xié)議占用,可通用
;R3NC
;R6通用
;-------------------
ORG00H
JMPMAIN
ORG0003H;EX0中斷程序入口,遙控占用
JMPINT
ORG000BH;T0溢出中斷入口,遙控接收碼時(shí)間脈寬測(cè)量
JMPTIME
ORG001BH;T1中斷入口
JMPAD_GO
;顯示中斷入口
MAIN:SETBP2.0
JNBP2.0,$
MOVR0,#95;把所有單元數(shù)據(jù)清0
MOVR1,#20H
FRIST1:MOV@R1,#0
INCR1
DJNZR0,FRIST1
MOVP3,#0FFH
CALLDESTINE;調(diào)用預(yù)設(shè),并把顯示緩沖區(qū)清0,把動(dòng)畫進(jìn)程置1
MOVTL1,#06H;T1中斷時(shí)間:250ns
MOVTH1,#06H
MOVSP,#10H;10H-24H共20個(gè)單元作為堆棧
MOVIE,#138;開中斷總開關(guān)、允許EX0、T0,T1中斷
MOVTMOD,#33;設(shè)T0為16位定時(shí)器,軟啟動(dòng),T1為自動(dòng)重裝8位計(jì)數(shù)器
MOVIP,#195;設(shè)定T0,EX0為高級(jí)中斷,T1為低級(jí)中斷(設(shè)定后遙控不受T1工作干擾)
CALLSTART_VFD;設(shè)置PT6311顯示段數(shù)(13位15段)
CALLBRIGHT;設(shè)置PT6311亮度子程序14/16
SETBIT0;外部中斷0為邊沿觸發(fā)方式
SETBTR1;T1是顯示中斷入口
;------------------------------主循環(huán)-------------------------------------------
;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;調(diào)用開機(jī)自走子程序
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;調(diào)用無(wú)信號(hào)自動(dòng)頻譜設(shè)定子程序(改變AUTO_SIGN值)
RUN3_1:JMPAD_INTO;調(diào)用AD模擬值運(yùn)算
RUN3_2:INCTIME1
JMPRUN_END
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RUN4:MOVA,TIME1
CJNEA,#7,RUN5
CLRTR1
JMPWR_VFD;寫入PT6311數(shù)據(jù)
RUN4_1:SETBTR1
INCTIME1
JMPRUN_END
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RUN5:MOVA,TIME1
CJNEA,#21,RUN_END
JMPRD_KEY;讀如按鍵值并把他分析結(jié)果存放到KEY_NUM中
RUN5_1:MOVTIME1,#0
;xxxxxxxxxxxxxx
RUN_END:JMPRUN_STA
;;;;;;;;;;;;;;;;;;;開機(jī)自走程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STA:INCDELAY_DATA;借用DELAY_DATA
MOVA,DELAY_DATA
CJNEA,#45,SAT_RET
MOVDELAY_DATA,#0
CALLRM1;每調(diào)用一次音量+1
CALLDATA_IN;初始化結(jié)束,調(diào)用一次芯片輸入程序
MOVA,MAIN_DATA
CJNEA,#20,SAT_RET
MOVSYS_SIGN,#17;自跑字幕結(jié)束后顯示INPUT選項(xiàng)
SETBEX0;音量提升完后才開啟EX0遙控接口
SETBSTA_DATA;開始程序結(jié)束,STA_DATA置1
SETBAUTO_SIGN
SAT_RET:RET
;;;;;;;;;;;;;;;;;;無(wú)信號(hào)自動(dòng)頻譜設(shè)定子程序;;;;;;;;;;;;;;;;;;;;;;;;;;
AUTO:JNBSTA_DATA,AUTO_RET;開機(jī)狀態(tài)下無(wú)需改變AUTO_SIGN值,直接退出
MOVA,AD_DATA1
JZAUTO1;檢測(cè)到?jīng)]信號(hào)轉(zhuǎn)無(wú)信號(hào)處理
SETBAUTO_SIGN;只要一檢測(cè)到AD_CYCA有信號(hào),馬上把AUTO_SIGN=1,使自走程序停止
MOVAUTO_NUM,#0;AD轉(zhuǎn)換值連續(xù)=0的計(jì)數(shù)器
MOVDP_MODE,DP_SAVE;恢復(fù)自走前設(shè)定的頻譜模式
MOVAD_TIME2,#0
MOVAUTO_NUM,#0
JMPAUTO_RET;檢測(cè)到有信號(hào)則跳過(guò)自動(dòng)頻譜處理
;---------------------------------
AUTO1:JNBAUTO_SIGN,AUTO2;產(chǎn)生自跑信號(hào)自跑程序(令A(yù)UTO_SIGN=0)
INCAD_TIME2
MOVA,AD_TIME2
CJNEA,#20,AUTO_RET
MOVAD_TIME2,#0
INCAUTO_NUM;AUTO_NUM產(chǎn)生自動(dòng)電平的時(shí)間值
MOVA,AUTO_NUM
CJNEA,#100,AUTO_RET
MOVAUTO_NUM,#0
CLRAUTO_SIGN;檢測(cè)到200次AD_DATA為0,即100次無(wú)信號(hào),SIGN置0
MOVDP_MODE,#0
MOVDP_NUM,#0
JMPAUTO_RET
;-----------------------------------;自動(dòng)頻譜處理
AUTO2:INCAD_TIME2;AD自動(dòng)電平上升進(jìn)程
MOVA,AD_TIME2
CJNEA,#80,AUTO_RET
MOVAD_TIME2,#0
INCDP_NUM
MOVA,DP_NUM
CJNEA,#13,AUTO_RET;自動(dòng)電平上升極限是不是14格(0也算1格)
MOVDP_NUM,#0
BB0:MOVA,DP_MODE;每隔14個(gè)步長(zhǎng)自動(dòng)轉(zhuǎn)換一次頻譜
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模擬值運(yùn)算;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AD_INTO:INCAD_TIME
MOVA,AD_TIME
CJNEA,#10,IN02;------------------------------------------模擬比較1
MOVA,AD_SIM1
CJNEA,AD_DATA1,INTO_01
JMPIN02;如果前后電平?jīng)]變化,則AD_SIM1保持不變
INTO_01:SUBBA,AD_DATA1
JNCAD_SUB;AD_SIM1大于當(dāng)前AD_DATA值,轉(zhuǎn)AD_SUB減處理
AD_UP:MOVA,AD_SIM1;AD_SIM1小于當(dāng)前AD_DATA值,轉(zhuǎn)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;如果前后電平?jīng)]變化,則AD_SIM2保持不變
INTO_02:SUBBA,AD_DATA1
JNCAD_SUB2;AD_SIM2大于當(dāng)前AD_DATA2值,轉(zhuǎn)AD_SUB減處理
AD_UP2:MOVA,AD_SIM2;AD_SIM2小于當(dāng)前AD_DATA2值,轉(zhuǎn)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;如果前后電平?jīng)]變化,則AD_SIM2保持不變
INTO_03:SUBBA,AD_DATA1
JNCAD_SUB3;AD_SIM2大于當(dāng)前AD_DATA2值,轉(zhuǎn)AD_SUB減處理
AD_UP3:MOVA,AD_SIM3;AD_SIM2小于當(dāng)前AD_DATA2值,轉(zhuǎn)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;如果前后電平?jīng)]變化,則AD_SIM2保持不變
INTO_04:SUBBA,AD_DATA1
JNCAD_SUB4;AD_SIM2大于當(dāng)前AD_DATA2值,轉(zhuǎn)AD_SUB減處理
AD_UP4:MOVA,AD_SIM4;AD_SIM2小于當(dāng)前AD_DATA2值,轉(zhuǎn)AD_CYC減處理
INCA
MOVAD_SIM4,A
JMPINTO_RET
AD_SUB4:MOVA,AD_SIM4
DECA
MOVAD_SIM4,A
INTO_RET:JMPRUN3_2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;顯示數(shù)據(jù)的處理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
GIF_1:JNBPOWER,GIF_V1
JMPGIF_V2
GIF_V1:CALLCLR_ALL;查看是否有關(guān)機(jī)標(biāo)記,有則把顯示緩沖區(qū)清0
JMPRET1
GIF_V2:MOV3AH,#0CH;G13的數(shù)據(jù)數(shù)據(jù)輸入(點(diǎn)亮裝析圖標(biāo))
MOV3BH,#111111B
JNBSTA_DATA,GIF_V9;開機(jī)初始化時(shí)候不顯示頻譜
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;頻譜輸入;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVR0,#22H;顯示頻譜時(shí)先把舊顯示數(shù)據(jù)清空
MOVR1,#8
GIF_V3:MOV@R0,#0
INCR0
DJNZR1,GIF_V3
V3_0:MOVA,DP_MODE;頻譜模式的轉(zhuǎn)換
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;是信號(hào)頻譜則轉(zhuǎn)相關(guān)處理
MOVR0,#29H;是自動(dòng)頻譜轉(zhuǎn)相關(guān)處理
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數(shù)據(jù)輸入(顯示頻譜)
MOVR1,#AD_SIM1
MOVR2,#4;-----------一個(gè)循環(huán)輸入2個(gè)字節(jié),4次剛好把8個(gè)緩沖區(qū)數(shù)據(jù)處理完畢
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;開機(jī)音量自跑過(guò)程中不顯示頻譜,把G1-G4數(shù)據(jù)清空(!!!!!!!!!)
MOV23H,#60H;留下裝惜條和顯示最低位頻譜(20H+40H)
MOV24H,#0
MOV25H,#20H;顯示最低位頻譜
MOV26H,#0
MOV27H,#20H;顯示最低位頻譜
MOV28H,#0
MOV29H,#60H;留下裝惜條和顯示最低位頻譜(20H+40H)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;跑過(guò)場(chǎng)字幕;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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;調(diào)用左移一位子程序
INCGIF_LONG;動(dòng)畫字幕長(zhǎng)度
MOVA,GIF_LONG
CJNEA,#23,C5_1;跑23步后結(jié)束
MOVGIF_LONG,#0
MOVGIF_SIGN,#2;開機(jī)序幕結(jié)束,SIGN=2
GIF_A1:JMPRET1
;;-----------------------------------------------------------------------------------------------
;;-----------------------------------------------------------------------------------------------
GIF_2:MOVA,GIF_SIGN;;;;;;;;;--------------------------顯示帶功能的數(shù)值,如VOL,BASS,ECHO等
CJNEA,#2,GIF_X1
MOVR0,#2CH;G6-G12字母區(qū)數(shù)據(jù)前先把該處理區(qū)的數(shù)據(jù)清空免得重疊
MOVR1,#14
GIF_2X:MOV@R0,#0
INCR0
DJNZR1,GIF_2X
GIF_2A:INCGIF_TIME1;GIF_SIGN=2的持續(xù)時(shí)間
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的顯示緩沖區(qū)數(shù)據(jù)
CJNER7,#0,GIF_C
MOVDPTR,#TAB4;----------主音量顯示(NO1)
CALLGIF_DIG4;----------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,MAIN_DATA;----------主音量分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(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的控制信號(hào)
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;-----------調(diào)用7位顯示數(shù)據(jù)(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;----------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,MVOL_DATA;----------MVOL音量分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(G8-G6的顯示)
JMPRET1
GIF_G:CJNER7,#4,GIF_H
MOVDPTR,#TAB12;----------MECHO顯示(NO6)
CALLGIF_DIG4;----------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,ECHO_DATA;----------ECHO分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(G8-G6的顯示)
JMPRET1
GIF_H:CJNER7,#5,GIF_I
MOVDPTR,#TAB14;----------DELAY顯示(NO7)
CALLGIF_DIG4;----------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,DELAY_DATA;----------DELAY分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(G8-G6的顯示)
JMPRET1
GIF_I:CJNER7,#6,GIF_J
MOVDPTR,#TAB8;----------SL顯示(NO8)
CALLGIF_DIG4;---------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,SURL_DATA;----------SL音量分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(G8-G6的顯示)
JMPRET1
GIF_J:CJNER7,#7,GIF_K
MOVDPTR,#TAB9;----------SR顯示(NO9)
CALLGIF_DIG4;---------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,SURR_DATA;----------SUR音量分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(G8-G6的顯示)
JMPRET1
GIF_K:CJNER7,#8,GIF_L
MOVDPTR,#TAB11;---------CEN顯示(NO10)
CALLGIF_DIG4;---------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,CEN_DATA;----------CEN音量分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(G8-G6的顯示)
JMPRET1
GIF_L:CJNER7,#9,GIF_M
MOVDPTR,#TAB10;----------BW顯示(NO11)
CALLGIF_DIG4;---------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,BW_DATA;----------BW音量分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(G8-G6的顯示)
JMPRET1
GIF_M:CJNER7,#11,GIF_N
MOVDPTR,#TAB15;----------DISP顯示(NO12)
CALLGIF_DIG4;---------調(diào)用高4位顯示(G12-G9的顯示)
MOVDPTR,#TAB3
MOVA,DSP_DATA;----------DSP分解
CALLGIF_DG3A;----------調(diào)用低3位顯示數(shù)據(jù)(G8-G6的顯示)
JMPRET1
GIF_N:CJNER7,#15,GIF_O;(NO13)
MOVDPTR,#TAB22
JNBMUTE_DATA,GIF_N1;不是靜音狀態(tài)不顯示靜音,顯示主音量值
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
;++++++++++++++++++++++++顯示緩沖區(qū)清空子程序++++++++++++++++++++++++++++
CLR_ALL:MOVR2,#26;把顯示緩沖區(qū)共28個(gè)單元數(shù)值清0
MOVR1,#22H
DES2:MOV@R1,#0
INCR1
DJNZR2,DES2
RET
;+++++++++++++++++++++++++G12-G67位字母左移子程序;++++++++++++++++++++++
GIF_LEFT:MOV39H,37H;-------------------;G11轉(zhuǎn)G12;左移一位子程序
MOV38H,36H;
MOV37H,35H;-------------------;G10轉(zhuǎn)G11
MOV36H,34H
MOV35H,33H;-------------------;G9轉(zhuǎn)G10
MOV34H,32H
MOV33H,31H;-------------------;G8轉(zhuǎn)G9
MOV32H,30H
MOV31H,2FH;-------------------;G7轉(zhuǎn)G8
MOV30H,2EH
MOV2FH,2DH;-------------------;G6轉(zhuǎn)G7
MOV2EH,2CH
MOVA,GIF_LONG;;更新最低位數(shù)值
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位數(shù)值輸入程序A;++++++++++++++++++++++++++++++++
GIF_DG3A:MOVDIV_16,A
CALLDIV10
MOVA,DISP_H;輸入個(gè)位顯示數(shù)值到顯示緩沖區(qū)(G8)
RLA
MOVCA,@A+DPTR
MOV2FH,A
MOVA,DISP_H
RLA
INCA
MOVCA,@A+DPTR
MOV2EH,A
MOVA,DISP_L;輸入個(gè)位顯示數(shù)值到顯示緩沖區(qū)(G8)
RLA
MOVCA,@A+DPTR
MOV2DH,A
MOVA,DISP_L
RLA
INCA
MOVCA,@A+DPTR
MOV2CH,A
RET
;++++++++++++++++++++++++G6-G8低3位數(shù)值輸入程序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個(gè)顯示緩沖區(qū),即G6-G12的顯示區(qū)間
MOVR2,#0;DPTR指針
MOVR0,#39H
DIG7_1:MOVA,R2
MOVCA,@A+DPTR
MOV@R0,A
DECR0
INCR2
DJNZR1,DIG7_1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中斷部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中斷部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AD模擬值運(yùn)算;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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(調(diào)節(jié)該參數(shù)的另一功能是可以使顯示刷新時(shí)間改變)
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檢測(cè)周期+1
JNBAD_IN,AD_1_1;檢測(cè)到為低電平,AD數(shù)據(jù)不+1
INCAD_TEM;檢測(cè)到為高電平,AD數(shù)據(jù)不+1
AD_1_1:MOVR3,AD_CYC
CJNER3,#13,AD_RET;檢測(cè)周期為13次
MOVAD_CYC,#0
MOVAD_DATA1,AD_TEM
MOVAD_SIGN,#0;AD數(shù)據(jù)檢測(cè)結(jié)束,AD_SIGN置0
AD_RET:POPPSW
POPACC
RETI
NOP
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PT16311讀寫程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WR_VFD:
CLRPT6311_STB;寫入一組8位數(shù)據(jù)
MOVA,#70H;設(shè)置為正常工作,地址增量,寫顯示數(shù)據(jù)模式
CALLOUTDATA
SETBPT6311_STB
NOP
NOP
CLRPT6311_STB
MOVA,DISP_INDEX;設(shè)置寫入地址指針
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
ADDA,#0C0H;修正
CLRC
CALLOUTDATA;
MOVR1,DISP_BUFFER;把顯示緩沖區(qū)數(shù)據(jù)寫入PT16311
WR_VFD1:MOVA,@R1
CALLOUTDATA
INCDISP_BUFFER
INCDISP_INDEX
MOVA,DISP_INDEX
CJNEA,#26,WR_QUT;;掃描完13列后PT6311片內(nèi)地址指針復(fù)0(每列需要2個(gè)數(shù)據(jù)緩沖區(qū)數(shù)據(jù))
MOVDISP_BUFFER,#22H;顯示緩沖區(qū)首址復(fù)位
MOVDISP_INDEX,#0H;片內(nèi)地址指針復(fù)位
WR_QUT:SETBPT6311_STB
NOP
NOP
JMPRUN4_1
OUTDATA:MOVR0,#8;寫入一個(gè)字節(jié)子程序
SETBPT6311_DATA
NOP
W1:CLRPT6311_CLK
RRCA
MOVPT6311_DATA,C
SETBPT6311_CLK;時(shí)鐘上升沿寫入數(shù)據(jù)
DJNZR0,W1
RET
START_VFD:CLRPT6311_STB
MOVA,#0CH;13位15段
CALLOUTDATA;輸入一組數(shù)據(jù)
SETBPT6311_STB
RET
BRIGHT:CLRPT6311_STB;設(shè)置亮度子程序14/16
MOVA,#0BDH
CALLOUTDATA
SETBPT6311_STB
RET
INDATA:MOVR6,#8;讀入一個(gè)字節(jié)子程序(讀鍵盤)
SETBPT6311_DATA;令PT6311_DATA接口有效
INDATA1:SETBPT6311_CLK;時(shí)鐘的下降沿讀出數(shù)據(jù)(??)
CLRPT6311_CLK;讀出一個(gè)位
MOVC,PT6311_DATA;讀出的數(shù)據(jù)暫存位積存器C
RRCA;位數(shù)據(jù)入ACC
DJNZR6,INDATA1
RET
;;------------------------------------------------------------------
RD_KEY:MOVR1,#KEY_CELL;讀鍵值子程序
MOVR2,#06H;要讀入的鍵值單元數(shù)為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;無(wú)按鍵按下退出
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;無(wú)按鍵按下鍵值清0
RET3:JMPRUN5_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;進(jìn)制轉(zhuǎn)換子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
DIV10:MOVA,DIV_16;十六進(jìn)轉(zhuǎn)十進(jìn)制子程序
MOVB,#100
DIVAB
MOVA,B
MOVB,#10
DIVAB
MOVDISP_H,A;把十位數(shù)值存入高位顯示緩沖區(qū)
MOVDISP_L,B;把個(gè)位數(shù)值存入低位顯示緩沖區(qū)
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;帶功能復(fù)合鍵跳過(guò)單鍵處理(KEY_NUM=9,1,5是功能復(fù)合鍵)
JMPDELAY_2
DELAY_0:CJNEA,#1,DELAY_1
JMPDELAY_2
DELAY_1:CJNEA,#5,DELAY_3
DELAY_2:MOVA,KEYNUM_SAVE;=====================連發(fā)/單發(fā)的原理=============================
CJNEA,KEY_NUM,DELAY_3;如果檢測(cè)到連續(xù)兩次都不是同一鍵按下的,執(zhí)行該按鍵的功能的處理
JMPOUT;如果檢測(cè)到連續(xù)兩次都是同一鍵按下的,不執(zhí)行該按鍵的功能處理
DELAY_3:CALLBIJIAO;調(diào)用按鍵處理程序(要隔2x8x23ms才調(diào)用一次按鍵比較程序,連發(fā)一次大約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;調(diào)用優(yōu)先比較程序,當(dāng)在輸入狀態(tài)或等響顯示狀態(tài)下時(shí),按下UP鍵會(huì)把VOL值優(yōu)先調(diào)用提升
CALLVOL_UP
JMPRET4
BA_4:CJNER6,#10,RET9
CALLFRIST;調(diào)用優(yōu)先比較程序,當(dāng)在輸入狀態(tài)或等響顯示狀態(tài)下時(shí),按下UP鍵會(huì)把VOL值優(yōu)先調(diào)用提升
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;主音量復(fù)合鍵切換
CJNER5,#0,MUISE1
MOVSYS_SIGN,#1;設(shè)置為低音
MOVDSP_DATA,#0
RET
MUISE1:CJNER5,#1,MUISE2
MOVSYS_SIGN,#2;設(shè)置為高音
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;總音量調(diào)節(jié),上限為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;低音量調(diào)節(jié),上限為14
RM3:MOVA,BASS_DATA
INCA
CJNEA,#15,VOL_2A
RET
VOL_2A:MOVBASS_DATA,A
RET
VOL3:CJNER5,#2,VOL4;高音量調(diào)節(jié),上限為14
RM4:MOVA,TR_DATA
INCA
CJNEA,#15,VOL_3A
RET
VOL_3A:MOVTR_DATA,A
RET
VOL4:CJNER5,#3,VOL5;卡拉OK量調(diào)節(jié),上限為16
RM5:MOVA,MVOL_DATA
INCA
CJNEA,#17,VOL_4A
RET
VOL_4A:MOVMVOL_DATA,A
RET
VOL5:CJNER5,#4,VOL6;ECHO量調(diào)節(jié),上限為16
RM6:MOVA,ECHO_DATA
INCA
CJNEA,#17,VOL_5A
RET
VOL_5A:MOVECHO_DATA,A
RET
VOL6:CJNER5,#5,VOL7;DELAY調(diào)節(jié)
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調(diào)節(jié),上限為64
RM7:MOVA,SURL_DATA
INCA
CJNEA,#65,VOL_7A
RET
VOL_7A:MOVSURL_DATA,A
RET
VOL8:CJNER5,#7,VOL9;SURR調(diào)節(jié),上限為64
RM8:MOVA,SURR_DATA
INCA
CJNEA,#65,VOL_8A
RET
VOL_8A:MOVSURR_DATA,A
RET
VOL9:CJNER5,#8,VOL10;CEN調(diào)節(jié),上限為64
RM9:MOVA,CEN_DATA
INCA
CJNEA,#65,VOL_9A
RET
VOL_9A:MOVCEN_DATA,A
RET
VOL10:CJNER5,#9,VOL_11;SW調(diào)節(jié),上限為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;總音量調(diào)節(jié),下限為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;低音量調(diào)節(jié),下限為0
RM12:MOVA,BASS_DATA
DECA
CJNEA,#255,VL_2A
RET
VL_2A:MOVBASS_DATA,A
VL3:CJNER5,#2,VL4;高音量調(diào)節(jié),下限為0
RM13:MOVA,TR_DATA
DECA
CJNEA,#255,VL_3A
RET
VL_3A:MOVTR_DATA,A
VL4:CJNER5,#3,VL5;卡拉OK量調(diào)節(jié),下限為0
RM14:MOVA,MVOL_DATA
DECA
CJNEA,#255,VL_4A
RET
VL_4A:MOVMVOL_DATA,A
VL5:CJNER5,#4,VL6;ECHO量調(diào)節(jié),下限為0
RM15:MOVA,ECHO_DATA
DECA
CJNEA,#255,VL_5A
RET
VL_5A:MOVECHO_DATA,A
VL6:CJNER5,#5,VL7;DELAY調(diào)節(jié)
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調(diào)節(jié),下限為0
RM16:MOVA,SURL_DATA
DECA
CJNEA,#255,VL_7A
RET
VL_7A:MOVSURL_DATA,A
VL8:CJNER5,#7,VL9;SURR調(diào)節(jié),下限為0
RM17:MOVA,SURR_DATA
DECA
CJNEA,#255,VL_8A
RET
VL_8A:MOVSURR_DATA,A
VL9:CJNER5,#8,VL10;CEN調(diào)節(jié),下限為0
RM18:MOVA,CEN_DATA
DECA
CJNEA,#255,VL_9A
RET
VL_9A:MOVCEN_DATA,A
VL10:CJNER5,#9,VL11;SW調(diào)節(jié),下限為0
RM19:MOVA,BW_DATA
DECA
CJNEA,#255,VL_10A
RET
VL_10A:MOVBW_DATA,A
VL11:RET
;;-------------------------操作優(yōu)先排位子程序--------------------------------
FRIST:MOVA,SYS_SIGN
CJNEA,#17,FRI_2;處在INPUT顯示模式下,按下加減鍵會(huì)把VOL操作排在第一位
MOVSYS_SIGN,#0
FRI_2:CJNEA,#13,FRI_3;處在5.1顯示模式下,按下加減鍵會(huì)把VOL操作排在第一位
MOVSYS_SIGN,#0
FRI_3:CJNEA,#12,FRI_4;處在2.0顯示模式下,按下加減鍵會(huì)把VOL操作排在第一位
MOVSYS_SIGN,#0
FRI_4:CJNEA,#14,FRI_5;處在LOUND顯示模式下,按下加減鍵會(huì)把VOL操作排在第一位
MOVSYS_SIGN,#0
FRI_5:CJNEA,#15,FRI_6;處在MUTE顯示模式下,按下加減鍵會(huì)把VOL操作排在第一位
MOVSYS_SIGN,#0
CLRMUTE_DATA;順便把靜音也關(guān)閉了
FRI_6:RET
;;--------------------------無(wú)按鍵按下自動(dòng)復(fù)位子程序----------------------------
;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預(yù)置為"INPUT狀態(tài)"
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協(xié)議(PT6311);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;;;;;;;;;;;;;;;;;;;;;;I2C協(xié)議;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;啟動(dòng)子程序;;;;;;;;;;;;;;;;;;;;;;
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
;;;;;;;;;;;;;;;;;;接收一個(gè)應(yīng)答位;;;;;;;;;;;;;;;;;;;;;;;;;
ACKI:SETBPT2313_CLK
NOP
NOP
MOVC,PT2313_DATA
CLRPT2313_CLK
RET
;;;;;;;;;;;;;;;;;;;發(fā)送一個(gè)字節(jié)子程序;;;;;;;;;;;;;;;;;
SEND:MOVR0,#08H;要發(fā)送的數(shù)據(jù)字節(jié)為8
SEND0:RLCA
MOVPT2313_DATA,C
NOP
NOP
SETBPT2313_CLK
NOP
NOP
CLRPT2313_CLK
NOP
NOP
DJNZR0,SEND0
SETBPT2313_DATA
RET
;;;;;;;;;;;;;;;;;;;;發(fā)送n個(gè)字節(jié);;;;;;;;;;;;;;;;;;;;;;;;;;;
OUT_DA:LCALLSTART
MOVA,#88H;送寫控制字節(jié)
LCALLSEND
LCALLACKI
JCQUIT_1
OUT1:MOVA,MTD1
CALLSEND
CALLACKI
JCQUIT_1
CALLSTOP
RET
QUIT_1:CALLSTOP
LJMPOUT_DA;重發(fā)
TIME:PUSHACC
PUSHPSW
SETBRS0
MOVA,REM_SIGN
CJNEA,#03H,EXIT1;不是連發(fā)的定時(shí)溢出標(biāo)記清0
INCR1;執(zhí)行一次遙控按鍵處理后,T0延事超過(guò)60ms,R1+1
INCR2;T0中斷次數(shù)存儲(chǔ)單元,當(dāng)T0中斷3次(每次60ms),本次遙控結(jié)束
MOVA,R2
SUBBA,#3;判斷在250ms內(nèi)有無(wú)連發(fā)碼出現(xiàn)
JNCEXIT0;無(wú)則清0
MOVTH0,#15H;定時(shí)值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;初始化原始數(shù)據(jù)
MOVR0,#REM_FIX;遙控?cái)?shù)據(jù)接收的首址
MOVR1,#0;
MOVR2,#0;R2是連發(fā)溢出標(biāo)記,當(dāng)T0延時(shí)60ms*3后仍未檢測(cè)到有遙控中斷,本次遙控結(jié)束
MOVR3,#8;每個(gè)字節(jié)的位數(shù)
MOVR6,#0;數(shù)據(jù)對(duì)比單元
MOVR7,#4;要接收的字節(jié)數(shù)
MOVREM_SIGN,#01H;建立標(biāo)記01
JMPINT_OFF
INT_2:CJNER5,#01H,INT_3;起始碼和結(jié)果碼的判斷
MOVA,#30H;
MOVR6,TH0
SUBBA,R6
JNCERR_OUT;啟動(dòng)碼+結(jié)果碼<12.55ms退出(忽略TL0的值)
MOVA,#039H
SUBBA,R6
JCERR_OUT;啟動(dòng)碼+結(jié)果碼〉14.6ms推出(忽略TL0的值)
MOVREM_SIGN,#02H;建立標(biāo)記02
JMPINT_OFF
INT_3:CJNER5,#02H,INT_4;(oldkey_out)
MOVA,#03H
MOVR6,TH0
SUBBA,R6;R6內(nèi)存TH0的值
JNCERR_OUT;周期<1ms退出
MOVA,#0BH
SUBBA,R6
JCERR_OUT;周期>2.69ms退出
MOVA,#6H;輸入檢測(cè)周期1.6ms用來(lái)判斷1或0
SUBBA,R6;
MOVA,@R0;
RRCA;存入一位數(shù)值
MOV@R0,A
DJNZR3,INT_OFF
INT_3_1:INCR0
MOVR3,#08H
DJNZR7,INT_OFF
MOVA,REM_KEY1
CPLA
CJNEA,REM_KEY,ERR_OUT;正反碼比較,錯(cuò)則退
MOVREM_TIME,#8;
;----------------------------------------------------------
INT_4:;
;----------------------------------------------------------
KY_OUT:MOVA,REM_SIGN
CJNEA,#3,ODD;判斷遙控是出于第一次按鍵觸發(fā)還是處于連發(fā)階段,連發(fā)階段的標(biāo)記是REM_SIG=3
MOVA,R1;連發(fā)最小時(shí)間判斷,過(guò)濾掉<60ms的脈沖,因<60ms的脈沖不會(huì)令T0溢出
JZNORUN
ODD:INCREM_TIME;每連發(fā)一次連發(fā)記憶單元+1
NORUN:MOVA,REM_TIME;因?yàn)樘^(guò)上一步IREM_TIME+1,所以不會(huì)執(zhí)行BIJIAO(不夠減)
SUBBA,#5;連發(fā)5次調(diào)用一次按鍵處理程序
JNCGO_0
JMPGO_1
GO_0:MOVREM_TIME,#00H;每調(diào)用一次按鍵處理子程序連發(fā)記憶單元清0
JMPBIJIAO2
BI_RET:MOVR1,#00
MOVREM_SIGN,#03H;執(zhí)行一次按鍵處理后建立遙控標(biāo)記#03
GO_1:SETBTR0
JMPINT_OFF1
ERR_OUT:MOVREM_SIGN,#00H;報(bào)錯(cuò)標(biāo)記清0
LJMPINT_OFF1;報(bào)錯(cuò)返回不啟動(dòng)定時(shí)器
INT_OFF:SETBTR0
INT_OFF1:MOVTH0,#00H
MOVTL0,#00H
SETBEX0
MOVDPL,MTD5
MOVDPH,MTD4
MOVPSW,MTD3
MOVA,MTD2
MOVR4,#0
MOVR5,#0;確定遙控結(jié)束后的參數(shù)復(fù)位時(shí)間
RETI
NOP
NOP
BIJIAO2:MOVGIF_SIGN,#2;動(dòng)畫進(jìn)程置2,讓他顯示功能內(nèi)容
MOVGIF_LONG,#0
MOVR4,REM_KEY
CJNER4,#2,BI1
CALLRM1;總音量調(diào)節(jié)+
MOVSYS_SIGN,#0
BI1:CJNER4,#1,BI2
CALLRM2;總音量調(diào)節(jié)-
MOVSYS_SIGN,#0
BI2:CJNER4,#56H,BI3
MOVDSP_DATA,#0
CALLRM3;BASS+
MOVSYS_SIGN,#1;調(diào)整顯示參數(shù)
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狀態(tài)下啟動(dòng)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連發(fā)調(diào)用無(wú)效(REM_SIGN=#3是連發(fā)階段)
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狀態(tài)下聲道模式不能切換
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連發(fā)調(diào)用無(wú)效(REM_SIGN=#3是連發(fā)階段)
CJNEA,#3,BI38A
JMPRET6
BI38A:JNBLOUND_DATA,LOU1
CLRLOUND_DATA
JMPRET6
LOU1:SETBLOUND_DATA
BI39:CJNER4,#4FH,BI40
MOVA,REM_SIGN;DISP_MODE連發(fā)調(diào)用無(wú)效(REM_SIGN=#3是連發(fā)階段)
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模式保存起來(lái)
JMPRET6
BI40:CJNER4,#04H,BI40B;POWER
MOVA,REM_SIGN;POWER連發(fā)調(diào)用無(wú)效(REM_SIGN=#3是連發(fā)階段)
CJNEA,#3,BI40A
JMPRET6
BI40A:JNBPOWER,destine;讀預(yù)設(shè),開機(jī)
CLRPOWER;
SETBMUTE_DATA;收到關(guān)機(jī)指令后開靜音
JMPRET6
BI40B:JMPBI41
DESTINE:;*******調(diào)用預(yù)設(shè)值********
SETBPOWER;啟動(dòng)電源標(biāo)記(只有但POWER=1,才可令MUTE=0關(guān)閉靜音和關(guān)閉顯示,關(guān)閉顯示可以清空顯示緩沖)
MOVGIF_SIGN,#1;初始化動(dòng)畫進(jìn)程
MOVGIF_TIME1,#0;動(dòng)畫跑字速度間隔時(shí)間清0
MOVGIF_LONG,#0;動(dòng)畫字幕長(zhǎng)度清0
MOVAD_SIM1,#0
MOVAD_SIM2,#0
MOVAD_SIM3,#0
MOVAD_SIM4,#0
MOVAD_TEM,#0;電平臨時(shí)數(shù)據(jù)
MOVAD_SIGN,#0;AD轉(zhuǎn)換進(jìn)程標(biāo)記(=0,C放電=1,測(cè)量數(shù)據(jù)=2,測(cè)量結(jié)束)
MOVAD_TIME,#0
MOVDP_MODE,#0;電平顯示模式
MOVDP_NUM,#0;自動(dòng)電平的當(dāng)前進(jìn)度格數(shù)
MOVDP_SAVE,#0
CLRSTA_DATA;STA_DATA=0,表示第一次開機(jī)STA_DATA=0,表示開機(jī)初始化結(jié)束
CLRAUTO_SIGN;AUTO_SIGN=0,頻譜自走AUTO_SIGN=1,顯示AD
MOVAUTO_NUM,#0
MOVKEY_DELAY,#129;按鍵連發(fā)執(zhí)行間隔時(shí)間
MOVTIME1,#0;總時(shí)間刷新
MOVINPUT_DATA,#1;預(yù)置#1,CD/VCD選通;(CD/VCD=1,TUNER=2,AC3=3)
MOVBASS_DATA,#8;
MOVTR_DATA,#8
MOVMAIN_DATA,#0
MOVBAL_DATA,#4;平衡設(shè)置
MOVDSP_DATA,#0;預(yù)置為DSP關(guān)閉
MOVCH_DATA,#0;預(yù)置為5.1CH
MOVMVOL_DATA,#9
MOVECHO_DATA,#15
MOVDELAY_DATA,#25;卡拉OK延時(shí)時(shí)間預(yù)設(shè)為250mS
CLRM_DELAY1
CLRM_DELAY2
MOVSURL_DATA,#0
MOVSURR_DATA,#0
MOVCEN_DATA,#0
MOVBW_DATA,#0
CLRMUTE_DATA;關(guān)靜音
CLRLOUND_DATA;關(guān)等響
MOVSYS_SIGN,#0;開機(jī)后顯示主音量
MOVDISP_BUFFER,#22H;顯示緩沖區(qū)首址復(fù)位
MOVDISP_INDEX,#0H;片內(nèi)地址指針復(fù)位
MOVR2,#26;把顯示緩沖區(qū)共28個(gè)單元數(shù)值清0
MOVR1,#22H
DES1:MOV@R1,#0
INCR1
DJNZR2,DES1
JNBBOOT_STR,BI40C;!!!!!!!!!!1檢測(cè)是第一次開機(jī)讀預(yù)置還是遙控讀預(yù)置,判斷返回地址
BI41:JMPRET6
BI40C:SETBBOOT_STR
RET
RET7:MOVSYS_SIGN,#11;設(shè)置對(duì)應(yīng)顯示標(biāo)記
RET6:;每調(diào)用一次BIJIAO2,則調(diào)用一次芯片數(shù)據(jù)輸入程序
;;-----------------------------把數(shù)據(jù)輸入到PT2313/M62429芯片中------------------------------------------
DATA_IN:CLRTR1;PT2313數(shù)據(jù)寫入
MAN_INPUT:MOVA,INPUT_DATA;(CD/VCD=1,TUNER=2,AC3=3)
MOVDPTR,#TABLE9
MOVCA,@A+DPTR
JNBLOUND_DATA,MM1;ACC.2對(duì)應(yīng)PT2313的LOUND位
CLRACC.2
JMPMM2
MM1:SETBACC.2
MM2:MOVMTD1,A;存入INPUT,增益,等響度關(guān)
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;根據(jù)DSP_DATA內(nèi)保存的數(shù)據(jù)判斷是輸入DSP數(shù)據(jù)或是手動(dòng)調(diào)節(jié)數(shù)據(jù)
JZBASS1;DSP_DATA模式=0說(shuō)明DSP關(guān)閉,跳到BASS2
MOVA,DSP_DATA;DSP模式開啟動(dòng),輸入DSP模式數(shù)據(jù)
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;根據(jù)DSP_DATA內(nèi)保存的數(shù)據(jù)判斷是輸入DSP數(shù)據(jù)或是手動(dòng)調(diào)節(jié)數(shù)據(jù)
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;輸入音量數(shù)據(jù)
CALLML_1C;輸入結(jié)尾符號(hào)(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;輸入結(jié)尾符號(hào)(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;輸入結(jié)尾符號(hào)(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上升沿串入數(shù)據(jù)
NOP
NOP
CLRM62429_DA
CLRM62429_CK
RET
ML_1B:RLCA;串入音量數(shù)據(jù)
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上升沿串入數(shù)據(jù)
NOP
NOP
CLRM62429_DA
CLRM62429_CK1
RET
ML_2B:RLCA;串入音量數(shù)據(jù)
MOVM62429_DA,C
SETBM62429_CK1
NOP
NOP
CLRM62429_DA
CLRM62429_CK1
NOP
NOP
DJNZR6,ML_2B
RET
ML_2C:SETBC;結(jié)尾
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上升沿串入數(shù)據(jù)
NOP
NOP
CLRM62429_DA3
CLRM62429_CK3
RET
ML_3B:RLCA;串入音量數(shù)據(jù)
MOVM62429_DA3,C
SETBM62429_CK3
NOP
NOP
CLRM62429_DA3
CLRM62429_CK3
NOP
NOP
DJNZR6,ML_3B
RET
ML_3C:SETBC;結(jié)尾
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;數(shù)據(jù)表格;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;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片內(nèi)積存器地址)
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;(數(shù)字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;(點(diǎn)狀頻譜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;(點(diǎn)狀頻譜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,等響關(guān),通道選擇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模式設(shè)定,共8種,該表用在PT2313查值)
TABLE16:DB7,8,7,8,11,7,3,3
END