📄 radio.src
字号:
.ENDIF
;***********************************************************
.IF 0
PT2314_NOMUTE PROC
.ENDIF
PT2314_NOMUTE:
LD ACC_SEN_VAL,#80H
call PT2314_SEND
LD ACC_SEN_VAL,#0A0H
call PT2314_SEND
RET
.IF 0
PT2314_NOMUTE ENDP
.ENDIF
.IF 0
PT2314_MUTE PROC
.ENDIF
PT2314_MUTE:
LD ACC_SEN_VAL,#9FH
call PT2314_SEND
LD ACC_SEN_VAL,#0BFH
call PT2314_SEND
RET
.IF 0
PT2314_MUTE ENDP
.ENDIF
;**********************************************************************
; PT2313_IC2_START
;**********************************************************************
.IF 0
PT2314_IC2_START proc
.ENDIF
PT2314_IC2_START:
PT2314_DATA_OUT_MODE
SET_PT2314_DATA
call DELAY_TIME
SET_PT2314_CLK
call DELAY_TIME
CLR_PT2314_DATA
call DELAY_TIME ; /* 起始条件锁定时间大于4μs*/
CLR_PT2314_CLK
call DELAY_TIME
ret
.IF 0
PT2314_IC2_START endp
.ENDIF
;*************************************************************************
;*************************************************************************
;
; PT2313_IC2_END
;
.IF 0
PT2314_IC2_END proc
.ENDIF
;*************************************************************************
PT2314_IC2_END:
CLR_PT2314_CLK
CLR_PT2314_DATA
call DELAY_TIME;
SET_PT2314_CLK
call DELAY_TIME; /*结束条件建立时间大于4μs*/
SET_PT2314_DATA
call DELAY_TIME;
ret
.IF 0
PT2314_IC2_END endp
.ENDIF
;*************************************************************************
;*************************************************************************
;
; VAL_PT2313_SEND_DATA FORM ACC
;
.IF 0
PT2314_IC2_SEND_8 proc
.ENDIF
;*************************************************************************
PT2314_IC2_SEND_8:
PUSH R0
PUSH R1
LD R1,#08H
s_nextb:
CLR_PT2314_DATA
TM ACC_SEN_VAL,#80H
JP Z,no_set_data
SET_PT2314_DATA
no_set_data:
RL ACC_SEN_VAL
call DELAY_TIME
SET_PT2314_CLK
call DELAY_TIME
CLR_PT2314_CLK
DEC R1
CP R1,#00H
JP NE,s_nextb
call DELAY_TIME
PT2314_DATA_IN_MODE
call DELAY_TIME
SET_PT2314_CLK
call DELAY_TIME
test_ack:
PT2314_DATA_IS_HIGH
JP Z,ack_error_ret
CLR_PT2314_CLK
PT2314_DATA_OUT_MODE
call DELAY_TIME
LD ACC_RET_VAL,#01H
ret
ack_error_ret:
CLR_PT2314_CLK
call DELAY_TIME
PT2314_DATA_OUT_MODE
call DELAY_TIME
CLR ACC_RET_VAL
ret
.IF 0
PT2314_IC2_SEND_8 endp
.ENDIF
;*************************************************************************
;*************************************************************************
; MAIN:PT2313_SEND
;
; pt2313_send_data from acc
;
.IF 0
PT2314_SEND PROC
.ENDIF
;*************************************************************************
PT2314_SEND:
;----------send addr------------
PUSH ACC_SEN_VAL
call PT2314_IC2_START
LD ACC_SEN_VAL,#88H
call PT2314_IC2_SEND_8
CP ACC_RET_VAL,#0h
JP Z,send_error
;----------send val-------------
POP ACC_SEN_VAL
call PT2314_IC2_SEND_8
CP ACC_RET_VAL,#00H
JP Z,send_error
call PT2314_IC2_END
ret
send_error:
POP ACC_SEN_VAL
call PT2314_IC2_END
ret ;fail
.IF 0
PT2314_SEND ENDP
.ENDIF
;*****************************************************
; read byte in VAL_READ_24C02
;*****************************************************
.IF 0
IC2_READ_8 PROC
.ENDIF
IC2_READ_8:
LD ACC_SEN_VAL,#08H
PT2314_DATA_IN_MODE
r_byte:
SET_PT2314_CLK
call DELAY_TIME
RL VAL_READ_24C02
OR VAL_READ_24C02,#01H
PT2314_DATA_IS_HIGH
JP Z,no_clear_read_data
AND VAL_READ_24C02,#0FEH
no_clear_read_data:
call DELAY_TIME
CLR_PT2314_CLK
call DELAY_TIME
DEC ACC_SEN_VAL
CP ACC_SEN_VAL,#00H
JP NE,r_byte
SET_PT2314_CLK
call DELAY_TIME
CLR_PT2314_CLK
call DELAY_TIME
PT2314_DATA_OUT_MODE
ret
.IF 0
IC2_READ_8 ENDP
.ENDIF
;*******************************************************
;*******************************************************
; address from acc_send_val
; return read_val in VAL_READ_24C02
;*******************************************************
.IF 0
IC2_Read_Byte proc
.ENDIF
IC2_Read_Byte:
PUSH ACC_SEN_VAL
call PT2314_IC2_START
LD ACC_SEN_VAL,#0A0H
call PT2314_IC2_SEND_8 ;发送写命令
CP ACC_RET_VAL,#01H
JP Z,send_read_addr
POP ACC_SEN_VAL
;ret
JP read_error
send_read_addr:
POP ACC_SEN_VAL
call PT2314_IC2_SEND_8 ;发送需读取数据的地址
CP ACC_RET_VAL,#01H
JP NE,read_error
call PT2314_IC2_START
LD ACC_SEN_VAL,#0A1H
call PT2314_IC2_SEND_8 ;发送读命令
CP ACC_RET_VAL,#01H
JP NE,read_error
call IC2_READ_8 ;读取指定地址的数据
call PT2314_IC2_END
ret
read_error:
call PT2314_IC2_END
ret
.IF 0
IC2_Read_Byte endp
.ENDIF
;********************************************************
;*********************************************************
; input address FROM VAL_24C02_ADDR data from acc_SEN_VAL
;*********************************************************
.IF 0
IC2_Write_byte proc
.ENDIF
IC2_Write_byte:
PUSH ACC_SEN_VAL
call PT2314_IC2_START
LD ACC_SEN_VAL,#0A0H
call PT2314_IC2_SEND_8 ;发送写命令[7--4为器件地址,3--1为页码,0为模式]
CP ACC_RET_VAL,#01H
JP Z,send_write_addr
POP ACC_SEN_VAL
RET
send_write_addr:
LD ACC_SEN_VAL,VAL_24C02_ADDR
call PT2314_IC2_SEND_8 ;发送地址
CP ACC_RET_VAL,#01H
JP Z,send_write_data
POP ACC_SEN_VAL
RET
send_write_data:
POP ACC_SEN_VAL
call PT2314_IC2_SEND_8 ;写数据到指定地址
CP ACC_RET_VAL,#01H
JP Z,write_byte_end
RET
write_byte_end:
call PT2314_IC2_END
RET
.IF 0
IC2_Write_byte endp
.ENDIF
init .MACRO
CLR to0_L
CLR to1_H
CLR to2
CLR to3
CLR ACC_SEN_VAL
.ENDM
.IF 0
unbin_add_16 proc ;data0_Ldata1_H+data4_Ldata5_H---->to0to1_Hto2
.ENDIF
unbin_add_16:
init
ADD data0_L,data4_L
LD to0_L,data0_L
ADC data1_H,data5_H
LD to1_H,data1_H
ADC to2,#00H
ret
.IF 0
unbin_add_16 endp
.ENDIF
.IF 0
unbin_sub_16 proc ;data0_Ldata1_H-data4_Ldata5_H---->to0_Lto1_Hto2
.ENDIF
unbin_sub_16:
init
CP data0_L,data4_L
JP ULT,low_add_255
SUB data0_L,data4_L
JP high_sub
low_add_255:
CP data1_H,data5_H
JP ULE,sub_ret
DEC data1_H
XOR data4_L,#0FFH
ADD data0_L,data4_L
INC data0_L
high_sub:
CP data1_H,data5_H
JP ULT,sub_ret
LD to0_L,data0_L
SUB data1_H,data5_H
LD to1_H,data1_H
ret
sub_ret:
LD to2,#0FFH
RET
.IF 0
unbin_sub_16 endp
.ENDIF
.IF 0
bintobcd_16 proc ;data0_Ldata1_H---->to0_Lto1_Hto2to3
.ENDIF
bintobcd_16:
CLR FLASH_CHAR_5
LD to0_L,data0_L
LD to1_H,data1_H
con_sub_10000:
INC FLASH_CHAR_5
LD data1_H,to1_H
LD data0_L,to0_L
PUSH data1_H
PUSH data0_L
LD data5_H,#27H
LD data4_L,#10H
CALL unbin_sub_16
POP data0_L
POP data1_H
CP to2,#00H
JP Z,con_sub_10000
DEC FLASH_CHAR_5
LD to0_L,data0_L
LD to1_H,data1_H
clr FLASH_CHAR_4
con_sub_1000:
INC FLASH_CHAR_4
LD data1_H,to1_H
LD data0_L,to0_L
PUSH data1_H
PUSH data0_L
LD data5_H,#03H
LD data4_L,#0E8H
CALL unbin_sub_16
POP data0_L
POP data1_H
CP to2,#00H
JP Z,con_sub_1000
DEC FLASH_CHAR_4
LD to0_L,data0_L
LD to1_H,data1_H
CLR FLASH_CHAR_3
con_sub_100:
INC FLASH_CHAR_3
LD data1_H,to1_H
LD data0_L,to0_L
PUSH data1_H
PUSH data0_L
LD data5_H,#00H
LD data4_L,#64H
CALL unbin_sub_16
POP data0_L
POP data1_H
CP to2,#00H
JP Z,con_sub_100
DEC FLASH_CHAR_3
LD ACC_SEN_VAL,data0_L
CALL bintobcd_8
LD to0_L,ACC_SEN_VAL
RL FLASH_CHAR_4
RL FLASH_CHAR_4
RL FLASH_CHAR_4
RL FLASH_CHAR_4
OR FLASH_CHAR_4,FLASH_CHAR_3
LD to1_H,FLASH_CHAR_4
LD to2,FLASH_CHAR_5
RET
.IF 0
bintobcd_16 endp
.ENDIF
.IF 0
unbin_mul_16 proc
.ENDIF
unbin_mul_16:
init
LD count0,#10H
RCF
rradd16:
rrc to3
rrc to2
rrc data5_H
rrc data4_L
JP C,mul_add_c
JP rr116
mul_add_c:
ADD to2,data0_L
ADC to3,data1_H
rr116:
SUB count0,#01H
JP Z,unbin_mul_end
JP rradd16
unbin_mul_end:
rrc to3
rrc to2
rrc data5_H
rrc data4_L
LD to0_L,data4_L
LD to1_H,data5_H
ret
.IF 0
unbin_mul_16 endp
.ENDIF
;16bit bin to bcd
;***********************************************
;from acc_SEN_VAL
;return acc_SEN_VAL
;***********************************************
.IF 0
bintobcd_8 proc
.ENDIF
bintobcd_8:
clr data5_H
bin_tobcd:
LD data4_L,ACC_SEN_VAL
SUB ACC_SEN_VAL,#0AH
JP UGE,inc_10p
JP end_bcd
inc_10p:
inc data5_H
JP bin_tobcd
end_bcd:
LD ACC_SEN_VAL,data5_H
RL ACC_SEN_VAL
RL ACC_SEN_VAL
RL ACC_SEN_VAL
RL ACC_SEN_VAL
OR ACC_SEN_VAL,data4_L
ret
.IF 0
bintobcd_8 endp
.ENDIF
;***********************************************
;
;
; SET_DIGITAL_KEY IS 1 DIGITAL IS VALID
; digital_val
.IF 0
GET_DIGITAL_VAL PROC
.ENDIF
GET_DIGITAL_VAL:
PUSH R1
PUSH R2
PUSH R3
CLR ACC_RET_VAL
KEY_VALID_IS_HIGH
JP Z,get_digital_con
ret
get_digital_con:
CLR R3
CLR R2
get_next_digital:
LDC R1,#1EF0H[RR2]
CP Current_Key,R1
JP Z,mov_val_to_digital
INC R3
CP R3,#0BH ;
JP ULT,get_next_digital
JP get_digital_end
mov_val_to_digital:
CLR_KEY_VALID
OR ACC_RET_VAL,#01H ;RET SUCCES
CP digital_val,#09H
JP UGT,digi_10
LD digital_val,R3
;DEC digital_val
SET_DIGITAL_KEY
JP get_digital_end
digi_10:
ADD digital_val,R3
;DEC digital_val
CP R3,#0AH
JP Z,get_digital_end
SET_DIGITAL_KEY
get_digital_end:
POP R3
POP R2
POP R1
RET
.IF 0
GET_DIGITAL_VAL ENDP
.ENDIF
;*******************************************************************
.IF 0
SAME_VFD_KEY_TO_IR_KEY PROC
.ENDIF
SAME_VFD_KEY_TO_IR_KEY:
same_key_con:
;@@@@@@@@@@@@@@ TIME KEY @@@@@@@@@@@
CP Current_Key,#VFD_TROFF_KEY
JP Z,load_ir_troff_key
CP Current_Key,#VFD_TRON_KEY
JP Z,load_ir_tron_key
CP Current_Key,#VFD_SLEEP_KEY
JP Z,load_ir_sleep_key
CP Current_Key,#VFD_TRTIME_KEY
JP Z,load_ir_irtime_key
;@@@@@@@@@@@@@@ VOLUME KEY @@@@@@@@@
CP Current_Key,#VFD_VOL_DEC_KEY
JP Z,load_ir_vol_dec_key
CP Current_Key,#VFD_VOL_INC_KEY
JP Z,load_ir_vol_inc_key
CP Current_Key,#VFD_POWER_KEY
JP Z,load_ir_power_key
CP Current_Key,#VFD_MEM_KEY
JP Z,load_ir_mem_key
CP Current_Key,#VFD_FB_KEY
JP Z,load_ir_fb_key
CP Current_Key,#VFD_FF_KEY
JP Z,load_ir_ff_key
;@@@@@@@@@@@@@@ EQ KEY @@@@@@@@@@@@@@
CP Current_Key,#VFD_JAZZ_KEY
JP load_ir_jazz_key
CP Current_Key,#VFD_FLAT_KEY
JP load_ir_flat_key
CP Current_Key,#VFD_CLASSIC_KEY
JP load_ir_classic_key
CP Current_Key,#VFD_ROCK_KEY
JP load_ir_rock_key
CP Current_Key,#VFD_CHANGE_EQ_KEY
JP load_ir_change_eq_key
RET
load_ir_troff_key:
LD Current_Key,#IR_TROFF_KEY
RET
load_ir_tron_key:
LD Current_Key,#IR_TRON_KEY
RET
load_ir_sleep_key:
LD Current_Key,#IR_SLEEP_KEY
RET
load_ir_irtime_key:
LD Current_Key,#IR_TRTIME_KEY
RET
load_ir_vol_dec_key:
LD Current_Key,#IR_VOL_DEC_KEY
RET
load_ir_vol_inc_key:
LD Current_Key,#IR_VOL_INC_KEY
RET
load_ir_power_key:
LD Current_Key,#IR_POWER_KEY
RET
load_ir_mem_key:
LD Current_Key,#IR_MEM_KEY
RET
load_ir_fb_key:
LD Current_Key,#IR_FB_KEY
RET
load_ir_ff_key:
LD Current_Key,#IR_FF_KEY
RET
load_ir_jazz_key:
LD Current_Key,#IR_JAZZ_KEY
RET
load_ir_flat_key:
LD Current_Key,#IR_FLAT_KEY
RET
load_ir_classic_key:
LD Current_Key,#IR_CLASSIC_KEY
RET
load_ir_rock_key:
LD Current_Key,#IR_ROCK_KEY
RET
load_ir_change_eq_key:
LD Current_Key,#IR_CHANGE_EQ_KEY
RET
.IF 0
SAME_VFD_KEY_TO_IR_KEY ENDP
.ENDIF
;*********************************************************
.IF 0
volume_key_par proc
.ENDIF
volume_key_par:
CP Current_Key,#IR_VOL_INC_KEY
JP NE,vol_dec_ir_fun
vol_inc_fun:
;音量加
CP volume_val,#3CH
JP UGE,show_vol
INC volume_val
;show vol+
JP vol_fun
vol_dec_ir_fun:
CP Current_Key,#IR_VOL_DEC_KEY
JP Z,vol_dec_fun
;clr show_volume
vol_mute:
CP Current_Key,#IR_MUTE_KEY
JP Z,vol_mute_fun
RET
vol_mute_fun:
XOR_MUTE
LD ACC_SEN_VAL,#VFD_PANEL_MUTE
CALL VFD_NOSHOW_POINT
MUTE_IS_LOW
JP Z,noshow_mute_icon
LD ACC_SEN_VAL,#VFD_PANEL_MUTE
CALL VFD_SHOW_POINT
noshow_mute_icon:
RET
vol_dec_fun:
;音量减
CP volume_val,#00H
JP Z,show_vol
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -