📄 dts for bu2614.sam
字号:
JBS 0X06, 0
BS 0X1F, 0 ;FM STEP_FREQ FLAG, 1 MEANS 50KHz
READ_P62:
MOV A, @0XF3
MOV 0X04, A
JBC 0X06, 2 ;IF P6[2](10k/9K)=0(9K),SKIP
JMP STEP_FREQ_10K
;设置STEP_FREQ = 9K
MOV A, @0X0D ;PLL Standard freq = 3KHz
MOV 0X00, A
READ_P63:
JBC 0X06, 3
BS 0X1F, 3 ;SIGNAL DETECT FLAG, 1 MEANS DETECT WITH IF
read_P61:
JBs 0X06, 1
JMP READ_JMPER_END
BS 0X1F, 1 ;1 MEANS JAPAN FM MODE
Bc 0X1F, 0 ;FM STEP_FREQ FLAG, 1 MEANS 100KHz
JMP READ_JMPER_END
STEP_FREQ_10K:
;设置STEP_FREQ = 10K
BS 0X1F, 2 ;AM STEP_FREQ FLAG, 1 MEANS 10KHz
MOV A, @0X0E ;PLL Standard freq = 5KHz
MOV 0X00, A
JMP READ_P63
READ_JMPER_END:
Bs 0X05, 3 ;P5[3](KO90)= 1 after read jumper
;;;;;;;;;
CLR 0X01
ENI ;INTRUPT ENABLE
MOV A, @0X01
IOW 0X0F ;TCC INTRUPT ENABLE,INTRUPT ABOUT 1 SECOND
BC 0X03, 5
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;normal band toggle operation;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NORMAL_BAND:
BS 0X07, 5 ;P7[5]=1:MUTE ON,NO SOUND
CLR 0X1E ;CLEAR ALL FLAGs
BS 0X12, 3 ;MEM is on
BAND_RELEASE1:
CLR 0X01 ;CLEAR R1 TO AVOID TCC INTRUPT
JBs 0X06, 5 ;add at 0719
JMP begin_band_toggle;begin band toggle when detect EN to be low!!
JBS 0X06, 1
JMP BAND_RELEASE1 ;WAIT for BAND KEY RELEASE
begin_band_toggle:
JBC 0X07, 0 ;JUDGE CURRENT BAND IS AM(P70=0) OR FM(P70=1)
JMP NORMAL_BAND_RESTORE_AM
NORMAL_BAND_RESTORE_FM:
mov a, @0xa5
mov 0x04, a
mov a, 0x00
mov 0x0c, a
inc 0x04
mov a, 0x00
mov 0x0d, a
inc 0x04
mov a, 0x00
mov 0x10, a
inc 0x04
mov a, 0x00
mov 0x04, a
jmp TOGGLE_BAND_OK
NORMAL_BAND_RESTORE_AM:
mov a, @0xf5
mov 0x04, a
mov a, 0x00
mov 0x08, a
inc 0x04
mov a, 0x00
mov 0x09, a
inc 0x04
mov a, 0x00
mov 0x10, a
inc 0x04
mov a, 0x00
mov 0x04, a
TOGGLE_BAND_OK:
MOV A, @0X01
XOR 0X07, A ;TOGGLE BAND
mov a, @0x02
xor 0x12, a ;toggle band display
bc 0x03, 5
ret
;;;;;;88888888888888888888888888888888888888888888888;;;;;;;;;
;;;;;;8backup current station,means a stable station8;;;;;;;;;
;;;;;;88888888888888888888888888888888888888888888888;;;;;;;;;
BACKUP_CURRENT_STATE:
mov a, 0x04
mov 0x16, a
JBS 0X07, 0 ;JUDGE CURRENT BAND IS AM(P70=0) OR FM(P70=1)
jmp BACKUP_CURRENT_STATE_am
BACKUP_CURRENT_STATE_fm:
mov a, @0xa5
mov 0x04, a
mov a, 0x0c
mov 0x00, a
inc 0x04
mov a, 0x0d
mov 0x00, a
inc 0x04
mov a, 0x10
mov 0x00, a
inc 0x04
mov a, 0x16
mov 0x00, a
mov a, @0xf9
mov 0x04, a
mov a, 0x0c
mov 0x00, a
inc 0x04
mov a, 0x0d
mov 0x00, a
inc 0x04
mov a, 0x10
mov 0x00, a
inc 0x04
mov a, 0x16
mov 0x00, a
jmp BACKUP_CURRENT_STATE_ok
BACKUP_CURRENT_STATE_am:
mov a, @0xf5
mov 0x04, a
mov a, 0x08
mov 0x00, a
inc 0x04
mov a, 0x09
mov 0x00, a
inc 0x04
mov a, 0x10
mov 0x00, a
inc 0x04
mov a, 0x16
mov 0x00, a
mov a, @0xf9
mov 0x04, a
mov a, 0x08
mov 0x00, a
inc 0x04
mov a, 0x09
mov 0x00, a
inc 0x04
mov a, 0x10
mov 0x00, a
inc 0x04
mov a, 0x16
mov 0x00, a
BACKUP_CURRENT_STATE_ok:
mov a, 0x16
mov 0x04, a
bc 0x03, 5
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;888888888888888888888888888888;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;从现在开始,是第三页
ORG 0X80A
;;;;;;88888888888888888888888888888888888888888888888;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;DISP_DATA_PROCESS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;88888888888888888888888888888888888888888888888;;;;;;;;;
;;;;;;;;;TEMP0~TEMP3中间计数
;;;;;;;;;DIG0~DIG3显示
;;;;;;;;;DATAH,DATAL实际存储数据
;;;;;;;;;将RC,RD或R8,R9的值,转成BCD码,存入R10的高四位和R11,还有R12的B0(1)位和B2(5)位.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TEMP0==0X18
TEMP1==0X19
TEMP2==0X1A
TEMP3==0X1B
TEMP4==0X13
TEMP==0X15
DATAH==0X16
DATAL==0X17
DCFLAG==0X1
ZERO==0X2
DISP_DATA_PROCESS:
JBS 0X07, 0 ;JUDGE AM(0)/FM(1)
JMP AM_DISP_DATA_PROCESS
MOV A, 0X0D
MOV DATAH, A
MOV A, 0X0C
MOV DATAL, A
JBC 0X1F, 0 ;STEP FREQ = 100K
JMP FM_DISP_DATA_50K ;SETP FREQ = 50K
JMP DATA_LOAD_OK
FM_DISP_DATA_50K:
JBC 0X0C, 0
BS 0X12, 2 ;(5)IS ON
BC 0X03, 0
RRC DATAH
RRC DATAL
JBS 0X0C, 0
BC 0X12, 2 ;(5)IS OFF
JMP DATA_LOAD_OK
AM_DISP_DATA_PROCESS: ;DARAH&DATAL MULTI 9(9K) OR 10(10K)
MOV A, 0X09
MOV DATAH, A
MOV A, 0X08
MOV DATAL, A
BC 0X03, 0
RLC DATAL
RLC DATAH
MOV A, DATAH
MOV TEMP1, A
MOV A, DATAL
MOV TEMP0, A
RLC DATAL
RLC DATAH
RLC DATAL
RLC DATAH
JBS 0X1F, 2 ;STEP_FREQ = 10K ,SKIP
MOV A,0X08
ADD DATAL, A
JBC 0X03, 0
INC DATAH
MOV A, TEMP1
JBS 0X1F, 2 ;STEP_FREQ = 10K ,SKIP
MOV A,0X09
ADD DATAH, A
DATA_LOAD_OK:
MOV A,DATAH ;byte3 change
AND A,@0X0F
CALL TAB2H
MOV TEMP,A
AND A,@0XF0
MOV TEMP3,A
SWAP TEMP3
MOV A,TEMP
AND A,@0X0F
MOV TEMP2,A
MOV A,DATAH
AND A,@0X0F
CALL TAB2L
MOV TEMP,A
AND A,@0XF0
MOV TEMP1,A
SWAP TEMP1
MOV A,TEMP
AND A,@0X0F
MOV TEMP0,A
MOV A,DATAL ;byte1 change
AND A,@0X0F
ADD A,TEMP0
JBS 0X3,DCFLAG
JMP ADD3NOC
INC TEMP1
AND A,@0X0F
ADD A,@0X6
ADD3NOC:
DAA
MOV TEMP0,A
AND A,@0XF0
JBC 0X3,ZERO
JMP ADDTMP2NOC
INC TEMP1
BC TEMP0,4
ADDTMP2NOC:
MOV A,DATAL ;byte2 change
AND A,@0XF0
MOV TEMP4,A
SWAPA TEMP4
CALL TAB1L
MOV TEMP,A
AND A,@0XF0
MOV TEMP4,A
MOV A,TEMP
AND A,@0X0F
ADD A,TEMP0
JBS 0X03,DCFLAG
JMP ADD0NOC
INC TEMP1
AND A,@0X0F
ADD A,@0X6
ADD0NOC:
DAA
MOV TEMP0,A
AND A,@0XF0
JBC 0X3,ZERO
JMP ADDTMP0NOC
INC TEMP1
BC TEMP0,4
ADDTMP0NOC:
SWAPA TEMP4
ADD A,TEMP1
JBS 0X03,DCFLAG
JMP ADD1NOC
INC TEMP2
AND A,@0X0F
ADD A,@0X6
ADD1NOC:
DAA
MOV TEMP1,A
AND A,@0XF0
JBC 0X3,ZERO
JMP ADDTMP1NOC
INC TEMP2
BC TEMP1,4
ADDTMP1NOC:
MOV A,DATAL
AND A,@0XF0
MOV TEMP4,A
SWAPA TEMP4
CALL TAB1H
ADD A,TEMP2
JBS 0X03,DCFLAG
JMP ADD2NOC
INC TEMP3
AND A,@0X0F
ADD A,@0X6
ADD2NOC:
DAA
MOV TEMP2,A
AND A,@0XF0
JBC 0X3,ZERO
JMP H_D
INC TEMP3
BC TEMP2,4
H_D:
SWAP TEMP0
MOV A,TEMP1
ADD A,TEMP0
MOV 0X11,A
MOV A,0X10
AND A,@0X0F
MOV 0X10,A
SWAPA TEMP2
OR 0X10,A
DJZ TEMP3
JMP RT
BS 0X12,0
BC 0X03, 6 ;SET ROM PAGE TO 00
RET
RT:
BC 0X12,0
BC 0X03, 6 ;SET ROM PAGE TO 00
RET
TAB2H:
ADD 0X2,A
RETL @0X00
RETL @0X02
RETL @0X05
RETL @0X07
RETL @0X10
RETL @0X12
RETL @0X15
RETL @0X17
TAB2L:
ADD 0X2,A
RETL @0X00
RETL @0X56
RETL @0X12
RETL @0X68
RETL @0X24
RETL @0X80
RETL @0X36
RETL @0X92
TAB1H:
ADD 0X2,A
RETL @0X00
RETL @0X00
RETL @0X00
RETL @0X00
RETL @0X00
RETL @0X00
RETL @0X00
RETL @0X01
RETL @0X01
RETL @0X01
RETL @0X01
RETL @0X01
RETL @0X01
RETL @0X02
RETL @0X02
RETL @0X02
TAB1L:
ADD 0X2,A
RETL @0X00
RETL @0X16
RETL @0X32
RETL @0X48
RETL @0X64
RETL @0X80
RETL @0X96
RETL @0X12
RETL @0X28
RETL @0X44
RETL @0X60
RETL @0X76
RETL @0X92
RETL @0X08
RETL @0X24
RETL @0X40
;;;;;;88888888888888888888888888888888888888888888888;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;ROUTINE OF DISPLAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;88888888888888888888888888888888888888888888888;;;;;;;;;
DISPLAY:
MOV A, @0X03 ;TRY THREE TIMES
MOV 0X13, A
MOV A, @0X02 ;SENT D4-D0 TWICE
MOV 0X16, A
SEND_BEGIN:
MOV A, 0X12
MOV 0X15, A
MOV A, @0X04
MOV 0X14, A
DLOOP_A12:
BS 0X06, 6
JBS 0X15, 3
JMP DISPOUT012
JMP DISPOUT112
DISPOUT012:
BC 0X06, 7
JMP DLOOP_B12
DISPOUT112:
BS 0X06, 7
DLOOP_B12:
RLC 0X15
BC 0X06, 6
DJZ 0X14
JMP DLOOP_A12
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A, 0X11
MOV 0X15, A
MOV A, @0X08
MOV 0X14, A
DLOOP_A11:
BS 0X06, 6
JBS 0X15, 7
JMP DISPOUT011
JMP DISPOUT111
DISPOUT011:
BC 0X06, 7
JMP DLOOP_B11
DISPOUT111:
BS 0X06, 7
DLOOP_B11:
RLC 0X15
BC 0X06, 6
DJZ 0X14
JMP DLOOP_A11
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A, 0X10
MOV 0X15, A
MOV A, @0X08
MOV 0X14, A
DLOOP_A10:
BS 0X06, 6
JBS 0X15, 7
JMP DISPOUT010
JMP DISPOUT110
DISPOUT010:
BC 0X06, 7
JMP DLOOP_B10
DISPOUT110:
BS 0X06, 7
DLOOP_B10:
RLC 0X15
BC 0X06, 6
DJZ 0X14
JMP DLOOP_A10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJZ 0X16
JMP SEND_BEGIN
BS 0X06,6
NOP
NOP
NOP
NOP
NOP
JBs 0X06,5
jmp SEND_FAIL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONFIRM:
DJZ 0X13
JMP SEND_AGAIN
JMP SEND_FAIL
SEND_AGAIN:
BC 0X06,6
MOV A, @0X02 ;SENT D4-D0 TWICE
MOV 0X16, A
NOP
NOP
NOP
NOP
JMP SEND_BEGIN
SEND_FAIL:
BC 0X06,6
BC 0X03, 6 ;SET ROM PAGE TO 00
RET
;;;;;;88888888888888888888888888888888888888888888888;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;PLL_DATA_PROCESS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;88888888888888888888888888888888888888888888888;;;;;;;;;
PLL_DATA_PROCESS:
MOV A, 0X04
MOV 0X13, A ;SAVE CORRENT R4
JBS 0X07, 0 ;JUDGE CURRENT BAND IS AM(P70=0) OR FM(P70=1)
JMP AM_PDATA_PROCESS
;;;;;;;;;;;;;;;;;;;;;
;FM_PDATA_PROCESS
;;;;;;;;;;;;;;;;;;;;;
FM_PDATA_PROCESS:
MOV A, @0XA1
MOV 0X04, A
MOV A, 0X0D
MOV 0X00, A
DEC 0X04
MOV A, 0X0C
MOV 0X00, A
JBC 0X1F, 1 ;IF P6[1]= 0 NOT JAPAN,SKIP
JMP PDATA_JAPAN_MODE ;IF P6[1]= 1,JAPAN MODE
JBC 0X1F, 0 ;0:STEP FREQ = 100K
JMP FM_STP_FQ_50K ;1:STEP FREQ = 50K
MOV A, @0X6B ;ADD IF=10.7MHz (006B)
ADD 0X00, A ;CURRENT R4=0XA0
INC 0X04
JBC 0X03, 0
INC 0X00 ;CURRENT R4=0XA1
JMP FM_PDATA_100_OK
PDATA_JAPAN_MODE:
MOV A, @0X95 ;JAPAN IF=-10.7MHz(FF95)
ADD 0X00, A
INC 0X04 ;CURRENT R4=0XA1
JBS 0X03, 0 ;if C_flag=1,R0 WILL NOT CHANGE
DEC 0X00 ;if C_flag=0,R0 SHOULD MINUS 1
FM_PDATA_100_OK: ;CURRENT 0XA0&0XA1 SHOULD MULTIPLY 2
BC 0X03, 0 ;CLEAR C FLAG
DEC 0X04 ;CURRENT R4=0XA0
RLC 0X00
INC 0X04 ;CURRENT R4=0XA1
RLC 0X00
JMP FM_PDATA_OK
FM_STP_FQ_50K:
MOV A, @0XD6 ;ADD IF=10.7MHz(00D6)
ADD 0X00, A ;CURRENT R4=0XA0
INC 0X04
JBC 0X03, 0
INC 0X00 ;CURRENT R4=0XA1
FM_PDATA_OK:
MOV A, 0X13
MOV 0X04, A ;RESTORE R4
BC 0X03, 6 ;SET ROM PAGE TO 00
RET
;;;;;;;;;;;;;;;;;
;AM_PDATA_PROCESS
;;;;;;;;;;;;;;;;;
AM_PDATA_PROCESS:
MOV A, @0XF1
MOV 0X04, A
MOV A, 0X09
MOV 0X00, A
DEC 0X04
MOV A, 0X08
MOV 0X00, A
; ADD IF OF AM 450K
MOV A, @0X2D ;this IS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -