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

📄 tea5767hn.asm

📁 飞利浦TEA5767HN的初步程序,还要完善
💻 ASM
字号:


FMRUH		EQU	3AH;	5K
FMRUL		EQU	020H
FMRDH		EQU	38H
FMRDL		EQU	0E0H

;FMRUH		EQU	3AH;	4K
;FMRUL		EQU	00H
;FMRDH		EQU	39H
;FMRDL		EQU	00H


;FMRUH		EQU	39H;	3K
;FMRUL		EQU	0E0H
;FMRDH		EQU	39H
;FMRDL		EQU	20H

;FMRUH		EQU	39H;	2K
;FMRUL		EQU	0C0H
;FMRDH		EQU	39H
;FMRDL		EQU	40H


;FMRUH		EQU	39H;	1K
;FMRUL		EQU	0A0H
;FMRDH		EQU	39H
;FMRDL		EQU	60H


;AMRUH		EQU	0EH;	3K
;AMRUL		EQU	28H
;AMRDH		EQU	0DH
;AMRDL		EQU	0F8H


;AMRUH		EQU	71H	;13-3K
;AMRUL		EQU	40H
;AMRDH		EQU	6FH
;AMRDL		EQU	0C0H

;AMRUH		EQU	71H	;13-2K
;AMRUL		EQU	00H
;AMRDH		EQU	70H
;AMRDL		EQU	00H

;AMRUH		EQU	3CH	;12-3K
;AMRUL		EQU	00H
;AMRDH		EQU	34H
;AMRDL		EQU	80H

AMRUH		EQU	3CH	;12-3K
AMRUL		EQU	000H
AMRDH		EQU	34H
AMRDL		EQU	80H

;AMRUH		EQU	38H;	3K
;AMRUL		EQU	0A0H
;AMRDH		EQU	037H
;AMRDL		EQU	0D0H


;AMRUH		EQU	0EH;	2K
;AMRUL		EQU	20H
;AMRDH		EQU	0EH
;AMRDL		EQU	00H

MEMCHADD	EQU     10H
FM_MEMCH_ADDR	EQU	 20H     ;(20H+20X2)
AM_MEMCH_ADDR   EQU     50H     ;(40H+20X2)
;NO_TUNER:       DW      ZCHN,CHO,SPH,CHT,CHU,CHN,CHE,ZCHR

CHECK_TEST_TUNER:
	CALL	DELAY_100MS
	JMP	PRO_RACH_I_CMD


;****************************************************************
;Multiply
;USE A,R,Z,FC STACK=0	
;****************************************************************
MUL_BYTE:
	MOV	Z,A
	JNZ	MUL_BYTE1
	CLR	R
	RET
MUL_BYTE1:
	MOV	A,R
	BTS0	FZ
	RET
MUL_BYTE2:
	MOVMM	Y,R
	MOV	A,Z
	CLR	Z
	CLR	R
MUL_BYTE3:
	ADD	Z,A
	BTS0	FC
	INCMS	R
	DJNZ	Y,MUL_BYTE3
	MOV	A,Z
	RET


PRO_NOTUNER_CMD:
;	MOV_YZP NO_TUNER
	RET    

PRO_TUNER_CMD:
	JB	B_BAND,PRO_AM_CMD
PRO_FM_CMD:
PTUNERC1:
	BSET	B_BAND
	MOV    	A,S_FM_MEMCH
	JMP	PTUNERC3
PRO_AM_CMD:
PTUNERC2:
	BCLR	B_BAND
	MOV	A,S_AM_MEMCH		
PTUNERC3:
	MOV	S_TU_MEMCH,A
	MOVMV	S_DB_INPUT,#STUNER
	JMP	SET_INPUT

	
CHECK_TUMUTE:
	JB      B_MUTE,END_CHECK_TUMUTE
	JB	B_STANDBY,END_CHECK_TUMUTE
	MOV	A,S_TUMUTE_T
	JNZ     END_CHECK_TUMUTE
	JNB     B_TUMUTE,CHECK_TUMUTE2
	BCLR     B_TUMUTE
	MOVMV   S_TUMUTE_T,#05
	JNB     B_TUNER,CHECK_TUMUTE2
	JMP     FM_SEND
CHECK_TUMUTE2:
	MOV	A,S_TUMUTE_T
	JNZ	END_CHECK_TUMUTE
	JNB     B_MUTE_MUSIC,END_CHECK_TUMUTE
	BCLR    B_MUTE_MUSIC
	JMP	SET_MUSIC_VOL
END_CHECK_TUMUTE:
	RET

/*VOL_STEP_UP:
MV_STEP_UP:
	MOVMM	S_VOL_BAK,S_DB_VOL
	CLR	S_DB_VOL
MV_STEP_UP1:
     	CALL    SET_MUSIC_MV
	MOV     A,S_DB_VOL
	CJNE	A,S_VOL_BAK,MV_STEP_UP2
	JMP   	END_MV_STEP_UP
MV_STEP_UP2:
	INCMS	S_DB_VOL
	JMP     MV_STEP_UP1
END_MV_STEP_UP:
	RET*/

CHECK_AUTO:
	JNB     B_AUTO,END_CHECK_AUTO
	MOV	A,S_WORK_CODE
	JNB     B_WORK,CHECK_AUTO5
	JB      B_AUTO_UP,CHECK_AUTO3
CHECK_AUTO1:
	CJNE	A,#SMENU_D,CHECK_AUTO2
	JMP	CHECK_AUTO5
CHECK_AUTO2:
	CJNE	A,#SRACH_D,CHECK_AUTO9
	JMP	CHECK_AUTO5
CHECK_AUTO3:
	CJNE	A,#SMENU_I,CHECK_AUTO4
	JMP	CHECK_AUTO5
CHECK_AUTO4:
	CJNE	A,#SRACH_I,CHECK_AUTO9
CHECK_AUTO5:
	BCLR    B_WORK
	MOVMV	S_WORK_CODE,#NO_WORK
	JNB     B_TUNED,CHECK_AUTO7
	MOV     A,S_TUNED_COUNT
	ADD	A,#01
	CJNE    A,#04H,CHECK_AUTO6
	CLR	S_TUNED_COUNT
	BCLR    B_AUTO
	BSET    B_EEPROM
	MOVMV	S_EEPROM_T,#10
	CLR	S_EEPROM_ST
	JMP    	END_CHECK_AUTO
CHECK_AUTO6:
	MOV     S_TUNED_COUNT,A
	JMP     SET_TUNER
CHECK_AUTO7:
	CLR	S_TUNED_COUNT
	JNB     B_AUTO_UP,CHECK_AUTO8
	JMP	PRO_RACH_I_CMD
CHECK_AUTO8:
	JMP     PRO_RACH_D_CMD
CHECK_AUTO9:
	BCLR	B_AUTO
	CLR	S_KCON_T
	CLR	S_KCON_ST
	CLR	S_TUNED_COUNT
END_CHECK_AUTO:
	RET


CHECK_SCAN:
	JB	B_WORK,END_CHECK_SCAN
	JNB	B_TUNER,END_CHECK_SCAN
	JNB	B_SCAN,END_CHECK_SCAN
	JNB     B_TUNED,CHECK_SCAN2
	MOV     A,S_TUNED_COUNT
	ADD	A,#01
	CJNE    A,#04H,CHECK_SCAN1
	CLR	S_TUNED_COUNT
	CALL    DELAY_20MS
	CALL    PTUMEMC1
	INCMS	S_TU_MEMCH
	MOV     A,S_TU_MEMCH
	CJNE    A,#MAX_TU_MEMCH+1,CHECK_SCAN2
	JMP     CHECK_SCAN3
CHECK_SCAN1:
	MOV     S_TUNED_COUNT,A
	JMP     SET_TUNER
CHECK_SCAN2:
	CLR	S_TUNED_COUNT
	CALL	PRO_RACH_I_CMD
	JNB	B_RACH_MAX,END_CHECK_SCAN
	JNB	B_TUNED,CHECK_SCAN3
	CALL    PTUMEMC1
CHECK_SCAN3:
	BCLR    B_SCAN
	CALL	PSCANC4
END_CHECK_SCAN:
	RET



SET_TUNER:
	BSET	B_BAND
	BSET	B_TUNER
TUNER_FM:
	JMP	PFMRACH_IC1

PRO_BAND_CMD:
	JNB	B_TUNER,PRO_NOTUNER_CMD
	JB	B_BAND,PBANDC2
PBANDC1:
	BSET	B_BAND
	MOV    	A,S_FM_MEMCH
	JMP	PBANDC3
PBANDC2:
	BCLR	B_BAND
	MOV	A,S_AM_MEMCH	
	MOV	S_TU_MEMCH,A
PBANDC3:
	BSET	B_TUMUTE
	CALL	SET_TUNER
	BCLR	B_TUMUTE
	JMP	SET_TUNER


PRO_TUSTEREO_CMD:
	JNB	B_TUNER,PRO_NOTUNER_CMD
	JB	B_TUSTEREO,PTUSTEREOC2
PTUSTEREOC1:
	BSET	B_TUSTEREO
	JMP	PTUSTEREOC3	
PTUSTEREOC2:
	BCLR	B_TUSTEREO
PTUSTEREOC3:
	CALL	SET_TUNER
	MOV_YZP	STEREO
	JB	B_TUSTEREO,PTUSTEREOC4
	MOV_YZP	MONO
PTUSTEREOC4:
	JMP	GET_VFD_CHARS

PRO_SCAN_CMD:
	JNB	B_TUNER,PRO_NOTUNER_CMD
PSCANC1:
	JB	B_SCAN,PSCANC4
	CALL	MUTE_MUSIC
	BSET	B_MUTE_MUSIC
	BSET	B_SCAN
	BSET    B_MEM_MODE
 	BSET    B_TUNED
	CLR	S_TU_MEMCH
	CLR     S_TUNED_COUNT
	JNB     B_BAND,PSCANC2	
	CLR     S_FM_CHL
	CLR	S_FM_CHH
	JMP    	END_PSCANC
PSCANC2:
	CLR	S_AM_CHL
	CLR	S_AM_CHH
	JMP	END_PSCANC
PSCANC4:
	BCLR	B_SCAN
	MOV	A,#00
	CALL	PMEMCH_IC1
END_PSCANC:
	RET

PRO_TUMEM_CMD:
	JNB     B_TUNER,PRO_NOTUNER_CMD
	BSET    B_MEM_MODE
	JNB	B_TUMEM,PTUMEMC4
PTUMEMC1:
	BCLR	B_TUMEM
	BCLR	FC
	MOV	A,S_TU_MEMCH	
	JNB     B_BAND,PTUMEMC2
	MOV	S_FM_MEMCH,A
	BCLR	FC	
	RLC	S_FM_MEMCH
	ADD	A,#FM_MEMCH_ADDR
	MOV	R,A
	MOVMM	R3,S_FM_CHL
	MOVMM	R4,S_FM_CHH
	JMP     PTUMEMC3
PTUMEMC2:
	MOV	S_AM_MEMCH,A
	BCLR	FC
	RLC	S_AM_MEMCH
	ADD     A,#AM_MEMCH_ADDR
	MOV	R,A
	MOVMM	R3,S_AM_CHL
	MOVMM	R4,S_AM_CHH
 PTUMEMC3:
	CALL	DELAY_20MS
	MOVMM	R2,R
	CALL	WR_EEPROM_TWO_BYTE
	JMP	SET_TUNER
PTUMEMC4:
	BSET	B_TUMEM
	CALL	DIS_TUCH
	MOVMV	S_CHAR_T,#255
	RET


READ_MEMCH:
	BCLR	FC
	RLC	S_TU_MEMCH
	JNB     B_BAND,READ_MEMCH1
	ADD     A,#FM_MEMCH_ADDR
	JMP    	READ_MEMCH2
READ_MEMCH1:
	ADD     A,#AM_MEMCH_ADDR
READ_MEMCH2:
	MOV	R2,A
	CALL	RD_EEPROM_A_BYTE
	MOV	R3,A
	CALL	RD_EEPROM_A_BYTE
	MOV	R4,A
READ_MEMCH3:
	JB	B_BAND,READ_MEMCH4
	CALL    CHECK_AM_ERR
	MOVMM	S_AM_CHL,R3
	MOVMM	S_AM_CHH,R4
	JMP    	READ_MEMCH5
READ_MEMCH4:
	CALL    CHECK_FM_ERR
	MOVMM	S_FM_CHL,R3
	MOVMM	S_FM_CHH,R4
READ_MEMCH5:
	JMP	SET_TUNER

CHECK_FM_ERR:
	MOV	A,R4
	BTS0	FZ
	JMP	END_CHECK_FM_ERR
CHECK_FM_ERR1:
	CJNE	A,#01H,CHECK_FM_ERR2
	MOV	A,R3
	SUB	A,#9BH
	JNC	END_CHECK_FM_ERR
CHECK_FM_ERR2:	
	CLR	R4
	CLR	R3
END_CHECK_FM_ERR:
	BCLR	R3.0
	RET

CHECK_AM_ERR:
	CLR	R4
	MOV	A,R3
	SUB	A,#7CH+1
	BTS0	FC
	CLR	R3
END_CHECK_AM_ERR:
	RET

PRO_TUMEM_ADDA_CMD:
	JNB	B_TUNER,PRO_NOTUNER_CMD
	JB	B_TUMEM_ADDA,PTUMEM_ADDAC1
	BSET	B_TUMEM_ADDA
	CLR	S_TUMEM_ADDA
PTUMEM_ADDAC1:
	INCS	S_TUMEM_ADDA
	CJNE	A,#02,PTUMEM_ADDAC2
	MOV	A,#00
PTUMEM_ADDAC2:
	MOV	S_TUMEM_ADDA,A
PTUMEM_ADDAC3:
	MOV_YZP	TUCH
	CALL    GET_VFD_CHARS
	MOVMV	S_VFD_CH2,#ZHH
	MOVMM   S_VFD_CH1,S_TUMEM_ADDA
	CLR     S_VFD_CH0
	RET

PRO_MEMCH0_CMD:
	MOV	A,#00
PMEMCH01:
	JNB	B_TUNER,PRO_NOTUNER_CMD
	MOV	R1,A
	MOV	A,S_TUMEM_ADDA
	B0MOV	R,#10
	CALL	MUL_BYTE
	ADD	A,R1
SET_TUMEM_ADDA:
	BCLR	B_TUMEM_ADDA
	CLR	S_TUMEM_ADDA	
	JMP	PMEMCH_IC1

PRO_MEMCH1_CMD:
	MOV	A,#01
	JMP	PMEMCH01

PRO_MEMCH2_CMD:
	MOV	A,#02
	JMP	PMEMCH01

PRO_MEMCH3_CMD:
	MOV	A,#03
	JMP	PMEMCH01

PRO_MEMCH4_CMD:
	MOV	A,#04
	JMP	PMEMCH01

PRO_MEMCH5_CMD:
	MOV	A,#05
	JMP	PMEMCH01

PRO_MEMCH6_CMD:
	MOV	A,#06
	JMP	PMEMCH01

PRO_MEMCH7_CMD:
	MOV	A,#07
	JMP	PMEMCH01

PRO_MEMCH8_CMD:
	MOV	A,#08
	JMP	PMEMCH01

PRO_MEMCH9_CMD:
	MOV	A,#09
	JMP	PMEMCH01





PRO_MEMCH_I_CMD:
	JNB	B_TUNER,PRO_NOTUNER_CMD
        MOV	A,S_TU_MEMCH
	B0MOV	R,#MAX_TU_MEMCH
	CALL	PARAMETER_ADJUST
PMEMCH_IC1:
        MOV     S_TU_MEMCH,A
	JNB     B_BAND,PMEMCH_IC3 
	CJNE    A,S_FM_MEMCH,PMEMCH_IC2
	JMP     PMEMCH_IC6
PMEMCH_IC2:
	MOV	S_FM_MEMCH,A
	JB	B_TUMEM,PMEMCH_IC6
	JMP    	PMEMCH_IC5
PMEMCH_IC3:
	CJNE    A,S_AM_MEMCH,PMEMCH_IC4
	JMP     PMEMCH_IC6
PMEMCH_IC4:
	MOV	S_AM_MEMCH,A

	JB	B_TUMEM,PMEMCH_IC6
PMEMCH_IC5:
	CALL    DELAY_20MS	
	CALL	READ_MEMCH
PMEMCH_IC6:
	CALL	CLR_MENU_BIT
	BSET	B_MENU_MEMCH
        JMP	DIS_TUCH
	
	


PRO_MEMCH_D_CMD:
        JNB	B_TUNER,PRO_NOTUNER_CMD
        MOV	A,S_TU_MEMCH
	SUB	A,#01
	CJNE	A,#0FFH,PMEMCH_DC2
	MOV	A,#MAX_TU_MEMCH
PMEMCH_DC2:
        JMP	PMEMCH_IC1



PRO_RACH_I_CMD:
        JNB	B_TUNER,PRO_NOTUNER_CMD
        JB	B_SCAN,PRACH_IC1
	CALL	CHECK_KEY_AUTO
        BSET    B_AUTO_UP
PRACH_IC1:
	JMP	PRO_FMRACH_I_CMD
	
PRO_RACH_D_CMD:
        JNB	B_TUNER,PRO_NOTUNER_CMD
        JB	B_SCAN,PRACH_DC1
	CALL	CHECK_KEY_AUTO
        BCLR    B_AUTO_UP
PRACH_DC1:
	JMP	PRO_FMRACH_D_CMD

KEY_CON_T	EQU	23

CHECK_KEY_AUTO:
	MOV	A,S_KCON_T
	JNZ	CHECK_KEY_AUTO1
	MOVMV	S_KCON_T,#KEY_CON_T
	CLR	S_KCON_ST
	JMP	END_CHECK_KEY_AUTO
CHECK_KEY_AUTO1:
        BCLR    B_MEM_MODE
        INCMS	S_KCON_ST
	MOV	A,S_KCON_ST
	SUB	A,#02
	JNC	END_CHECK_KEY_AUTO
	BSET	B_AUTO
END_CHECK_KEY_AUTO:
	RET



PRO_FMRACH_I_CMD:
        BCLR	B_RACH_MAX
	MOV	A,S_FM_CHL
	ADD	A,#01H
	MOV	S_FM_CHL,A
	MOV	A,#00
	ADC	A,S_FM_CHH
	MOV	S_FM_CHH,A
;	CJNE	A,#01H,PFMRACH_IC1
;	MOV	A,S_FM_CHL
;	CJNE	A,#9CH,PFMRACH_IC1
;	CLR	S_FM_CHL
;	CLR	S_FM_CHH
	BSET	B_RACH_MAX
PFMRACH_IC1:
;        BSET	B_TUMUTE
	CALL	FM_SEND
;	BCLR	B_TUNED
;        JB	B_SCAN,PFMRACH_IC2
;        JB      B_AUTO,PFMRACH_IC2
;        JMP     PFMRACH_IC3
;PFMRACH_IC2:
;        BSET	B_TUMUTE
;	MOVMV	S_TUMUTE_T,#10
	JMP	DIS_TUNER
PFMRACH_IC3:
        MOVMV   S_TUMUTE_T,#15
	BSET	B_MUTE_MUSIC
	CALL    MUTE_MUSIC
	BCLR    B_AUTO
	BCLR	B_TUMUTE
        CALL	FM_SEND
        CALL	FM_SEND
        JMP     DIS_TUNER                      ;display  sub
;****************************************
PRO_FMRACH_D_CMD:
	BCLR	B_RACH_MAX
	MOV	A,S_FM_CHL
	SUB	A,#02H
	MOV	S_FM_CHL,A
	MOV	A,S_FM_CHH
	BTS1	FC
	SUB	A,#01
	MOV	S_FM_CHH,A
	CJNE	A,#0FFH,PFMRACH_DC1
	MOVMV	S_FM_CHH,#01H
	MOVMV	S_FM_CHL,#9AH
PFMRACH_DC1:
        JMP	PFMRACH_IC1


DIS_TUNER:
	CALL    CLR_MENU_BIT
	BCLR	B_MENU_MEMCH
	BSET    B_MENU_RACH
DIS_TUNER1:
	JNB	B_BAND,AM_DIS
FMDIS:	
	MOV_YZP	FM
	CALL    GET_VFD_CHARS
	BSET    B_VFD_DP
;	MOV	A,S_FM_CHL
;	B0MOV	R,#05H
;	CALL	MUL_BYTE
;	MOV	R4,A
;	MOVMM	R5,R
;	MOV	A,S_FM_CHH
;	AND	A,#7FH
;	B0MOV	R,#05H
;	CALL	MUL_BYTE
;	ADD	R5,A
;	MOV	A,#2EH
;	ADD	R4,A
;	MOV	A,#22H
;	ADC	R5,A	
;	CALL	HB2
;	MOV	A,#01H
;	BTS1	R3.0
;	MOV	A,#SPH
;	MOV	S_VFD_CH4,A
;	MOV	A,R2
;	CALL	ONE_TWO
;	MOV	S_VFD_CH3,A
;	MOVMM	S_VFD_CH2,R
;	MOV	A,R1
;	CALL	ONE_TWO
;	MOV	S_VFD_CH0,A
;	MOVMV	S_VFD_CH1,#DP
	MOV	A,S_FM_CHH
	CALL	ONE_TWO
	MOV	S_VFD_CH3,A
	MOVMM	S_VFD_CH2,R	
	MOV	A,S_FM_CHL
	CALL	ONE_TWO
	MOV	S_VFD_CH1,A
	MOVMM	S_VFD_CH0,R	
	JMP     DIS_TUNER2

AM_DIS:
        MOV_YZP	AM
        CALL    GET_VFD_CHARS
	MOV	A,S_AM_CHL
	B0MOV	R,#09H
	CALL	MUL_BYTE
	ADD	A,#0AH
	MOV	R4,A
	MOV	A,#02H
	ADC	A,R	
	MOV	R5,A
	CALL	HB2
	MOV	A,R2
	CALL	ONE_TWO
	XCH	A,R
	MOV	S_VFD_CH2,A
	MOV	A,#01
	BTS1	R.0
	MOV	A,#SPH
	MOV	S_VFD_CH3,A
	MOV	A,R1
	CALL	ONE_TWO
	MOV	S_VFD_CH1,A
	MOVMM	S_VFD_CH0,R
DIS_TUNER2:
	RET


HB2:
      	BCLR	FC
	CLR	R1
	CLR	R2
	CLR	R3
      	B0MOV 	Z,#10H
HB3:
	RLCM	R4
	RLCM	R5
      	MOV 	A,R1
      	ADC 	A,R1
	CALL	TUNE_DA
      	MOV 	R1,A
      	MOV 	A,R2
      	ADC 	A,R2
	CALL	TUNE_DA
      	MOV 	R2,A
      	MOV 	A,R3
      	ADC 	A,R3
      	MOV 	R3,A
      	DJNZ 	Z,HB3
      	RET

TUNE_DA:
	MOVBB	B_BAK_FC,FC
	MOV	R,A
	JNB	FDC,TUNE_DA1
	ADD	A,#06H
	JMP	TUNE_DA2
TUNE_DA1:
	AND	A,#0FH
	CMPRS	A,#0AH
	NOP
	MOV	A,R
	JNB	FC,TUNE_DA2
	ADD	A,#06
TUNE_DA2:
	MOV	R,A
	ORBB	FC,B_BAK_FC	
	JNB	FC,TUNE_DA3
	ADD	A,#60H
	JMP	TUNE_DA4
TUNE_DA3:
	AND	A,#0F0H
	CMPRS	A,#0A0H
	NOP
	MOV	A,R
	JNB	FC,TUNE_DA4
	ADD	A,#60H
TUNE_DA4:
	ORBB	FC,B_BAK_FC
	RET


ONE_TWO:
        MOV	R,A
	SWAPM	R
	AND	A,#0FH
	XCH	A,R
	AND	A,#0FH
	RET

DIS_TUCH:
        CALL    CLR_MENU_BIT
	BCLR	B_MENU_RACH
        BSET    B_MENU_MEMCH
        BSET    B_TUMENU_ONE
        MOV_YZP	TUCH
        CALL    GET_VFD_CHARS
	JB	B_TUMEM,$+3
        MOVMV   S_CHAR_T,#50
	INCS	S_TU_MEMCH
        B0MOV   R,#10
	CALL	DIV_BYTE
        MOV     S_VFD_CH1,A
        MOVMV   S_VFD_CH0,R
        RET


ADDR_TEA5767HN_WRITE	EQU	0C0H
ADDR_TEA5767HN_READ	EQU	0C1H

FM_SEND:
	MOVMV	R2,S_FM_CHH
	MOVMV	R3,S_FM_CHL
	MOVMV	R4,#11010000B
	MOVMV	R5,#00010001B
	MOVMV	R6,#00000000B
;	MOVMV	R6,#01000000B
;	MOVMV	R6,#10000000B
;	MOVMV	R6,#11000000B
WRITE_TEA5767HN:
	BCLR	P_TEA5767HN_DATA
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	BCLR	P_TEA5767HN_CLK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV	A,#ADDR_TEA5767HN_WRITE
	CALL	WRITE_TEA5767HN_A_BYTE
	MOV	A,R2
	CALL	WRITE_TEA5767HN_A_BYTE
	MOV	A,R3
	CALL	WRITE_TEA5767HN_A_BYTE
	MOV	A,R4
	CALL	WRITE_TEA5767HN_A_BYTE
	MOV	A,R5
	CALL	WRITE_TEA5767HN_A_BYTE
	MOV	A,R6
	CALL	WRITE_TEA5767HN_A_BYTE
	BSET	P_TEA5767HN_CLK
	NOP
	NOP
	NOP
	NOP
	BSET	P_TEA5767HN_DATA
	RET

WRITE_TEA5767HN_A_BYTE:
	MOV	R1,A
	MOVMV	R,#08H
WRITE_TEA5767HN_A_BYTE1:
	RLCM    R1               ;MSB FIRST SO RLC D7->C
	JB	FC,WRITE_TEA5767HN_A_BYTE2
	BCLR	P_TEA5767HN_DATA
	JMP	WRITE_TEA5767HN_A_BYTE3
WRITE_TEA5767HN_A_BYTE2:
	BSET	P_TEA5767HN_DATA
WRITE_TEA5767HN_A_BYTE3:
	NOP	     		;SEND DATA TO MV
	NOP                     ;>250nS SETUP TIME OF DATA
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	BSET    P_TEA5767HN_CLK       ;__|~~~ CLK WRITE A BIT
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	BCLR    P_TEA5767HN_CLK       ;~~~|__ CLK
	DJNZ    R,WRITE_TEA5767HN_A_BYTE1 	;ALL 8 BITS HAVE SEND?
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	BSET    P_TEA5767HN_CLK       ;___|~~~ CLK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	BCLR	P_TEA5767HN_CLK	;ACK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
  	BCLR	P_TEA5767HN_DATA
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
   	RET
;****************************************************************
		












⌨️ 快捷键说明

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