⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_pt2314.asm

📁 大家看看这个公房控制的软件
💻 ASM
📖 第 1 页 / 共 3 页
字号:
BUFF23 		EQU 	30h
;BUFF24 	EQU 	31H

DISP0 		EQU 	32h
DISP1 		EQU 	33h
		SCL	BIT 	P3.4
		SDA	BIT 	P3.5
KEYBUFF	EQU 3FH
KEY_IO	EQU P2
		RS 	EQU 	P0.0	;LCM_RS_PIN
 		RW 	EQU 	P0.1	;LCM_RW_PIN
 		E  	EQU 	P0.2	;LCM_E_PIN
 		LCM_D 	EQU 	P0	;LCM接口
 		BF 	BIT 	P0.7	;判断LCM是否忙
 		LCD_BIT BIT 	20H.0	;为0写LCM控制,为1写数值
      		LCM_BUFF DATA 	70H	;LCM写缓冲
 		ZLING 	DATA 	45H	;控制缓冲
 		SHUJU 	DATA 	46H	;数值缓冲

REMOTEIN 	BIT  P3.2    ;遥控输入 
ir_code 	data 40H ;操作码
ir_code_R 	data 41h ;操作码反码
ir_ID_code 	data 42h ;用户码
ir_id_code_r 	data 43h ;操作反码
IR_ADDR 	DATA 44H
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
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;判断按键执行
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY4X4:	
MOV	KEY_IO,#11110000B
MOV	A,KEY_IO
CJNE	A,#11110000B,HAVE_KEY
JMP	PT2314_START

STAR_KEY:            
HAVE_KEY:
MOV	KEY_IO,#11111011B
JNB	KEY_IO.7,SVAE24		;K0按下就转到数字设置
JNB   	KEY_IO.6,REMOTE_SEL
JMP	MAIN

SVAE24:	
ACALL	KEYWAIT
LCALL 	W2408_STAR
ACALL	KEYWAIT;_SOTP
JMP	PT2314_START
;RET
REMOTE_SEL:
ACALL	KEYWAIT
CLR 	IR_SET_BIT
CLR 	RE_KEY
LCALL 	DIS_IR_SET
ACALL	KEYWAIT_SOTP
ACALL	KEY
JMP 	MAIN
;-----------------------------------
;以下为输入数字的键盘扫描
;------------------------------------
KEY:
NOP
LINE1:
MOV	KEY_IO,#11111110B
JNB	KEY_IO.7,K0
JNB	KEY_IO.6,K1
JNB	KEY_IO.5,K2;K_ENTER
JNB	KEY_IO.4,K3;K_ESC
;--------------------------------
LINE2:
MOV	KEY_IO,#11111101B
JNB	KEY_IO.7,K4
JNB	KEY_IO.6,K5
JNB	KEY_IO.5,K6
JNB	KEY_IO.4,K7
;-------------------------------
LINE3:
MOV	KEY_IO,#11111011B
JNB	KEY_IO.7,K8
JNB	KEY_IO.6,K9
JNB	KEY_IO.5,K10
JNB	KEY_IO.4,K11
;-------------------------------
LINE4:
MOV	KEY_IO,#11110111B
JNB	KEY_IO.7,K12
JNB	KEY_IO.6,K13
JNB	KEY_IO.5,K14;K_ENTER
JNB	KEY_IO.4,K15;K_ESC
;--------------------------------
AJMP	LINE1
;-------------------------------
K0:
MOV	KEYBUFF,#0
ACALL	KEYWAIT
AJMP	VOL_CONT
K1:
MOV	KEYBUFF,#1
ACALL	KEYWAIT
AJMP	VOL_CONT
K2:
MOV	KEYBUFF,#2
ACALL	KEYWAIT
AJMP	YIWEI
K3:
MOV	KEYBUFF,#3
ACALL	KEYWAIT
AJMP	YIWEI
K4:
MOV	KEYBUFF,#4
ACALL	KEYWAIT
AJMP	YIWEI
K5:
MOV	KEYBUFF,#5
ACALL	KEYWAIT
AJMP	YIWEI
K6:
MOV	KEYBUFF,#6
ACALL	KEYWAIT
AJMP	YIWEI
K7:
MOV	KEYBUFF,#7
ACALL	KEYWAIT
AJMP	YIWEI
K8:
MOV	KEYBUFF,#8
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K9:
MOV	KEYBUFF,#9
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K10:
MOV	KEYBUFF,#10
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K11:
MOV	KEYBUFF,#11
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K12:
MOV	KEYBUFF,#12
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K13:
MOV	KEYBUFF,#13
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K14:
MOV	KEYBUFF,#14
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K15:
MOV	KEYBUFF,#15
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
;---------------------------------------
;K_ENTER:
;LCALL	KEYWAIT

;RET
;K_ESC:
;LCALL	KEYWAIT
;LCALL	DATA_ESC
;RET
;----------------------------------------
YIWEI:
JB 	IR_SET_BIT,KEY_WORK
CLR 	RE_KEY
;ACALL	KEYWAIT_SOTP
LCALL 	IR_SEL
ACALL	KEYWAIT_SOTP
CLR 	IR_SET_BIT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -