📄 fm_transmitter.asm
字号:
call radio_protocol
call disp_add_sub
call radio_display
ipc 70h
jb0 radio_up_sequ
call store_radio_i2c
rts
;******** radio final data initial *********
dn_data_initial:
lds add_sub_flag,00h
lds first_flag,00h
lds radio_num0,02h
lds radio_num1,0dh
lds disp0,00h
lds disp1,08h
lds disp2,00h
lds disp3,01h
lds data0,04h
lds data1,07h
lds data2,04h
lds data3,05h
rts
;******************************************
radio_dn_single:
lda first_flag
jz dn0
call dn_data_initial
dn0:
call radio_data_100KHz
call radio_data_decrease
call radio_protocol
call disp_add_sub
call radio_display
call store_radio_i2c
rts
;******************************************
radio_dn_sequ:
lds global_buf0,06h
lds global_buf1,0fh
call determine_radio_num
call count_radio_data
call count_radio_disp
lds add_sub_flag,00h
call radio_protocol
call disp_add_sub
call radio_display
ipc 70h
jb1 radio_dn_sequ
call store_radio_i2c
rts
;******************************************
determine_radio_num:
lda radio_num0
add* global_buf0
lda radio_num1
adc* global_buf1
lds 70h,02h
sub global_buf0
sta global_buf2
lds 70h,0dh
sbc global_buf1
sta global_buf3
jc determine_rn0
determine_rn2:
lda global_buf0
sta radio_num0
lda global_buf1
sta radio_num1
rts
determine_rn0:
lda global_buf2
jz determine_rn2
lda up_down_flag
jnz determine_rn1
lda global_buf2
sta radio_num0
lda global_buf3
sta radio_num1
rts
determine_rn1:
lds 70h,02h
add global_buf0
sta radio_num0
lds 70h,0dh
adc global_buf1
sta radio_num1
rts
;******* radio display add sub data *******
disp_add_sub:
lda add_sub_flag
jz disp_ad_end
call disp_add_sub_num
lda up_down_flag
jz disp_as1
dec* radio_num0
jc disp_as2
dec* radio_num1
disp_as2:
lda add_sub_num
jz disp_ad_end
sub* disp0
das* disp0
jc disp_ad_end
dec* disp1
das* disp1
jc disp_ad_end
dec* disp2
das* disp2
jc disp_ad_end
dec* disp3
jmp disp_ad_end
disp_as1:
inc* radio_num0
jnc disp_as3
inc* radio_num1
disp_as3:
lda add_sub_num
jz disp_ad_end
add* disp0
daa* disp0
jnc disp_ad_end
inc* disp1
daa* disp1
jnc disp_ad_end
inc* disp2
daa* disp2
jnc disp_ad_end
inc* disp3
nop
disp_ad_end:
lds add_sub_flag,01h
call compare_frequence
rts
;*****************************************
compare_frequence:
lda radio_num0
jnz compare_freq1
lda radio_num1
jnz compare_freq1
lds first_flag,01h
rts
compare_freq1:
lds first_flag,00h
lds global_buf0,02h
lds global_buf1,0dh
call compare_freq2
rts
compare_freq2:
lda global_buf0
sub radio_num0
jnz compare_freq2_0
lda global_buf1
sub radio_num1
jnz compare_freq2_0
lds final_flag,01h
rts
compare_freq2_0:
lds final_flag,00h
rts
;*****************************************
disp_add_sub_num:
lds add_sub_num,01h
rts
;*****************************************
count_radio_data:
lds data0,00h
lds data1,00h
lds data2,00h
lds data3,00h
lds global_buf0,04h
lds global_buf1,01h
call count_radio_data1
;tx2205_tx9213 module
lds global_buf0,08h
lds global_buf1,0fh
lds global_buf2,03h
lds global_buf3,04h
call radio_data_add1
rts
;******************************************
count_radio_data1:
lda global_buf1
jz count_radio_d1
count_radio_d0:
call radio_data_add
dec* global_buf1
jnz count_radio_d0
lda data2
sta data3
lda data1
sta data2
lda data0
sta data1
lds data0,00h
count_radio_d1:
lda global_buf0
jz count_radio_d3
count_radio_d2:
call radio_data_add
dec* global_buf0
jnz count_radio_d2
count_radio_d3:
rts
;*****************************************
radio_data_add:
lda radio_num0
add* data0
lda radio_num1
adc* data1
lda force_zero
adc* data2
lda force_zero
adc* data3
rts
;*****************************************
radio_data_add1:
lda global_buf0
add* data0
lda global_buf1
adc* data1
lda global_buf2
adc* data2
lda global_buf3
adc* data3
rts
;*****************************************
count_radio_disp:
lds disp0,00h
lds disp1,00h
lds disp2,00h
lds disp3,00h
call radio_disp_add
call hex_to_dec
lds global_buf0,00h
lds global_buf1,07h
lds global_buf2,08h
lds global_buf3,00h
call radio_disp_add1
rts
;*****************************************
radio_disp_add:
lda radio_num0
add* disp0
lda radio_num1
adc* disp1
lda force_zero
adc* disp2
lda force_zero
adc* disp3
rts
;*****************************************
radio_disp_add1:
lda global_buf0
add* disp0
daa* disp0
lda global_buf1
adc* disp1
daa* disp1
lda global_buf2
adc* disp2
daa* disp2
lda global_buf3
adc* disp3
rts
;*****************************************
hex_to_dec:
lda disp0
sta global_buf4
lda disp1
sta global_buf5
lda disp2
sta global_buf6
lda disp3
sta global_buf7
lds disp0,00h
lds disp1,00h
lds disp2,00h
lds disp3,00h
lda global_buf7
sta 70h
lds global_buf3,04h
lds global_buf2,00h
lds global_buf1,09h
lds global_buf0,06h
call hex_2_dec
lda global_buf6
sta 70h
lds global_buf3,00h
lds global_buf2,02h
lds global_buf1,05h
call hex_2_dec
lda global_buf5
sta 70h
lds global_buf2,00h
lds global_buf1,01h
call hex_2_dec
lda global_buf4
sta 70h
lds global_buf1,00h
lds global_buf0,01h
call hex_2_dec
rts
;***************************************
hex_2_dec:
lda 70h
jz hex_2_dec1
hex_2_dec0:
call radio_disp_add1
dec* 70h
jnz hex_2_dec0
hex_2_dec1:
rts
;*******************************************
read_i2c_radio_num:
call i2c_read_mode
lda i2c_data3
sta radio_num1
sub i2c_data1
jnz read_i2c_rn_end
lda i2c_data2
sta radio_num0
sub i2c_data0
jnz read_i2c_rn_end
lds 70h,02h
sub i2c_data2
lds 70h,0dh
sbc i2c_data3
jc read_i2c_rn_end
rts
read_i2c_rn_end:
lds radio_num0,00h
lds radio_num1,00h
rts
;********************************************
predivider_int:
sta reg_acc
maf reg_cf
lda led_flag
jz predivider_int1
ipc 72h
jb0 predivider_int0
jb1 predivider_int0
dec* led_flag
jnz predivider_int1
lds 72h,01h
lcp 1fh,02h
jmp predivider_int1
predivider_int0:
lds led_flag,0ah
predivider_int1:
lds bat_flag,00h
ipb 72h
jb3 predivider_int2
lds bat_flag,01h
predivider_int2:
lda halt_release
jnz predivider_end
call radio_display
predivider_end:
mra reg_cf
lda reg_acc
rts
;*******************************************
store_radio_i2c:
lds global_buf0,03h
store_radio_i2c0:
lds i2c_addr0,00h
lds i2c_addr1,00h
lda radio_num1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -