📄 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
LOUD_BIT BIT 20H.4
;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
ACALL DELAY10
MOV A,#B_ADD
LCALL RD24
MOV BASS_TONE,A
ACALL CTRL_SHUI
ADD A,#60H
MOV PT2314_MSB,A
LCALL PT2314_WR
ACALL DELAY10
;-----------------------------------
MOV A,#T_ADD
LCALL RD24
MOV TREBLE_TONE,A
ACALL CTRL_SHUI
ADD A,#70H
MOV PT2314_MSB,A
LCALL PT2314_WR
ACALL DELAY10
;-----------------------------------
MOV A,#SP_L_ADD
LCALL RD24
MOV SP_L_BUFF,A
ADD A,#0C0H
LCALL WR_2314_BALANCE
ACALL 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
ACALL 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
;------------------------------
;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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$INCLUDE (KEY4X4.ASM)
$INCLUDE (REMOTE.ASM)
$INCLUDE (PT2314CONU.ASM)
$INCLUDE (LCM1602-4.ASM)
$INCLUDE (LCD_DISP.ASM)
$INCLUDE (I2C2408.ASM)
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -