?? 11.asm
字號:
ACK BIT 22H.0 ;應答標志位變量(位尋址區10H)
BIT_KEY BIT 22H.1
P_KEY BIT 22H.2 ;是否有鍵按下標志,1表示有鍵按下 ;靜音開關控制位,為1時靜音
BIT_REM BIT 22H.3
MUTE_KEY BIT 22H.4
P_CNT BIT 22H.5
SLA DATA 23H
MULTI DATA 89H
VOL DATA 25H
TREB_BUFF DATA 26H
BASS_BUFF DATA 27H
XCVB EQU 28H
XCVB1 EQU 29H
TAB_KEY DATA 2AH
TEM1 EQU 2BH
LcdDat EQU 2CH
REMKEY DATA 1CH ;ID_RUN 的值為2時運行低音回路BASSEN ;數碼管閃爍記數器
INPUT DATA 2DH
LASTBMQ EQU 2EH
DP2 EQU 2FH
DP1 EQU 31H
BALANCE DATA 30H
JIYI_BIT EQU 31H
TM1 EQU 32H
TM2 EQU 33H
VOLREG DATA 34H
TM3 DATA 36H
TM5 DATA 37H
TM6 DATA 38H
M_CNT DATA 39H
FUNINT DATA 3AH
TEM3 DATA 3CH
DISP0 EQU 54h
DISP1 EQU 55h
BASS_TONE EQU 56H ;低音控制緩沖
TREBLE_TONE EQU 57H ;高音控制緩沖
M_VOL EQU 58H ;主音量控制緩沖
IN_BUFF EQU 59H ;輸入選擇緩存
SP_L_BUFF EQU 5AH ;平衡選擇緩存
SP_R_BUFF EQU 5BH ;平衡選擇緩存
BUFF23 EQU 5Ch
;--------------------------------------
DISP_BUFF EQU 3BH ;
;//////////////////////////////////WAN NIAN LI
YEAR DATA 3BH
MONTH DATA 3DH
DATE DATA 3EH
WEEK DATA 3FH
HOUR DATA 40H
MIN DATA 41H
SEC DATA 42H
SEC100 DATA 43H
HOUR_ARM DATA 44H
MIN_ARM DATA 45H
SEC_ARM DATA 46H
STATE DATA 24H
ALARM BIT STATE.0
LEAP BIT STATE.1
KEY_S BIT 47H
KEY_V BIT 48H
FLAG BIT 49H
DIS_H DATA 4AH
DIS_M DATA 4BH
DIS_S DATA 4CH
DIS_S0 DATA 4EH
DIS_S1 DATA 4FH
DIS_S2 DATA 50H
DIS_S3 DATA 51H
DIS_S4 DATA 52H
DIS_S5 DATA 53H
;//////////////////////////////////////
LCDBUU EQU 3BH
;////////////////////////////////////////////
BASS_ADD EQU 01H ;記憶
TRE_ADD EQU 02H ;記憶
IN_ADD EQU 03H ;記憶 ;ID_RUN 的值為0時運行主回路MAINEN
;===============================================================================
PT2314 EQU 88H
SDA BIT P1.4
SCL BIT P1.5
SCLAT BIT P2.0
SDAAT BIT P2.1
REM BIT P3.2
POWER_LED BIT P1.7
LCD_LED BIT P1.6
RS EQU P0.0
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 ;數值緩沖
;/////////////////////////////////////
ORG 0000H
AJMP initial
;/////////////////////////////
ORG 0003H ;外中斷INT0入口地址
lJMP REMTOE
;/////////////////////////////////////////
ORG 000BH
lJMP BMQ
;/////////////////////////////////
; ORG 001BH
;AJMP TIMER1
;/////////////////////////
ORG 50H
initial:
MOV SP,#60H
MOV TMOD,#11H
mov PSW,#0h
SETB EX0
ACALL ELAY100MS
;//////////////////////////////////////////
LCALL LCM_RESET
ACALL ELAY100MS
LCALL WELCOME
;/////////////////////////
MOV A,#0C0H
ACALL IWRBYTE
MOV A,#0E0H
ACALL IWRBYTE
MOV TM1,#0
MOV TM2,#0
MOV VOLREG,#0
CLR P_CNT
CLR MUTE_KEY
CLR P_KEY
CLR POWER_LED
MOV INPUT,#00H
ACALL ELAY100MS
mov balance,#31
ACALL ELAY100MS
MOV A,#0C0H
ACALL IWRBYTE
MOV A,#0E0H
ACALL IWRBYTE
ACALL ELAY100MS
ACALL wr_ptvol
NOP
NOP
ACALL ELAY100MS
ACALL IWRBYTE
MOV DPTR,#TAB_BASS
MOVC A,@A+DPTR
MOV SLA,#PT2314
ACALL IWRBYTE ;無子地址器件寫字節數據
MOV A,BASS_BUFF
mov treb_buff,#8
MOV DPTR,#TAB_TREB
MOVC A,@A+DPTR
MOV SLA,#PT2314
ACALL IWRBYTE
lCALL DELAY
LCALL RD24
MOV balance,A
LCALL DELAY
MOV A,#BASS_ADD
LCALL RD24
MOV BASS_BUFF,A
MOV DPTR,#TAB_BASS
MOVC A,@A+DPTR
MOV SLA,#PT2314
ACALL IWRBYTE
;///////////////////////////////////
LCALL DELAY
MOV A,#TRE_ADD
LCALL RD24
MOV TREB_BUFF,A
MOV DPTR,#TAB_TREB
MOVC A,@A+DPTR
MOV SLA,#PT2314
ACALL IWRBYTE
LCALL DELAY
MOV A,#IN_ADD
LCALL RD24
MOV INPUT,A
ACALL IN_SW
;====================================================================================
LOOP:
SETB EA
SETB IT0
SETB EX0
SETB TF0
SETB TR0
SETB ET0
;===================================================================================
LOPP:
LCALL SANKEY
mov a,TAB_KEY
cjne a,#0ffh,loop1
ajmp lopp
LOOP1:
AJMP MAINEN
MAINEN:
SETB EA
MOV A,TAB_KEY
MOV B,#02H
MUL AB
NOP
MOV TAB_KEY,#0FFH
MOV DPTR,#TAB_JMP
NOP
NOP
JMP @A+DPTR
;====================================================================================
TAB_JMP: AJMP STDBAY ;1
;=============================== =====================================================
AJMP MUTE ;2
;====================================================================================
AJMP CD_1 ;3
;====================================================================================
AJMP DVD_1 ;4
////////////////////////////////////////////////////////////////
AJMP AUX_1 ;5
/////////////////////////////////////////
AJMP USB ;6
;/////////////////////////////
AJMP SD ;7
;.........................
AJMP RESET_SY ;8
;///////////////////////
AJMP LOUDON ;9
;//////////////////////
AJMP LOUDOFF ;10
;////////////////////////
AJMP NEXT ;11
;////////////////////////
AJMP PREV ;12
;///////////////////////
AJMP MODE1 ;13
;////////////////
AJMP MODE2 ;14
;////////////////////////
AJMP VOLDEC ;15
////////////////////////////////////////
AJMP VOLINC ;16
;===============================================================
AJMP INC_T ;17
;==================
AJMP DEC_T ;18
;//////////////
AJMP INC_B ;19
;====================================================================================
AJMP DEC_B ;20
;///////////////////
AJMP USB_PALAY ;21
;//////////////////////
AJMP USB_STOP ;22
;////////////////////////
AJMP FEN_ADJ ;23
;///////////////////////
AJMP MIAO_ADJ ;24
AJMP N_ADJ ;25
;//////////////////
AJMP Y_ADJ ;26
;///////////////////
AJMP R_ADJ ;27
;//////////////////////
AJMP XIAOSHI_ADJ ;28
;////////////////////
AJMP ENTER ; 28
;////////////////////////////
AJMP VOL_DEC ;29
////////////////////////////////////////
AJMP VOL_INC ;30
;/////////////////////////////////
USB_STOP:
AJMP LOOP
USB_PALAY:
AJMP LOOP
ENTER:
AJMP LOOP
INC_T: JB P_KEY,OUT_EXT2
JB MUTE_KEY,OUT_EXT2
MOV A,TREB_BUFF
CJNE A,#14,SA
INC2: JC SA
SETB F0
SJMP INC_T_RET
SA: INC A
MOV TREB_BUFF,A
N2: MOV DPTR,#TAB_TREB
MOVC A,@A+DPTR
MOV SLA,#PT2314
ACALL IWRBYTE
MOV A,TREB_BUFF
CLR F0
INC_T_RET: NOP
NOP
LCALL DELAY
ACALL T_JIYI
OUT_EXT2:
AJMP LOOP
T_JIYI:
LCALL DELAY
MOV A,#TRE_ADD
MOV B,TREB_BUFF
LCALL WT24
RET
DEC_T: JB MUTE_KEY,OUT_EXT2
JB P_KEY,OUT_EXT2
MOV A,TREB_BUFF
DEC A
CJNE A,#15,N1 ;左邊的數小于右邊的數時,C等于1
N1: JC DECNEXIT
SETB F0
MOV A,TREB_BUFF
SJMP INC_T_RET
DECNEXIT: MOV TREB_BUFF,A
NOP
NOP
AJMP N2
;////////////////////////////////////////
BASS: SETB EA
MOV A,BASS_BUFF
HH1: MOV R1,#10
AD2: MOV R2,#250
AD1: ACALL A2MS
LCALL SANKEY
JNB BIT_KEY,QD90
QD90: DJNZ R2,AD1
DJNZ R1,AD2
BAK:
NOP
NOP
lJMP RETLOOP
;//////////////////////////////////////////
ACALL B_JIYI
AJMP LOOP
B_JIYI: LCALL DELAY
MOV A,#BASS_ADD
MOV B,BASS_BUFF
LCALL WT24
RET
INC_B: JB P_KEY,OUT_EXT2
JB MUTE_KEY,OUT_EXT2
MOV A,BASS_BUFF
CJNE A,#14,SA_B
INC2_B: JC SA_B
SETB F0
SJMP INC_B_RET
SA_B: INC A
MOV BASS_BUFF,A
N2_B: MOV DPTR,#TAB_BASS
MOVC A,@A+DPTR
MOV SLA,#PT2314
ACALL IWRBYTE
MOV A,BASS_BUFF
CLR F0
INC_B_RET: NOP
NOP
LCALL DELAY
LCALL T_JIYI
AJMP LOOP
DEC_B:
MOV A,BASS_BUFF
DEC A
CJNE A,#15,N1_B ;左邊的數小于右邊的數時,C等于1
N1_B: JC DECNEXIT_B
SETB F0
MOV A,BASS_BUFF
SJMP INC_B_RET
DECNEXIT_B: MOV BASS_BUFF,A
NOP
NOP
AJMP N2_B
LOUDXX: MOV A,MULTI
CPL ACC.2
MOV C,ACC.2
; MOV LEDL,C
MOV MULTI,A
MOV SLA,#PT2314
ACALL IWRBYTE ;無子地址器件寫字節數據
NOP
NOP
RET
AA: MOV R0,#25
XX: CALL D4740 ;精確定時4740微秒
REM8: JNB P3.2,HH ;跳轉到判斷連發代碼是否正確的程序段
DJNZ R0,XX
EXT_3: CLR BIT_REM ;無連發碼BIT_REM為0
EXT_2: NOP
NOP
RET
D882: MOV R6,#20 ;延時子程序1,精確延時882微秒
DD1: MOV R5,#20
DJNZ R5,$
DJNZ R6,DD1
RET
HH: MOV R7,#4
S: NOP
NOP
LCALL D882 ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態
REM10: NOP
NOP
JB P3.2,EXT_3 ;延時882微秒后判斷P3.2腳是否出現高電平如果有就退出解碼程序
DJNZ R7,S ;重復4次,目的是確認連發碼的低電平信號波形
JNB P3.2,$ ;等待高電平
SETB BIT_REM ;有連發碼BIT_REM為1
NOP
NOP
SJMP EXT_2
;====================================================================================
vol_inc:
CLR MUTE_KEY
JB POWER_LED,VOL_UP1
CLR EA
ACALL VOLINC2
JNB F0,N65 ;FO為1表示音量調整超范圍
V_EXT: ; JNB P3.0,$
AJMP LOOP
N65: MOV R1,#200
N50: JB P3.0,N51
ACALL A2MS
DJNZ R1,N50
AJMP CON_INC
N51: MOV R1,#03H
N61: ACALL AA ;連發碼判斷程序
JB BIT_REM,N60
VOL_UP1:
AJMP LOOP
N60: DJNZ R1,N61
AJMP CON_INC_REM
;====================================================================================
VOL_DEC:
VOLDN: CLR MUTE_KEY
JB POWER_LED,VOL_DN1
MOV A,VOL
CJNE A,#00H,VOLDN1
voldn1:
CLR EA
ACALL VOLDEC1
JNB F0,N66
EX01:
NOP
NOP
NOP
JNB p3.0,EX01
VOL_DN1:
AJMP LOOP
N66: MOV R1,#200
N56: JB p3.0,N90
ACALL A2MS
DJNZ R1,N56
AJMP CON_DEC
N90: MOV R1,#03H
N92: ACALL AA
JB BIT_REM,N91
AJMP LOOP
N91: DJNZ R1,N92
AJMP CON_DEC_REM
;====================================================================================
;音量連續加
CON_INC: ACALL VOLINC2
JNB F0,N67
AJMP LOOP
N67:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -