📄 radio.src
字号:
VFD_SHOW_TURN_ON_TIME ENDP
.ENDIF
.IF 0
VFD_SHOW_SLEEP_TIME PROC
.ENDIF
VFD_SHOW_SLEEP_TIME:
;call noshow_con22
;mov a,STR_sleep
;call show_string
LD VFD_SHOW_DATA_ADDR,#06H
LD ACC_SEN_VAL,TUNER_SLEEP_TIME
CALL bintobcd_8
CALL VFD_SHOW_DATA
RET
.IF 0
VFD_SHOW_SLEEP_TIME ENDP
.ENDIF
;***************************************************************************************
.IF 0
compare_time proc
.ENDIF
compare_time:
PUSH R3
PUSH R2
PUSH R0
CLR R2
LD R3,SHOW_STATIC
CLR ACC_RET_VAL
LD ACC_SEN_VAL,secon_time
CP ACC_SEN_VAL,SHOW_OLD_TIME
JP UGE,no_add_60
ADD ACC_SEN_VAL,#3CH
no_add_60:
SUB ACC_SEN_VAL,SHOW_OLD_TIME
LDC R0,#1ED8H[RR2]
CP ACC_SEN_VAL,R0 ;根据不同的显示模示选择不同的时间
JP ULT,ret_compare_fail
LD ACC_RET_VAL,#01H
ret_compare_fail:
POP R0
POP R2
POP R3
RET
.IF 0
compare_time endp
.ENDIF
;******************************************************
;此段程序放在按键码后,不需检测无效还是无效
;在执行完后将
.IF 0
TURN_ON_OFF_SLEEP PROC
.ENDIF
TURN_ON_OFF_SLEEP:
CP Current_Key,#IR_TRON_KEY
JP NE,unite_troff_key
CP PREVIOUS_KEY,#IR_TRON_ON_KEY
JP EQ,tron_no_clear
CP Current_Key,PREVIOUS_KEY
JP EQ,tron_no_clear
CLR key_down_times
CLR_NO_FIRST
LD PREVIOUS_KEY,#IR_TRON_KEY
tron_no_clear:
NO_FIRST_IS_HIGH
JP Z,unite_ret
INC key_down_times
CP key_down_times,#32H
JP ULT,unite_ret
CLR key_down_times
SET_NO_FIRST
LD Current_Key,#IR_TRON_ON_KEY
RET
unite_troff_key:
CP Current_Key,#IR_TROFF_KEY
JP NE,unite_trtime_key
CP PREVIOUS_KEY,#IR_TROFF_ON_KEY
JP EQ,troff_no_clear
CP Current_Key,PREVIOUS_KEY
JP EQ,troff_no_clear
CLR key_down_times
CLR_NO_FIRST
LD PREVIOUS_KEY,#IR_TROFF_KEY
troff_no_clear:
NO_FIRST_IS_HIGH
JP Z,unite_ret
INC key_down_times
CP key_down_times,#32H
JP ULT,unite_ret
CLR key_down_times
SET_NO_FIRST
LD Current_Key,#IR_TROFF_ON_KEY
RET
unite_trtime_key:
CP Current_Key,#IR_TRTIME_KEY
JP NE,unite_sleep_key
CP PREVIOUS_KEY,#IR_TRTIME_ON_KEY
JP EQ,trtime_no_clear
CP Current_Key,PREVIOUS_KEY
JP EQ,trtime_no_clear
CLR key_down_times
CLR_NO_FIRST
LD PREVIOUS_KEY,#IR_TRTIME_KEY
trtime_no_clear:
NO_FIRST_IS_HIGH
JP Z,unite_ret
INC key_down_times
CP key_down_times,#32H
JP ULT,unite_ret
CLR key_down_times
SET_NO_FIRST
LD Current_Key,#IR_TRTIME_ON_KEY
RET
unite_sleep_key:
CP Current_Key,#IR_SLEEP_KEY
JP NE,unite_ret
CP PREVIOUS_KEY,#IR_SLEEP_ON_KEY
JP EQ,sleep_no_clear
CP Current_Key,PREVIOUS_KEY
JP EQ,sleep_no_clear
CLR key_down_times
CLR_NO_FIRST
LD PREVIOUS_KEY,#IR_SLEEP_KEY
sleep_no_clear:
NO_FIRST_IS_HIGH
JP Z,unite_ret
INC key_down_times
CP key_down_times,#32H
JP ULT,unite_ret
CLR key_down_times
LD Current_Key,#IR_SLEEP_ON_KEY
SET_NO_FIRST
RET
;激发IR_TRON_KEY IR_TROFF_KEY IR_SLEEP_KEY IR_TRTIME_KEY
CP Current_Key,#0FFH
JP NE,unite_ret
NO_FIRST_IS_LOW
JP Z,no_clear_first
CLR_NO_FIRST
no_clear_first:
CP key_down_times,#00H
JP EQ,unite_ret
CP PREVIOUS_KEY,#IR_TRON_KEY
JP EQ,activation_uniter_key
CP PREVIOUS_KEY,#IR_TROFF_KEY
JP EQ,activation_uniter_key
CP PREVIOUS_KEY,#IR_TRTIME_KEY
JP EQ,activation_uniter_key
CP PREVIOUS_KEY,#IR_SLEEP_KEY
JP NE,unite_ret
activation_uniter_key:
LD Current_Key,PREVIOUS_KEY
LD PREVIOUS_KEY,#0FEH
;***********************************************************************
unite_ret:
RET
.IF 0
TURN_ON_OFF_SLEEP ENDP
.ENDIF
;*********************************************************
.IF 0
repeat_all_key proc
.ENDIF
repeat_all_key:
;***************************************************
;if current_key =
; vol_ir_inc_key
; vol_ir_inc_key
;放在置有效键 之前
;then send repeat key
CP Current_Key,#IR_VOL_INC_KEY
JP EQ,repeat_key
CP Current_Key,#IR_VOL_DEC_KEY
JP EQ,repeat_key
RET
repeat_key:
INC same_key_rep_times
CP same_key_rep_times,#14H
JP ULT,ret_repeat_all_key
CLR same_key_rep_times
LD PREVIOUS_KEY,#0FEH
ret_repeat_all_key:
RET
.IF 0
repeat_all_key endp
.ENDIF
;*********************************************************
.IF 0
TRON_STATUS PROC
.ENDIF
TRON_STATUS:
KEY_VALID_IS_LOW
JP Z,tron_ret
CP Current_Key,#IR_TRON_ON_KEY
JP NE,tron_key
XOR_TUON_ON
CLR_KEY_VALID
LD SHOW_STATIC,#SHOW_TUON
RET
tron_key:
LD ACC_SEN_VAL,#SHOW_TUON_TIME
LD R0,#IR_TRON_KEY
LD R1,TUNER_ON_TIME_MINU
LD R2,TUNER_ON_TIME_HOUR
CALL TUNER_STATUS
LD TUNER_ON_TIME_MINU,R1
LD TUNER_ON_TIME_HOUR,R2
tron_ret:
RET
.IF 0
TRON_STATUS ENDP
.ENDIF
.IF 0
TROFF_STATUS PROC
.ENDIF
TROFF_STATUS:
KEY_VALID_IS_LOW
JP Z,troff_ret
CP Current_Key,#IR_TROFF_ON_KEY
JP NE,troff_key
XOR_TUOFF_ON
CLR_KEY_VALID
LD SHOW_STATIC,#SHOW_TUOFF
RET
troff_key:
LD ACC_SEN_VAL,#SHOW_TUOFF_TIME
LD R0,#IR_TROFF_KEY
LD R1,TUNER_OFF_TIME_MINU
LD R2,TUNER_OFF_TIME_HOUR
CALL TUNER_STATUS
LD TUNER_OFF_TIME_MINU,R1
LD TUNER_OFF_TIME_HOUR,R2
troff_ret:
RET
.IF 0
TROFF_STATUS ENDP
.ENDIF
.IF 0
TRTIME_STATUS PROC
.ENDIF
TRTIME_STATUS:
KEY_VALID_IS_LOW
JP Z,trtime1_ret
LD ACC_SEN_VAL,#SHOW_CLOCK
LD R0,#IR_TRTIME_KEY
LD R1,minute_time
LD R2,hour_time
CALL TUNER_STATUS
LD minute_time,R1
LD hour_time,R2
trtime1_ret:
RET
.IF 0
TRTIME_STATUS ENDP
.ENDIF
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; ACC_SEN_VAL IS SHOW_STATIC R0 IS IR_KEY
; R1 IS minute_time R2 IS hour_time
;NOTE:
; LD ACC_SEN_VAL,#SHOW_CLOCK
; LD RO,#IR_TRTIME_KEY
; LD R1,minute_time
; LD R2,hour_time
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.IF 0
TUNER_STATUS PROC
.ENDIF
TUNER_STATUS:
CP SHOW_STATIC,ACC_SEN_VAL
JP EQ,no_init_trtime
CP Current_Key,R0
JP NE,trtime_ret
CLR_FLASH_HOUR
CLR_KEY_VALID
LD SHOW_STATIC,ACC_SEN_VAL
JP trtime_ret
no_init_trtime:
CP Current_Key,R0
JP NE,trtime_vol_inc
XOR_FLASH_HOUR
ret
trtime_vol_inc:
CP Current_Key,#IR_VOL_INC_KEY
JP NE,trtime_vol_dec
CLR_KEY_VALID
FLASH_HOUR_IS_HIGH
JP Z,inc_time_hour
INC R1
CP R1,#3CH
JP ULT,no_clear_minute
CLR R1
no_clear_minute:
RET
inc_time_hour:
INC R2
CP R2,#18H
JP ULT,no_clear_hour
CLR R2
no_clear_hour:
RET
trtime_vol_dec:
CP Current_Key,#IR_VOL_DEC_KEY
JP NE,trtime_digital
CLR_KEY_VALID
FLASH_HOUR_IS_HIGH
JP Z,dec_time_hour
CP R1,#00H
JP NE,no_set_minute
LD R1,#3CH
no_set_minute:
DEC R1
RET
dec_time_hour:
CP R2,#00H
JP NE,no_set_hour
LD R2,#18H
no_set_hour:
DEC R2
RET
trtime_digital:
CALL GET_DIGITAL_VAL
CP ACC_RET_VAL,#00H
JP EQ,trtime_ret
FLASH_HOUR_IS_HIGH
JP Z,digital_hour
CP digital_val,#3CH
JP ULT,no_clear_digital_minute
CLR digital_val
no_clear_digital_minute:
LD R1,digital_val
RET
digital_hour:
CP digital_val,#18H
JP ULT,no_clear_digital_hour
CLR digital_val
no_clear_digital_hour:
LD R1,digital_val
trtime_ret:
RET
.IF 0
TUNER_STATUS ENDP
.ENDIF
.IF 0
TRSLEEP_STATUS PROC
.ENDIF
TRSLEEP_STATUS:
KEY_VALID_IS_LOW
JP Z,trsleep_ret
CP Current_Key,#IR_SLEEP_ON_KEY
JP NE,trsleep_key
XOR_SLEEP_ON
CLR_KEY_VALID
LD SHOW_STATIC,#SHOW_SLEEP
RET
trsleep_key:
CP SHOW_STATIC,#SHOW_SLEEP_TIME
JP EQ,no_init_trsleep
CP Current_Key,#IR_SLEEP_KEY
JP NE,trsleep_ret
CLR_FLASH_HOUR
CLR_KEY_VALID
LD SHOW_STATIC,#SHOW_SLEEP_TIME
RET
no_init_trsleep:
CP Current_Key,#IR_SLEEP_KEY
JP NE,sleep_vol_inc
LD SHOW_STATIC,#SHOW_FM
RET
sleep_vol_inc:
CP Current_Key,#IR_VOL_INC_KEY
JP NE,sleep_vol_dec
CLR_KEY_VALID
INC TUNER_SLEEP_TIME
CP TUNER_SLEEP_TIME,#5AH
JP ULT,trsleep_ret
CLR TUNER_SLEEP_TIME
RET
sleep_vol_dec:
CP Current_Key,#IR_VOL_DEC_KEY
JP NE,sleep_digital
CLR_KEY_VALID
CP TUNER_SLEEP_TIME,#00H
JP NE,no_set_sleep_time
LD TUNER_SLEEP_TIME,#5AH
no_set_sleep_time:
DEC TUNER_SLEEP_TIME
RET
sleep_digital:
CALL GET_DIGITAL_VAL
CP ACC_RET_VAL,#00H
JP EQ,trsleep_ret
CP digital_val,#5AH
JP ULT,ld_trsleep
CLR digital_val
ld_trsleep:
LD TUNER_SLEEP_TIME,digital_val
trsleep_ret:
RET
.IF 0
TRSLEEP_STATUS ENDP
.ENDIF
;*************************************************************
; eq function
;*************************************************************
.IF 0
EQ_key_par proc
.ENDIF
EQ_key_par:
EQ_JAZZ:
CP Current_Key,#IR_JAZZ_KEY
JP NE,EQ_FLAT
LD EQ_VAL,#00H
JP EQ_FUNCTION
EQ_FLAT:
CP Current_Key,#IR_FLAT_KEY
JP NE,EQ_CLASSIC
LD EQ_VAL,#00H
JP EQ_FUNCTION
EQ_CLASSIC:
CP Current_Key,#IR_CLASSIC_KEY
JP NE,EQ_ROCK
LD EQ_VAL,#00H
JP EQ_FUNCTION
EQ_ROCK:
CP Current_Key,#IR_ROCK_KEY
JP NE,EQ_SINGNED
LD EQ_VAL,#00H
JP EQ_FUNCTION
EQ_SINGNED:
CP Current_Key,#IR_CHANGE_EQ_KEY
JP NE,EQ_RET
LD EQ_VAL,#00H
EQ_FUNCTION:
CLR_KEY_VALID
LD ACC_SEN_VAL,#VFD_PANEL_CLASSIC
call VFD_NOSHOW_POINT
LD ACC_SEN_VAL,#VFD_PANEL_FLAT
call VFD_NOSHOW_POINT
LD ACC_SEN_VAL,#VFD_PANEL_JAZZ
call VFD_NOSHOW_POINT
LD ACC_SEN_VAL,#VFD_PANEL_ROCK
call VFD_NOSHOW_POINT
call VFD_SHOW_POINT
;mov a,40h
;or a,EQ_RAM
call PT2314_SEND
EQ_RET:
ret
.IF 0
EQ_key_par endp
.ENDIF
.IF 0
CLR_VFD_RAM PROC
.ENDIF
CLR_VFD_RAM:
LD R0,#VFD_SHOW_BYTE_ADDR
con_set_ram:
LD @R0,#00H
INC R0
CP R0,#9FH
JP NE,con_set_ram
ret
.IF 0
CLR_VFD_RAM ENDP
.ENDIF
.IF 0
show_volume_eq proc
.ENDIF
show_volume_eq:
call VFD_GetSW
AND ACC_RET_VAL,#0FH
XOR ACC_RET_VAL,#0FFH
RADIO_AUTO_SEARCH_dec_IS_LOW
JP Z,no_clear_eq_volume
CLR ACC_RET_VAL
RADIO_AUTO_SEARCH_inc_IS_LOW
JP Z,no_clear_eq_volume
CLR ACC_RET_VAL
no_clear_eq_volume:
TM ACC_RET_VAL,#08H
JP Z,clear_volume_max4
OR VFD_SHOW_BYTE_22,#02H
OR VFD_SHOW_BYTE_23,#0E0H
jp show_next_volume1
clear_volume_max4:
AND VFD_SHOW_BYTE_22,#0FDH
AND VFD_SHOW_BYTE_23,#01FH
show_next_volume1:
TM ACC_RET_VAL,#04H
JP Z,clear_volume_max3
OR VFD_SHOW_BYTE_22,#04H
OR VFD_SHOW_BYTE_23,#1CH
jp show_next_volume2
clear_volume_max3:
AND VFD_SHOW_BYTE_22,#0FBH
AND VFD_SHOW_BYTE_23,#0E3H
show_next_volume2:
TM ACC_RET_VAL,#02H
JP Z,clear_volume_max2
OR VFD_SHOW_BYTE_22,#88H
OR VFD_SHOW_BYTE_23,#03H
jp show_next_volume3
clear_volume_max2:
AND VFD_SHOW_BYTE_22,#77H
AND VFD_SHOW_BYTE_23,#0FCH
show_next_volume3:
TM ACC_RET_VAL,#01H
JP Z,clear_volume_max1
OR VFD_SHOW_BYTE_22,#71H
jp show_next_volume4
clear_volume_max1:
AND VFD_SHOW_BYTE_22,#8EH
show_next_volume4:
RET
.IF 0
show_volume_eq endp
.ENDIF
;******************************************************
;**********************************************************************
; VFD_SHOW_DATA_ADDR FROM VFD_SHOW_DATA_ADDR
; DATA FROM ACC
;
.IF 0
VFD_SHOW_DATA PROC
.ENDIF
;**********************************************************************
VFD_SHOW_DATA:
PUSH R0
LD VAL_VFD_ADDR,VFD_SHOW_DATA_ADDR
INC VAL_VFD_ADDR
LD R0,ACC_SEN_VAL
AND ACC_SEN_VAL,#0FH
call VFD_SHOW_CHAR
LD ACC_SEN_VAL,R0 ;HIGH
RR ACC_SEN_VAL
RR ACC_SEN_VAL
RR ACC_SEN_VAL
RR ACC_SEN_VAL
LD VAL_VFD_ADDR,VFD_SHOW_DATA_ADDR
AND ACC_SEN_VAL,#0FH
call VFD_SHOW_CHAR
POP R0
ret
.IF 0
VFD_SHOW_DATA ENDP
.ENDIF
;**************************************************
.IF 0
RL_FLASH_CHAR PROC
.ENDIF
RL_FLASH_CHAR:
LD R0,#FLASH_CHAR_ADDR
LD R1,#7H
LD R2,R0
INC R2
con_rl:
LD R3,@R2
LD @R0,R3
INC R0
INC R2
DEC R1
CP R1,#00H
JP NE,con_rl
RET
.IF 0
RL_FLASH_CHAR ENDP
.ENDIF
ORG 01E00H
DB 1H
DB 2H
DB 4H
DB 8H
DB 10H
DB 20H
DB 40H
DB 80H
ORG 01E08H
DB SEG0_A ,SEG0_B ,SEG0_C ,SEG0_D ,SEG0_E ,SEG0_F ,SEG0_G ,SEG0_H ,SEG0_I ,SEG0_J ,SEG0_K ,SEG0_L ,SEG0_M ,SEG0_N ,CHAR_NULL ,CHAR_NULL
DB SEG1_A ,SEG1_B ,SEG1_C ,SEG1_D ,SEG1_E ,SEG1_F ,SEG1_G ,SEG1_H ,SEG1_I ,SEG1_J ,SEG1_K ,SEG1_L ,SEG1_M ,SEG1_N ,CHAR_NULL ,CHAR_NULL
DB SEG2_A ,SEG2_B ,SEG2_C ,SEG2_D ,SEG2_E ,SEG2_F ,SEG2_G ,SEG2_H ,SEG2_I ,SEG2_J ,SEG2_K ,SEG2_L ,SEG2_M ,SEG2_N ,CHAR_NULL ,CHAR_NULL
DB SEG3_A ,SEG3_B ,SEG3_C ,SEG3_D ,SEG3_E ,SEG3_F ,SEG3_G ,SEG3_H ,SEG3_I ,SEG3_J ,SEG3_K ,SEG3_L ,SEG3_M ,SEG3_N ,CHAR_NULL ,CHAR_NULL
DB SEG4_A ,SEG4_B ,SEG4_C ,SEG4_D ,SEG4_E ,SEG4_F ,SEG4_G ,SEG4_H ,SEG4_I ,SEG4_J ,SEG4_K ,SEG4_L ,SEG4_M ,SEG4_N ,CHAR_NULL ,CHAR_NULL
DB SEG5_A ,SEG5_B ,SEG5_C ,SEG5_D ,SEG5_E ,SEG5_F ,SEG5_G ,SEG5_H ,SEG5_I ,SEG5_J ,SEG5_K ,SEG5_L ,SEG5_M ,SEG5_N ,CHAR_NULL ,CHAR_NULL
DB SEG6_A ,SEG6_B ,SEG6_C ,SEG6_D ,SEG6_E ,SEG6_F ,SEG6_G ,SEG6_H ,SEG6_I ,SEG6_J ,SEG6_K ,SEG6_L ,SEG6_M ,SEG6_N ,CHAR_NULL ,CHAR_NULL
DB SEG7_A ,SEG7_B ,SEG7_C ,SEG7_D ,SEG7_E ,SEG7_F ,SEG7_G ,SEG7_H ,SEG7_I ,SEG7_J ,SEG7_K ,SEG7_L ,SEG7_M ,SEG7_N ,CHAR_NULL ,CHAR_NULL
ORG 01E88H
DW CHAR_O_
DW CHAR_1_
DW CHAR_2_
DW CHAR_3_
DW CHAR_4_
DW CHAR_5_
DW CHAR_6_
DW CHAR_7_
DW CHAR_8_
DW CHAR_9_
DW CHAR_A_
DW CHAR_B_
DW CHAR_C_
DW CHAR_D_
DW CHAR_E_
DW CHAR_F_
DW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -