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

📄 dts for bu2614.sam

📁 BU2614 PLL 源程序,直接解压
💻 SAM
📖 第 1 页 / 共 5 页
字号:
	DN_SD_DETECT:
			CALL	DELAY_10MS
			JBC	0X07, 4	;IF SD/CD_I LOW?
			
			JMP	dn_down_key
			
			BC	0X1E, 2		;CLEAR auto DOWN FLAG,STOP TUNING
			BC	0X07, 5		;MUTE OFF, TURN ON THE SOUND
			
			bs	0x05, 0		;set p5[0]=1,finish this key scan			

		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;;;;;THIS'S ATUO UP TUNING;;;;;;;;;;
		;;;IT WILL STOP WHEN DETECT A STATION;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AUTO_UP_TUNING:
		JBS	0X1E, 3
		JMP	MEM_BUTTON
		
		
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;;;CURRENT STATION INC;;;;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
			CLR	0X01		;CLEAR R1 TO AVOID TCC INTRUPT
			
			JBS	0X07, 0		;JUDGE CURRENT BAND IS AM(P70=0) OR FM(P70=1)
			JMP	JUDGE_R8R9_UP_AUTO	;AM MODE, JUMP TO AM

			JBC	0X1F, 1
			JMP	IF_UP_100K_AUTO	; JAPAN MODE

			JBC	0X1F, 0		;0:IF=100K
			JMP	IF_UP_50K_AUTO	; IF = 50K
			;;;;;;;;;;;;;;;;;;;;;;;;;
	IF_UP_100K_AUTO:
			CALL	IF_UP_100K_INC
			JMP	UP_OK_AUTO
			;;;;;;;;;;;;;;;;;;;;;;;;;
	IF_UP_50K_AUTO:
			CALL	IF_UP_50K_INC
			JMP	UP_OK_AUTO
			;;;;;;;;;;;;;;;;;;;;;;;;;
			;;;;;;;;;;;;;;;;;;;;;;;;;
	JUDGE_R8R9_UP_AUTO:
			JBS	0X1F, 2		;1:IF=10KHz
			JMP	AM_IF_UP_9K_AUTO	;IF = 9KHz
			;;;;;;;;;;;;;;;;;;;;;;;;;
	AM_IF_UP_10K_AUTO:	
			CALL	IF_UP_10K_INC
			JMP	UP_OK_AUTO
			;;;;;;;;;;;;;;;;;;;;;;;;;
	AM_IF_UP_9K_AUTO:	
			CALL	IF_UP_9K_INC
			JMP	UP_OK_AUTO

	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;;;;DISPLAY WHEN DETECT UP KEY PRESSED;;;;;;
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	UP_OK_AUTO:
			CALL	JUST_DO_IT
			
			
			JBC	0X1F, 3	;R1F,3 = 0,JMP TO SD
			JMP	UP_IF_DETECT
			JMP	UP_SD_DETECT
	UP_IF_DETECT:
			BS	0X03, 6
			CALL	IF_DETECT

			JBS	0X1F, 4		;R1F[4] = 1 MEANS FIND A STATION

			JMP	up_down_key
			
			clr	0x1e			;clear all flags
						
			BS	0X03, 5		;SET PAGE NUMBR 01
			call	BACKUP_CURRENT_STATE	;留个备份
		
		
		
			BC	0X07, 5		;MUTE OFF, TURN ON THE SOUND
			BC	0X1F, 4		;CLEAR STATION FLAG 

	up_button_rlease:
			CLR	0X01		;CLEAR R1 TO AVOID TCC INTRUPT

			JBs	0X06, 5	;add at 0719
			JMP	turn_off_radio;turn off the redio when detect EN to be low!!

			jbs	0x06, 3
			jmp	up_button_rlease			

			bs	0x05, 0		;set p5[0]=1,finish this key scan
			
			JMP	MEM_BUTTON

	up_down_key:
			jbs	0x06, 3		;up key still be pressed?1=key release
			jmp	up_tuning_continue

			bs	0x05, 0		;set p5[0]=1,finish this key scan
			jmp	MEM_BUTTON
							

				
	UP_SD_DETECT:
			CALL	DELAY_10MS
			JBC	0X07, 4		;IF SD/CD_I LOW?
			JMP	up_down_key
			BC	0X1E, 3		;CLEAR auto UP FLAG,STOP TUNING
			BC	0X07, 5		;MUTE OFF, TURN ON THE SOUND
			
			bs	0x05, 0		;set p5[0]=1,finish this key scan
						
			JMP	MEM_BUTTON
			
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;MAIN PROGRAM END HERE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;THERE ARE SOME SUBROUTINEs BELOW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;8888888888888888888888888888;;;;;;;;;;;;;;;;;;8888888888888888888;;
;;;;;;;;;;;+++++++++++++++++++;;;;;;;;;;;;;;;;;;++++++++++++++++++;;;;;;;;;;;;;;;;
			
			
			
			
			
	

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;888888888888888888888888888888;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;DELAY for ABOUT 10ms;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	
DELAY_10MS:
			MOV	A, @0X92
			MOV	0X13, A
	DELAY_10:
			JMP	DJZ_0X13
	DJZ_0X13:
			DJZ	0X13
			JMP	DELAY_10
			RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;DELAY ABOUT 100MS;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY_100MS:
			MOV	A, @0X05
			MOV	0X14, A
	DELAY_100:
			CALL	DELAY_10MS
			DJZ	0X14
			JMP	DELAY_100
			RET				

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;COUNTER Mn CORESPOND WITH CURRENT  R4 ADDRESS;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
COUNT_MN:
				MOV	A, 0X04
				MOV	0X14, A
				MOV	A, @0X1D
				JBS	0X07, 0		;JUDGE CURRENT BAND IS AM(P70=0) OR FM(P70=1)
				MOV	A, @0X5D
				SUB	0X14, A
				BC	0X03, 0
				RRC	0X14			; R14 DIVIDE 2
				MOV	A, @0XF0
				AND	0X10, A		;CLEAR R10[3:0]
				MOV	A, 0X14
				OR	0X10, A		;R14[3:0]->R10[3:0]
				RET

		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;;;;;;;;;;RESTORE RADIO STATION;;;;;;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RESTORE_STATION:
				MOV	A, 0X00
				JBS	0X07, 0		;JUDGE CURRENT BAND IS AM(P70=0) OR FM(P70=1)
				JMP	RESTORE_AM	
				MOV	0X0C, A
				INC	0X04
				MOV	A, 0X00
				MOV	0X0D, A
				DEC	0X04
				
				RET
	RESTORE_AM:
				MOV	0X08, A
				INC	0X04
				MOV	A, 0X00
				MOV	0X09, A
				DEC	0X04

				RET


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;888888888888888888888888888888;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


JUST_DO_IT:
			BS	0X03, 6
			CALL	DISP_DATA_PROCESS
			BS	0X03, 6
			CALL	DISPLAY
			BS	0X03, 6
			CALL	PLL_DATA_PROCESS
			BS	0X03, 6
			CALL	PLL_DATA_OUT
			RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;if RD,RC = 0369 ,SET RDRC=0439;;;;
		;;;;;;;;;OTHERWISE , DEC RD&RC;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
																
IF_DN_100K_SUB:
			MOV	A, @0X68
			SUB	0X0C, A
			DJZ	0X0C
			JMP	DOWN_FM
			MOV	A, @0X02
			SUB	0X0D, A
			DJZ	0X0D
			JMP	RST_RD
			MOV	A, @0X04
			MOV	0X0D, A
			MOV	A, @0X39
			MOV	0X0C, A

			RET
	RST_RD:
			MOV	A, @0X03
			ADD	0X0D, A
	DOWN_FM:
			MOV	A, @0X6A
			ADD	0X0C, A
			DJZ	0X0C
			JMP	DEC_RC
			DEC	0X0D
	DEC_RC:
			DEC	0X0C
			RET

		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;if RD,RC = 06D2 ,SET RDRC=0872;;;;
		;;;;;;;;;OTHERWISE , DEC RD&RC;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			
IF_DN_50K_SUB:
			MOV	A, @0XD1
			SUB	0X0C, A
			DJZ	0X0C
			JMP	DOWN_FM_50K
			MOV	A, @0X05
			SUB	0X0D, A
			DJZ	0X0D
			JMP	RST_RD_50K
			MOV	A, @0X08
			MOV	0X0D, A
			MOV	A, @0X72
			MOV	0X0C, A
			RET
	RST_RD_50K:
			MOV	A, @0X06
			ADD	0X0D, A
	DOWN_FM_50K:
			MOV	A, @0XD3
			ADD	0X0C, A
			DJZ	0X0C
			JMP	DEC_RC_50K
			DEC	0X0D
	DEC_RC_50K:
			DEC	0X0C
			RET
	
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;if RD,RC = 02F8 ,SET RDRC=0439;;;;
		;;;;;;;;;OTHERWISE , DEC RD&RC;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	
IF_DN_JAPAN_SUB:
			MOV	A, @0XF7
			SUB	0X0C, A
			DJZ	0X0C
			JMP	DOWN_FM_JAPAN
			MOV	A, @0X01
			SUB	0X0D, A
			DJZ	0X0D
			JMP	RST_RD_JAPAN
			MOV	A, @0X04
			MOV	0X0D, A
			MOV	A, @0X39
			MOV	0X0C, A
			RET
	RST_RD_JAPAN:
			MOV	A, @0X02
			ADD	0X0D, A
	DOWN_FM_JAPAN:
			MOV	A, @0XF9
			ADD	0X0C, A
			DJZ	0X0C
			JMP	DEC_RC_JAPAN
			DEC	0X0D
	DEC_RC_JAPAN:
			DEC	0X0C
			RET

		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;;IF R8 = 34(10K), NEXT R8 = AC;;;;
		;;;;;;;;;OTHERWISE , DEC R9&R8;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

IF_DN_10K_SUB:
			MOV	A, @0Xcb
			add	A, 0x08
			jbc	0x03, 0
			JMP	DOWN_AM_10K
			JMP	SET_R8R9_10K
	DOWN_AM_10K:
			dec	0X08
			RET
			
	SET_R8R9_10K:
			MOV	A, @0XAC
			MOV	0X08, A
			RET


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;;IF R8 = 3A(9K), NEXT R8 = B5;;;;
		;;;;;;;;;OTHERWISE , DEC R9&R8;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IF_DN_9K_SUB:
			MOV	A, @0Xc5
			add	A, 0X08
			jbc	0x03, 0
			JMP	DOWN_AM_9K
			JMP	SET_R8R9_9K
	DOWN_AM_9K:
			dec	0X08
			RET
			
	SET_R8R9_9K:
			MOV	A, @0XB5
			MOV	0X08, A
			RET

		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;if RD,RC = 0439 ,SET RDRC=0369;;;;
		;;;;;;;;;OTHERWISE , INC RD&RC;;;;;;;;
		;;;INCLUDE JAPAN MODE,SET RDRC=02F8;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IF_UP_100K_INC:
			MOV	A, @0X38
			SUB	0X0C, A
			DJZ	0X0C
			JMP	UP_FM_100K
			JMP	JUDGE_0X0D_UP_100K
	UP_FM_100K:
			MOV	A, @0X39
			ADD	0X0C, A
			JZ	0X0C
			JMP	INC_RC_100K
			INC	0X0D
	INC_RC_100K:
			RET

	JUDGE_0X0D_UP_100K:
			MOV	A, @0X03
			SUB	0X0D, A
			DJZ	0X0D
			JMP	RST_RD_UP_100K
			MOV	A, @0X03
			JBC	0X1F, 1		;JAPAN MODE
			MOV	A, @0X02
			MOV	0X0D, A
			MOV	A, @0X69
			JBC	0X1F, 1		;JAPAN MODE
			MOV	A, @0XF8
			MOV	0X0C, A
			RET
	RST_RD_UP_100K:
			MOV	A, @0X04
			ADD	0X0D, A
			JMP	UP_FM_100K


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;if RD,RC = 0872 ,SET RDRC=06D2;;;;
		;;;;;;;;;OTHERWISE , INC RD&RC;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IF_UP_50K_INC:
			MOV	A, @0X71
			SUB	0X0C, A
			DJZ	0X0C
			JMP	UP_FM_50K
			JMP	JUDGE_0X0D_UP_50K
	UP_FM_50K:
			MOV	A, @0X72
			ADD	0X0C, A
			JZ	0X0C
			JMP	INC_RC_50K
			INC	0X0D
	INC_RC_50K:
			RET

	JUDGE_0X0D_UP_50K:
			MOV	A, @0X07
			SUB	0X0D, A
			DJZ	0X0D
			JMP	RST_RD_UP_50K
			MOV	A, @0X06
			MOV	0X0D, A
			MOV	A, @0XD2
			MOV	0X0C, A
			RET
	RST_RD_UP_50K:
			MOV	A, @0X08
			ADD	0X0D, A
			JMP	UP_FM_50K



		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;;IF R8 = AC(10K), NEXT R8 = 34;;;;
		;;;;;;;;;OTHERWISE , INC R9&R8;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

IF_UP_10K_INC:
			MOV	A, @0Xac
			sub	a, 0X08
			jbs	0x03, 0
			JMP	UP_AM_10K
			JMP	SET_R8R9_UP_10K
	UP_AM_10K:
			inc	0X08
			RET
			
	SET_R8R9_UP_10K:
			MOV	A, @0X34
			MOV	0X08, A
			RET
			
			
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;;IF R8 = B5(9K), NEXT R8 = 3A;;;;
		;;;;;;;;;OTHERWISE , INC R9&R8;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

IF_UP_9K_INC:
			MOV	A, @0Xb5
			sub	a, 0X08
			jbs	0x03, 0
			JMP	UP_AM_10K
			JMP	SET_R8R9_UP_9K
	UP_AM_9K:
			inc	0X08
			RET
			
	SET_R8R9_UP_9K:
			MOV	A, @0X3A
			MOV	0X08, A
			RET

		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		;;;;;;;STORE CURRENT STATION;;;;;;;;;;
		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

STORE_CURRENT_STATION:
			CLR	0X1E	;CLEAR ALL FLAG
			JBS	0X07, 0	;JUDGE CURRENT BAND IS AM(P70=0) OR FM(P70=1)
			JMP	STORE_AM
	STORE_FM:		
			MOV	A, 0X0C
			MOV	0X00, A
			INC	0X04
			MOV	A, 0X0D
			MOV	0X00, A
			DEC	0X04
			JMP	MEM_DISP
	STORE_AM:
			MOV	A, 0X08
			MOV	0X00, A
			INC	0X04
			MOV	A, 0X09
			MOV	0X00, A
			DEC	0X04
			JMP	MEM_DISP
			
	MEM_DISP:
			BS	0X12, 3	;PRESET NO FLASHING
			BS	0X03, 6
			CALL	DISPLAY		
			RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;JUDGE WHETHER AUTO TUNING ;;;;;
;;;SET A FLAG R1E[6] WHEN IS ;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JUDGE_AUTO_TUNING:

			JBC	0X1E, 2		;AUTO_DOWN TUNING?
			JMP	STOP_DOWN_MEM	;R1E[2]=1,STOP AUTO_DOWN
			JBS	0X1E, 3		;AUTO_UP TUNING?
			RET
	STOP_DOWN_MEM:
			BC	0X1E, 3		;CLEAR	AUTO_UP TUNING FLAG
			BC	0X1E, 2		;CLEAR	AUTO_DOWN TUNING FLAG
			BC	0X07, 5		;MUTE OFF, SOUND ON
			BS	0X1E, 6		;SET AUTO_TUNING FLAG
			RET






;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;从现在开始,是第二页
			ORG	0X41A
;;;;;;;;;;;;;;;;;888888888888888888888888888888;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;888888888888888888888888888888;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;888888888888888888888888888888;;;;;;;;;;;;;;;;
RAM_INITIAL:
			;;;some initial value
			BS	0X05, 3
			CLR	0X1E		;CLEAR ALL FLAGs
			BS	0X1E, 1		;SYSTEM INITIAL FLAG

			;;;set some test bits
			mov	a, @0xfd
			mov	0x04, a
			mov	a, @0xaa
			mov	0x00, a
			inc	0x04
			mov	a, @0x55
			mov	0x00, a
			;;;;;;;;;;;;;;;;;;;;;;

			JBC	0X1F, 1		; 1:JAPAN MODE, 0:NOT JAPAN MODE
			JMP	JAPAN_STATION
			JBC	0X1F, 0		; 1:STEP_FREQ=50 KHz, 0:STEP_FREQ=100 KHz
			JMP	INITIAL_FM_50K
			
	INITIAL_FM_100K:			
			MOV	A, @0X20
			MOV	0X04, A
			MOV	A, @0X69
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X03
			MOV	0X00, A		;M1=0369

			INC	0X04
			MOV	A, @0X84
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X03
			MOV	0X00, A		;M2=0384

			INC	0X04	
			MOV	A, @0XD4
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X03
			MOV	0X00, A		;M3=03D4

			INC	0X04
			MOV	A, @0X24
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X04
			MOV	0X00, A		;M4=0424
			
			INC	0X04	
			MOV	A, @0X39
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X04
			MOV	0X00, A		;M5=0439
			
			INC	0X04	
			MOV	A, @0X69
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X03
			MOV	0X00, A		;M6=0369

			INC	0X04
			MOV	A, @0X84
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X03
			MOV	0X00, A		;M7=0384

			INC	0X04	
			MOV	A, @0XD4
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X03
			MOV	0X00, A		;M8=03D4

			INC	0X04
			MOV	A, @0X24
			MOV	0X00, A
			INC	0X04
			MOV	A, @0X04
			MOV	0X00, A		;M9=0424
			
			INC	0X04	
			MOV	A, @0X39

⌨️ 快捷键说明

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