?? my_pt2314.asm
字號:
BUFF23 EQU 30h
;BUFF24 EQU 31H
DISP0 EQU 32h
DISP1 EQU 33h
BASS_TONE EQU 34H ;低音控制緩沖
TREBLE_TONE EQU 35H ;高音控制緩沖
M_VOL EQU 36H ;主音量控制緩沖
IN_BUFF EQU 37H ;輸入選擇緩存
SP_L_BUFF EQU 38H ;平衡選擇緩存
SP_R_BUFF EQU 39H ;平衡選擇緩存
;--------------------------------------
DISP_BUFF EQU 3BH ;
PT2314_MSB EQU 3DH ;發送PT2314數高位
;PT2314_LSB EQU 3EH ;發送PT2314數低位
PT2314_ADD EQU 88H ;PT2314的I2C地址為88H
B_ADD EQU 01H ;低音記憶地址
T_ADD EQU 02H ;高音記憶地址
VOL_ADD EQU 03H ;音記憶地址
SP_L_ADD EQU 04H ;低音記憶地址
SP_R_ADD EQU 05H ;高音記憶地址
IN_ADD EQU 06H
MUTE_BIT BIT 20H.1
RE_KEY BIT 20H.2
IR_SET_BIT BIT 20H.3
;POWER_BIT BIT P3.7
;************************************************************
ORG 0000H
AJMP STAR
;----------------------------------
ORG 0003H
JMP REMOTE
;----------------------------------
ORG 001BH
JMP TIME0
;---------------------------------
ORG 0030H
;--------------------------------
STAR:
MOV P0, #0ffH
MOV P1, #0FFH
MOV P2, #0ffH
MOV P3, #0ffH
;-------------------------------
MOV M_VOL, #43 ;開機時默認音量為第-43級.(一共0-63級)
;MOV SP_R_BUFF,#0
;MOV SP_L_BUFF,#0
;-----------------------------
MOV SP, #50H
;-----------------------------
mov tmod, #10h ;設定時器1工作方式2
MOV TH1, #0H
MOV TL1, #0H
setb ea ;開中斷
SETB et1 ;開定時中斷
setb tr1 ;開啟計數器
SETB IT0 ;設定INT0觸發方式,邊沿觸發.
SETB EX0 ;INT0請求中斷
setb rs0 ;選擇寄存器組
clr rs1
SETB IR_SET_BIT
;-------------------------------------
LCALL YS4
NOP
LCALL YS4
;*******************************
LCALL LCM_RESET ;初始化LCD,應在程序開頭
;*******************************
JMP KEY4X4;STAR_KEY
PT2314_START:
;------------------------------
LCALL YS4
NOP
LCALL YS4 ;初始化PT2322
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;讀24C08內數值到PT2322
LCALL DELAY10
MOV A,#B_ADD
LCALL RD24
MOV BASS_TONE,A
LCALL CTRL_SHUI
ADD A,#60H
MOV PT2314_MSB,A
LCALL PT2314_WR
LCALL DELAY10
;-----------------------------------
MOV A,#T_ADD
LCALL RD24
MOV TREBLE_TONE,A
LCALL CTRL_SHUI
ADD A,#70H
MOV PT2314_MSB,A
LCALL PT2314_WR
LCALL DELAY10
;-----------------------------------
MOV A,#SP_L_ADD
LCALL RD24
MOV SP_L_BUFF,A
ADD A,#0C0H
LCALL WR_2314_BALANCE
LCALL DELAY10
;-----------------------------------
MOV A,#SP_R_ADD
LCALL RD24
MOV SP_R_BUFF,A
ADD A,#0E0H
LCALL WR_2314_BALANCE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;默認音量
MOV A,M_VOL
MOV PT2314_MSB,A
LCALL PT2314_WR
LCALL DELAY10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,#IN_ADD
LCALL RD24
MOV IN_BUFF,A
LCALL INSW
LCALL DIS_VOL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN:
JMP KEY
AJMP main
;-----------------------------
;10毫秒延時子程序
DELAY10:
MOV R4,#10
D10:
MOV R5,#248
DJNZ R5,$
DJNZ R4,D10
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;判斷按鍵執行
OPREAT:
MOV A,KEYBUFF
MOV DPTR,#KEY_TAB
MOV B,#2
MUL AB
JMP @A+DPTR
RET
;---------------------------------------------
KEY_TAB:
AJMP KK1 ;+vol
AJMP KK2 ;-vol
AJMP KK3 ;+bass
AJMP KK4 ;-bass
AJMP KK5 ;+tr
AJMP KK6 ;-tr
AJMP KK7 ;+mid
AJMP KK8 ;-mid
AJMP KK9 ;set_up
AJMP KK10 ;set_down
AJMP KK11 ;set_sel
AJMP KK12 ;up_audio
AJMP KK13 ;down_audio
AJMP KK14 ;up_in
AJMP KK15 ;down_in
AJMP KK16
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KK1:
LCALL SET_M_VOL_DOWN
RET
;-------------------------------------------
KK2:
LCALL SET_M_VOL_UP
RET
;----------------------------------------
KK3:
LCALL SET_BASS_VOL_DOWN
RET
;----------------------------------------
KK4:
LCALL SET_BASS_VOL_UP
RET
;---------------------------------------
KK5:
LCALL SET_TR_VOL_UP
RET
;---------------------------------------
KK6:
LCALL SET_TR_VOL_DOWN
RET
;---------------------------------------
KK7:
LCALL BALANCE_L
RET
;---------------------------------------
KK8:
LCALL BALANCE_R
RET
;---------------------------------------
KK9:
MOV IN_BUFF,#1
LCALL INSW
RET
;--------------------------------------
KK10:
MOV IN_BUFF,#2
LCALL INSW
RET
;-------------------------------------
KK11:
MOV IN_BUFF,#3
LCALL INSW
RET
;-------------------------------------
KK12:
MOV IN_BUFF,#4
LCALL INSW
RET
;------------------------------------
KK13:
CPL MUTE_BIT
LCALL MUTE_ON_OFF
RET
;-----------------------------------
KK14:
;CPL POWER_BIT
RET
;----------------------------------
KK15:
RET
;---------------------------------
KK16:
RET
;***************************************
SET_M_VOL_UP:
CLR MUTE_BIT
LCALL MUTE_OFF
MOV A,M_VOL
CJNE A,#63,MVOL_UP
RET
MVOL_UP:
INC A
MOV M_VOL,A
MOV PT2314_MSB,A
LCALL PT2314_WR
DIS_VOL:
MOV A,#63
SUBB A,M_VOL
LCALL BIN2BCD
LCALL DIS_M_VOL
LCALL DISLCD1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SET_BASS_VOL_UP:
MOV A,BASS_TONE
CJNE A,#14,BA_SHUI
LCALL DDDBAS
RET
BA_SHUI:
INC A
MOV BASS_TONE,A
LCALL CTRL_SHUI
ADD A,#60H
MOV PT2314_MSB,A
LCALL PT2314_WR
LCALL DELAY10
MOV A,BASS_TONE
MOV B,A
MOV A,#B_ADD
LCALL WT24
DDDBAS:
MOV A,BASS_TONE
MOV BUFF23,A
LCALL DIS_BASS_VOL
LCALL DISLCD2
RET
;;;;;;;;;;;;;;;;;
SET_TR_VOL_UP:
MOV A,TREBLE_TONE
CJNE A,#14,TR_SHUI
LCALL DDDTR
RET
TR_SHUI:
INC A
MOV TREBLE_TONE,A
LCALL CTRL_SHUI
ADD A,#70H
MOV PT2314_MSB,A
LCALL PT2314_WR
MOV B,TREBLE_TONE
MOV A,#T_ADD
LCALL WT24
DDDTR:
MOV A,TREBLE_TONE
MOV BUFF23,A
LCALL DIS_TR_VOL
LCALL DISLCD2
RET
;;;;;;;;;;;;;;;;;
SET_M_VOL_DOWN:
CLR MUTE_BIT
LCALL MUTE_OFF
MOV A,M_VOL
CJNE A,#0,MVOL_DN
RET
MVOL_DN:
DEC A
MOV M_VOL,A
MOV PT2314_MSB,A
LCALL PT2314_WR
MOV A,#63
SUBB A,M_VOL
LCALL BIN2BCD
LCALL DIS_M_VOL
LCALL DISLCD1
RET
;;;;;;;;;;;;;;;;;;
SET_BASS_VOL_DOWN:
MOV A,BASS_TONE
CJNE A,#0,BA1_SHUI
LCALL DDDBAS
RET
BA1_SHUI:
DEC A
MOV BASS_TONE,A
LCALL CTRL_SHUI
ADD A,#60H
MOV PT2314_MSB,A
LCALL PT2314_WR
LCALL DELAY10
MOV A,BASS_TONE
MOV B,A
MOV A,#B_ADD
LCALL WT24
MOV A,BASS_TONE
MOV BUFF23,A
LCALL DIS_BASS_VOL
LCALL DISLCD2
RET
;;;;;;;;;;;;;;;;;
SET_TR_VOL_DOWN:
MOV A,TREBLE_TONE
CJNE A,#0,TR1_SHUI
LCALL DDDTR
RET
TR1_SHUI:
DEC A
MOV TREBLE_TONE,A
LCALL CTRL_SHUI
ADD A,#70H
MOV PT2314_MSB,A
LCALL PT2314_WR
MOV B,TREBLE_TONE
MOV A,#T_ADD
LCALL WT24
MOV A,TREBLE_TONE
MOV BUFF23,A
LCALL DIS_TR_VOL
LCALL DISLCD2
RET
;;;;;;;;;;;;;;;;;;;;;;
CTRL_SHUI:
MOV DPTR,#TONG_DATA
MOVC A,@A+DPTR
RET
TONG_DATA:
DB 00H,01H,02H,03H,04H,05H,06H,07H
DB 0EH,0DH,0CH,0BH,0AH,09H,08H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INSW:
INSW1:
MOV A,IN_BUFF
CJNE A,#1,INSW2
MOV A,#0
ADD A,#40H;+11.25
ACALL IN_DATA
LCALL IN_DIS1
RET
INSW2:
;MOV A,IN_BUFF
CJNE A,#2,INSW3
MOV A,#1
ADD A,#40H;
ACALL IN_DATA
LCALL IN_DIS2
RET
INSW3:
;MOV A,IN_BUFF
CJNE A,#3,INSW4
MOV A,#2
ADD A,#40H;
ACALL IN_DATA
LCALL IN_DIS3
RET
INSW4:
;MOV A,IN_BUFF
CJNE A,#4,INSW5
;MOV IN_BUFF,#0
MOV A,#3
ADD A,#40H;
ACALL IN_DATA
LCALL IN_DIS4
RET
INSW5:
;MOV IN_BUFF,#0
RET
IN_DATA:
ACALL WR_2314_BALANCE
MOV A,#IN_ADD
MOV B,IN_BUFF
LCALL WT24
LCALL IN_DIS
RET
;靜音
MUTE_ON_OFF:
JNB MUTE_BIT,MUTE_OFF
MOV A,#0DFH
ACALL WR_2314_BALANCE
MOV A,#0FFH
ACALL WR_2314_BALANCE
LCALL DIS_VOL
LCALL LCD_MUTE
CLR RE_KEY
RET
MUTE_OFF:
MOV A,SP_L_BUFF
ADD A,#0C0H
ACALL WR_2314_BALANCE
MOV A,SP_R_BUFF
ADD A,#0E0H
ACALL WR_2314_BALANCE
LCALL DIS_VOL
SETB RE_KEY
RET
;---------------
BALANCE_L:
MOV A,SP_R_BUFF
CJNE A,#0,BR_1
MOV A,SP_L_BUFF
CJNE A,#31D,BL_11
RET
BR_1:
DEC A
MOV SP_R_BUFF,A
ADD A,#0E0H
ACALL WR_2314_BALANCE
LCALL DIS_BAL_VOL
ACALL SAVE_BAL
RET
BL_11:
INC A
MOV SP_L_BUFF,A
ADD A,#0C0H
ACALL WR_2314_BALANCE
LCALL DIS_BAL_VOL
ACALL SAVE_BAL
RET
;
BALANCE_R:
MOV A,SP_L_BUFF
CJNE A,#0,BL_1
MOV A,SP_R_BUFF
CJNE A,#31D,BR_11
RET
BL_1:
DEC A
MOV SP_L_BUFF,A
ADD A,#0C0H
ACALL WR_2314_BALANCE
LCALL DIS_BAL_VOL
ACALL SAVE_BAL
RET
BR_11:
INC A
MOV SP_R_BUFF,A
ADD A,#0E0H
ACALL WR_2314_BALANCE
LCALL DIS_BAL_VOL
SAVE_BAL:
LCALL DELAY10
MOV A,#SP_L_ADD
MOV B,SP_L_BUFF
LCALL WT24
LCALL DELAY10
MOV A,#SP_R_ADD
MOV B,SP_R_BUFF
LCALL WT24
RET
WR_2314_BALANCE:
MOV PT2314_MSB,A
LCALL PT2314_WR
RET
;------------------------------
;BCD2BIN:
;MOV A,BCD0
;MOV B,#10
;MUL AB
;ADD A,BCD1
;MOV BIN0,A
;RET
;------------------------------
BIN2BCD:
;MOV A,TMP
MOV B,#10
Div AB
MOV DISP0,A
MOV DISP1,B
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIME0: ;定時器0的中斷處理程序
PUSH ACC
PUSH PSW ;將PSW和ACC推入堆棧保護
MOV TH1,#15H
MOV TL1,#0a0H
SETB rs1 ;選擇寄存器組
setb rs0
jb re_key,t_res1
mov r0,#0
mov r1,#0
mov r2,#0
AJMP T_RE
t_res1:
INC R0
CJNE R0,#10,T_RET
MOV R0,#0
CPL P2.3
INC R1
T_RET:
CJNE R1,#60,T_RE
MOV R1,#0
jb re_key,t_res
MOV R0,#0
MOV R1,#0
MOV R2,#0
AJMP T_RE
t_res:
LCALL DIS_VOL
T_RE:
MOV TH1,#15H
MOV TL1,#0a0H
POP PSW
POP ACC
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;更換24C08時初始化24C08
W2408_STAR:
LCALL DELAY10
MOV A,#B_ADD
MOV B,#7
LCALL WT24
LCALL DELAY10
MOV A,#T_ADD
MOV B,#7
LCALL WT24
LCALL DELAY10
MOV A,#SP_L_ADD
MOV B,#0
LCALL WT24
LCALL DELAY10
MOV A,#SP_R_ADD
MOV B,#0
LCALL WT24
LCALL DELAY10
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$INCLUDE (KEY4X4.ASM)
$INCLUDE (LCM1602-4.ASM)
$INCLUDE (REMOTE.ASM)
$INCLUDE (I2C2408.ASM)
$INCLUDE (LCD_DISP.ASM)
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -