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

📄 11.asm

📁 lcd 显示 到遥控功能 开关 和编码器 电子音量是PT2314
💻 ASM
📖 第 1 页 / 共 4 页
字号:
		JNB	P3.0,CON_INC		
		NOP
		NOP
		AJMP	LOOP
		
CON_INC_REM:	ACALL	VOLINC2
		JNB	F0,N68			;FO为1表示音量调整超范围
		AJMP	LOOP
N68:		ACALL	AA			;连发码判断程序段
		JB	BIT_REM,CON_INC_REM	;BIT_REM为1表示有连发码	
		NOP
		NOP
		AJMP	LOOP	
;====================================================================================
;音量连续减

CON_DEC:	ACALL	VOLDEC1
		JNB	F0,N69			;FO为1表示音量调整超范围
		AJMP	LOOP
N69:
		JNB	P3.0,CON_DEC
		NOP
		NOP
		AJMP	LOOP
		
CON_DEC_REM:	ACALL	VOLDEC1
		JNB	F0,N71;FO为1表示音量调整超范围
	
		AJMP	LOOP
N71:		ACALL	AA			;连发码判断程序段
		JB	BIT_REM,CON_DEC_REM	;BIT_REM为1表示有连发码
		NOP
		NOP	
		AJMP	LOOP		
JIYI:
                MOV 	A,#IN_ADD
                MOV 	B,INPUT
                LCALL 	WT24
                RET
                ;////////////////////////////////                   
IN_SW:          MOV	A,#0C0H		
	        ACALL	IWRBYTE        
	        MOV  	A,#0E0H		
	        ACALL	IWRBYTE
                MOV     A,INPUT               	
                CJNE    A,#0,CD_2
                RET  
CD_2:
                MOV     A,INPUT	
                CJNE    A,#1,DVD_2

CD_1:                   
	        CLR      P_KEY
	        MOV      INPUT,#1 
	        JB       MUTE_KEY,OUT_EXT1   
	        CLR      POWER_LED 
	        LCALL 	 IN_DIS2 
	        ;MOV      A,#54H
	        ;MOV      SLA,#PT2314
              ;  ACALL    IWRBYTE
              ;  ACALL    JIYI
OUT_EXT1:
                AJMP     LOOP
DVD_2:
         	MOV      A,INPUT	
                CJNE     A,#2,AUX_2

DVD_1:          CLR       P_KEY
	        MOV      INPUT,#2  
	        JB       MUTE_KEY,OUT_EXT  
	        CLR      POWER_LED 
	        MOV      A,#55H
	        MOV      SLA,#PT2314
                ACALL    IWRBYTE
                ACALL    JIYI
                AJMP     LOOP
AUX_2:
                MOV      A,INPUT	      
AUX_1:	        CLR      P_KEY
	        MOV      INPUT,#3
	        JB       MUTE_KEY,OUT_EXT
	        MOV      A,#56H
	        MOV      SLA,#PT2314
                ACALL    IWRBYTE   
                ACALL    JIYI        
                AJMP     LOOP
USB:
	        AJMP     LOOP
SD:
	        AJMP     LOOP
RESET_SY:
	        AJMP     LOOP
LOUDON:
	        AJMP     LOOP
LOUDOFF:      
	        AJMP     LOOP
NEXT:           
                AJMP     LOOP
PREV:
	        AJMP     LOOP
MODE1:
	        AJMP     LOOP
MODE2:
	        AJMP     LOOP
FEN_ADJ:
	        AJMP     LOOP
MIAO_ADJ:
	        AJMP     LOOP
XIAOSHI_ADJ:
	        AJMP     LOOP
N_ADJ:
	        AJMP     LOOP
Y_ADJ:
	        AJMP     LOOP
R_ADJ:
	        AJMP     LOOP

OUT_EXT:         
                AJMP     LOOP
	        AJMP     LOOP
STDBAY:    
	            
	        SETB     P_KEY	       
	        LCALL    DELAY
                LCALL    DELAY
                JB       P_CNT,P_EXT
	        SETB     POWER_LED 
	        SETB     P_CNT  
	        AJMP     LOOP           
                 	      
P_EXT:
                CLR     POWER_LED    
                CLR     P_CNT	      
B_OUT:
                AJMP     LOOP                  
ELAY100MS:      MOV	R7,#100
DELAY3:		MOV	R6,#83
D4:		MOV	R5,#5
		DJNZ	R5,$
		DJNZ	R6,D4
		DJNZ	R7,DELAY3
		NOP
		NOP		
		RET 
DELAY1MS:      
	        RET   
	 
          	      
A2MS:		MOV	R7,#100
A2MS1:		MOV	R6,#10
		DJNZ	R6,$
		DJNZ	R7,A2MS1
		NOP
		NOP
		RET
;====================================================================================
VOLINC:	        JB      P_KEY,V_EXT1
	        CLR     MUTE_KEY 
	       
	        MOV     A,VOL
		INC	A
VOL12:          CJNE    A,#63,N16
N16:            JC      N33
V_D_RET:	SETB	F0		;建立音量调整超范围标示
		SJMP	VOL_RET
N33:		MOV	VOL,A
                MOV     DPTR,#TAB_VOL
                MOVC    A,@A+DPTR
                MOV     SLA,#PT2314
                ACALL   IWRBYTE         ;无子地址器件写字节数据
		MOV	A,VOL
		MOV     VOLREG,VOL
              ;  ACALL	DISP
                CLR	F0		;建立音量调整没有超范围标示
VOL_RET:	NOP
		NOP
V_EXT1:
		ajmp    loop
;====================================================================================
VOLDEC:	        JB      P_KEY,V_EXT1
	        CLR     MUTE_KEY
	        MOV     A,VOL
		DEC	A
		CJNE    A,#63,N17
        
	       
N17:            JC      N33
	    
		NOP
		NOP
		AJMP	V_D_RET
		;/////////////////////////////////////////
VOLINC2:	        
	        
	        MOV     A,VOL
		INC	A
VOL121:         CJNE    A,#63,N161
N161:           JC      N331
V_D_RET1:	SETB	F0		;建立音量调整超范围标示
		SJMP	VOL_RET1
N331:		MOV	VOL,A
                MOV     DPTR,#TAB_VOL
                MOVC    A,@A+DPTR
                MOV     SLA,#PT2314
                ACALL   IWRBYTE         ;无子地址器件写字节数据
		MOV	A,VOL
		MOV     VOLREG,VOL
              ;  ACALL	DISP
                CLR	F0		;建立音量调整没有超范围标示
VOL_RET1:	NOP
		NOP
		RET
;====================================================================================
VOLDEC1:	   
	        MOV     A,VOL
		DEC	A
		CJNE    A,#63,N171       	       
N171:           JC      N331
		NOP
		NOP
		AJMP	V_D_RET1
TREB_PT:
    	        MOV	TREB_BUFF,A
                MOV     DPTR,#TAB_TREB
                MOVC    A,@A+DPTR
                MOV     SLA,#PT2314
                ACALL   IWRBYTE
                RET

BASS_PT:
       	        MOV	BASS_BUFF,A
                MOV     DPTR,#TAB_BASS
                MOVC    A,@A+DPTR
                MOV     SLA,#PT2314
                ACALL   IWRBYTE                       
                RET
wr_ptvol:       
MUTE_BACK:      MOV     VOL,#40
	 	MOV     A,VOL
                MOV     DPTR,#TAB_VOL
                MOVC    A,@A+DPTR
                MOV     SLA,#PT2314
                lCALL   IWRBYTE 
                MOV     VOLREG,VOL       ;无子地址器件写字节数据
RETLOOP:        NOP
		NOP
                ret
                ;///////////////////////////
;================================================================================
;		静音处理程序
;====================================================================================
MUTE:	        JB      POWER_LED,MUTE1	        
	        CPL     MUTE_KEY
	         
	        CLR     POWER_LED
MUTE1:
	        AJMP    LOOP     
	        ;////////////////////////////////
START:    	SETB  	SDA
          	NOP
          	SETB  	SCL     	;起始条件建立时间大于4.7us
          	NOP
          	NOP
          	NOP
          	NOP
          	NOP
          	CLR  	SDA      
          	NOP           		;起始条件锁定时大于4us
          	NOP
          	NOP
          	NOP
          	NOP
          	CLR   	SCL     	;钳住总线,准备发数据
          	NOP
          	RET
;--------------------------------------------------------------------------------------------------------
;结束总线子程序

STOP:     	CLR    	SDA
          	NOP
          	SETB   	SCL    		;发送结束条件的时钟信号
          	NOP           		;结束总线时间大于4us
          	NOP            
          	NOP
          	NOP
          	NOP
          	SETB  	SDA    		;结束总线
          	NOP          		;保证一个终止信号和起始信号的空闲时间大于4.7us
          	NOP
          	NOP
          	NOP
          	RET
;--------------------------------------------------------------------------------------------------------
;发送应答信号子程序

MACK:     	CLR  	SDA      	;将SDA置0 
          	NOP
          	NOP
          	SETB 	SCL
          	NOP            		;保持数据时间,即SCL为高时间大于4.7us
          	NOP
          	NOP
          	NOP
          	NOP
          	CLR  	SCL
          	NOP
          	NOP
          	RET
;--------------------------------------------------------------------------------------------------------
;发送非应答信号

MNACK:    	SETB 	SDA          	;将SDA置1 
          	NOP
          	NOP
          	SETB 	SCL
          	NOP
       	  	NOP               	;保持数据时间,即SCL为高时间大于4.7us
          	NOP
          	NOP
          	NOP
          	CLR  	SCL
          	NOP
          	NOP
          	RET
;--------------------------------------------------------------------------------------------------------
; 检查应答位子程序
; 返回值,ACK=1时表示有应答

CACK:		SETB  	SDA
        	NOP
        	NOP
        	SETB  	SCL
        	CLR   	ACK
        	NOP
        	NOP
        	MOV  	C,SDA
        	JC    	CEND
        	SETB  	ACK           	;判断应答位
CEND:		NOP
        	CLR  	SCL
        	NOP
        	RET


;////////////////////////////////////////////////
;--------------------------------------------------------------------------------------------------------
;发送字节子程序
;字节数据放入ACC       
;每发送一字节要调用一次CACK子程序,取应答位     
       
WRBYTE: 	MOV  	R2,#08H
WLP: 		RLC   	A              	;取数据位
        	JC     	WR1
        	SJMP  	WRO            	;判断数据位
WLP1:   	DJNZ  	R2,WLP
        	NOP
        	RET
WR1:    	SETB  	SDA            	;发送1
        	NOP
        	SETB  	SCL
        	NOP
        	NOP
        	NOP
        	NOP
        	NOP
        	CLR   	SCL
        	SJMP  	WLP1
WRO:  		CLR   	SDA            	;发送0
        	NOP
        	SETB  	SCL
        	NOP
        	NOP
        	NOP
        	NOP
        	NOP
        	CLR  	SCL
        	SJMP 	WLP1
;--------------------------------------------------------------------------------------------------------
; 无子地址器件写字节数据
; 入口参数: 数据为ACC、器件从地址SLA              
; 占用:  A、R2、CY

IWRBYTE:	NOP
		NOP
		PUSH   	ACC
IWBLOOP: 	ACALL  	START      	;起动总线
         	MOV    	A,SLA  
         	ACALL  	WRBYTE     	;发送器件从地址 
         	ACALL  	CACK
         	JNB     ACK,RETWRB     	;无应答则跳转
         	NOP
         	NOP
         	POP     ACC       	;写数据
         	LCALL  	WRBYTE
         	LCALL  	CACK
         	LCALL  	STOP
         	RET
RETWRB:  	POP     ACC
         	LCALL	STOP
         	NOP
         	NOP
         	RET
;///////////////////////AT24C02
ASKWAT:		LCALL	DELAY
		SETB	SDAAT		;释放SDA_P总线
		LCALL	DELAY
		SETB	SCLAT
WAITASKW:	MOV	C,SDAAT
	     ;;   JC	WAITASKW
		LCALL   DELAY
		CLR	SCLAT
		SETB	SDAAT
		RET
;**********************************
;MCU作为从器件不应答
NOASK:		SETB	SDAAT
	        NOP
	        NOP
	        NOP
		SETB	SCLAT
		LCALL	DELAY
		CLR	SCLAT
		LCALL	DELAY
		
		RET
;-----------------------------------
;启动信号
STARTAT:	SETB	SCLAT
		SETB	SDAAT
		LCALL	DELAY
		CLR	SDAAT
		LCALL	DELAY
		CLR	SCLAT
		RET
;---------------------------
;停止信号
STOPAT:		CLR	SCLAT
                LCALL	DELAY
		CLR	SDAAT
		LCALL	DELAY
		SETB	SCLAT
     	        LCALL	DELAY
		SETB	SDAAT
		LCALL	DELAY
		RET

CACK2AT:	SETB  	SDAAT
        	NOP
        	NOP
        	SETB  	SCLAT
        	CLR   	ACK
        	NOP
        	NOP
        	MOV  	C,SDAAT
        	JC    	CEND2AT
        	SETB  	ACK          	;判断应答位
CEND2AT:	NOP
        	CLR  	SCLAT
        	NOP
        	RET
RD24: 		PUSH 	ACC 
		

		CALL 	STARTAT
		MOV 	A,#0A0H
		CALL 	SENDDATE
		CALL 	ASKWAT
		POP 	ACC
		CALL 	SENDDATE
		CALL 	ASKWAT

		CALL 	STARTAT
		MOV 	A,#0A1H

⌨️ 快捷键说明

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