📄 dts for bu2614.sam
字号:
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 + -