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

📄 11.asm

📁 lcd 显示 到遥控功能 开关 和编码器 电子音量是PT2314
💻 ASM
📖 第 1 页 / 共 4 页
字号:
        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 + -