⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm_transmitter.asm

📁 FMSCR是用汇编语言编写的车载MP3源程序。
💻 ASM
📖 第 1 页 / 共 3 页
字号:
         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 + -