📄 i993_lcd_avr168.asm
字号:
call playcurrentselection
call delay1s
call clrarscrren
call dis_first_info
call display_content_comom
cbi portb,led
call dis_logo
call delay_500ms
ret
;--------------------------------------
into_mp3_model:
; sbi portd,4
sbi portd,mute
clr r10
cbi portb,led
call out_exmodel
ldi r16,0
sts model_status,r16
;===========================================
into_radio_model:
ldi r16,16 ; read qs+register
sts eepromaddr_hi,r16
call EEPROM_read
lds r16,eepromdata_hi
sts qs_register,r16
ldi r17,2
mul r16,r17
sts eepromaddr_hi,r0
call EEPROM_read
lds r16,eepromdata_hi
lds r17,eepromdata_lo
subi r17,0x6b
sbci r16,0x03
brcc into_radio_model_1
ldi r16,0x03
sts frequency_hi,r16
ldi r16,0x6b
sts frequency_lo,r16
rjmp into_radio_model_3
into_radio_model_1:
lds r16,eepromdata_hi
lds r17,eepromdata_lo
subi r17,0x39
sbci r16,0x04
brcs into_radio_model_2
ldi r16,0x03
sts frequency_hi,r16
ldi r16,0x6b
sts frequency_lo,r16
rjmp into_radio_model_3
into_radio_model_2:
lds r16,eepromdata_hi
sts frequency_hi,r16
lds r16,eepromdata_lo
sts frequency_lo,r16
into_radio_model_3:
lds r16,qs_register
cpi r16,0
brne into_radio_model_setr10
clt
bld r10,1
rjmp into_radio_model_setr10_1
into_radio_model_setr10:
set
bld r10,1
into_radio_model_setr10_1:
;---------------------------------------------
call delay_20ms
datato1415_2:
call clrarscrren
call radio_hextobcd
call delay_100ms
sbrc r10,1
rjmp readeepromexit_1
call disfrequency
rjmp readeepromexit_2
readeepromexit_1:
call disfrequency_m
readeepromexit_2:
call ini_radio_data
ldi r16,0x11 ; 开 收音机
sts senddata+3,r16 ;swp2=0, standby=0, us/europe, xt=32.768 smute=0,hcc=0,snc=0 si=0 soft read search end
call dis_logo
call delay_500ms
call send5767
ret
;===========================================================
exit_radio_model:
ldi r16,0
sts model_status,r16
sts eepromdata_hi,r16
ldi r16,14
sts eepromaddr_hi,r16
call EEPROM_write ; ; 记录 模式
call ini_radio_data
ldi r16,0x51 ; 关 收音机
sts senddata+3,r16 ;swp2=0, standby=0, us/europe, xt=32.768 smute=0,hcc=0,snc=0 si=0 soft read search end
; call write_5767
call send5767
ret
;==================================================
ini_radio_data:
call AssembleFrequencyWord
lds r16,twpll_hi ;set pll high
sts senddata,r16
lds r16,twpll_lo ;set pll low
sts senddata+1,r16
ldi r16,0x40
sts senddata+2,r16 ;search=0 ssl1 ssl0 ,injecton=0 ,stereo, mr,ml off ,swp1=0
ldi r16,0x00
sts senddata+4,r16
ret
;======================================================
reset_program:
ldi r16,1
sts model_status,r16
call register_clear
call dis_first_info
call resetdbselection
call readipod
ret
vol_save:
lds r16,volregister
sts eepromdata_hi,r16
sts eepromdata_lo,r16
ldi r16,18
sts eepromaddr_hi,r16
rcall eeprom_write
ret
;======================================================搜台
search_add:
lds r16,senddata+2
ori r16,0x80
rjmp search_updon
search_mius:
lds r16,senddata+2
andi r16,0x7f
search_updon:
ldi r18,7
lds r17,volregister
sub r17,r18
brcs search_updon_01
mov r18,r17
search_updon_00:
cpi r18,0
breq search_updon_01
call vol_mius
call delay_20ms
dec r18
rjmp search_updon_00
search_updon_01:
sts senddata+2,r16
call disfrequency_search
search:
;-----------------------------------------
searchtai_1:
sbis pinb,play_key
rjmp readloop_2
searchtai_contine:
sbrc r10,5
rjmp searchtai_contine_1
call frequency_add
rjmp searchtai_contine_2
searchtai_contine_1:
call frequency_mius
searchtai_contine_2:
call AssembleFrequencyWord
lds r16,twpll_hi
ori r16,0xc0
sts senddata,r16
lds r16,twpll_lo
sts senddata+1,r16
; call write_5767 ;发搜索指令
call searsend5767
ldi r16,10
sts readtime,r16
readloop:
call delay_5ms
; call read_5767
call read5767
lds r16,readdata
sbrc r16,7
rjmp readloop_1
lds r16,readtime
dec r16
sts readtime,r16
brne readloop
rjmp searchtai_1
readloop_1:
sbrc r16,6
rjmp searchtai_1
;---------------------------------------------------没有到极限,显示当前搜索到的频率
readloop_2:
lds r16,readdata
andi r16,0x3f
lds r17,readdata+1
subi r17,0x9d
sbci r16,0x29
brcs readloop_2_error
lds r16,readdata
andi r16,0x3f
lds r17,readdata+1
subi r17,0x64
sbci r16,0x33
brcc readloop_2_error
lds r16,readdata
andi r16,0x3f
sts senddata,r16
sts twpll_hi,r16
lds r16,readdata+1
sts senddata+1,r16
sts twpll_lo,r16
readloop_2_0:
; call write_5767
call send5767
call disAssembleFrequencyWord
call radio_hextobcd
sbrc r10,1
rjmp readloop_3
call disfrequency
rjmp readloop_4
readloop_3:
call disfrequency_m
readloop_4:
call dly
sbis pinb,play_key
rjmp readloop_4
call dly
sbis pinb,pre_track_key
rjmp readloop_4
call dly
sbis pinb,next_track_key
rjmp readloop_4
rjmp exit_search
readloop_2_error:
call AssembleFrequencyWord
rjmp readloop_2_0
exit_search:
ldi r18,7
lds r17,volregister
sub r17,r18
brcs exit_search_1
mov r18,r17
exit_search_0:
cpi r18,0
breq exit_search_1
call vol_add
call delay_20ms
dec r18
rjmp exit_search_0
exit_search_1:
rjmp updown_exit
;***********************************************time program
;****************************************************radio remote program
remotefrequencyup:
clt
bld r10,5
rjmp remoteupdown
remotefrequencydown:
set
bld r10,5
remoteupdown:
sbrc r10,5
rjmp remoteupdown_2
call frequency_add
rjmp remoteupdown_3
remoteupdown_2:
call frequency_mius
remoteupdown_3:
call radio_hextobcd
sbrc r10,1
rjmp remoteupdown_4
call disfrequency
rjmp remoteupdown_5
remoteupdown_4:
call disfrequency_m
remoteupdown_5:
call AssembleFrequencyWord
lds r16,twpll_hi
sts senddata,r16
lds r16,twpll_lo
sts senddata+1,r16
; call write_5767
call send5767
bddownlose:
sbrc r10,5
rjmp bddownlose_1
ldi r16,50
sts key_time,r16
bddownlose_0:
call delay_20ms
sbic pinb,next_track_key
rjmp updown_exit
lds r16,key_time
dec r16
sts key_time,r16
cpi r16,0
brne bddownlose_0
rjmp search_add
bddownlose_1:
ldi r16,50
sts key_time,r16
bddownlose_1_0:
call delay_20ms
sbic pinb,pre_track_key
rjmp updown_exit
lds r16,key_time
dec r16
sts key_time,r16
cpi r16,0
brne bddownlose_1_0
rjmp search_mius
;-------------------------------------------------------- -保存最后频率
updown_exit:
sbrc r10,1
rjmp updown_exit_1
lds r16,frequency_lo
sts eepromdata_lo,r16
lds r16,frequency_hi
sts eepromdata_hi,r16
ldi r16,0
sts eepromaddr_hi,r16
call EEPROM_WRITE
updown_exit_1:
rjmp main
;=========================================================
qs_tai:
ldi r16,100
qs_tai_0:
call Delay_20ms
sbic pinb,play_key
rjmp qs_tai_1
dec r16
brne qs_tai_0
;=====================================save tai
lds r16,qs_register
ldi r17,2
mul r16,r17
sts eepromaddr_hi,r0
lds r16,frequency_hi
sts eepromdata_hi,r16
lds r16,frequency_lo
sts eepromdata_lo,r16
call EEPROM_write
call disfrequency_save
qs_tai_0_1:
sbis pinb,play_key
rjmp qs_tai_0_1
rjmp main
;=============================================qs tai
qs_tai_1:
set
lds r16,qs_register
inc r16
cpi r16,6
brne qs_tai_2
ldi r16,0
clt
qs_tai_2:
bld r10,1
sts qs_register,r16
ldi r17,2
mul r16,r17
sts eepromaddr_hi,r0
call EEPROM_read
;=========================================
lds r16,eepromdata_hi
lds r17,eepromdata_lo
subi r17,0x6b
sbci r16,0x03
brcc qs_tai_2_0
ldi r16,0x03
sts frequency_hi,r16
ldi r16,0x6b
sts frequency_lo,r16
rjmp qs_tai_2_exit
qs_tai_2_0:
lds r16,eepromdata_hi
lds r17,eepromdata_lo
subi r17,0x39
sbci r16,0x04
brcs qs_tai_2_1
ldi r16,0x03
sts frequency_hi,r16
ldi r16,0x6b
sts frequency_lo,r16
rjmp qs_tai_2_exit
qs_tai_2_1:
;========================================
lds r16,eepromdata_hi
sts frequency_hi,r16
lds r16,eepromdata_lo
sts frequency_lo,r16
qs_tai_2_exit:
call radio_hextobcd
sbrs r10,1
rjmp qs_tai_3
call disfrequency_m
rjmp qs_tai_4
qs_tai_3:
call disfrequency
qs_tai_4:
call AssembleFrequencyWord
lds r16,twpll_hi
sts senddata,r16
lds r16,twpll_lo
sts senddata+1,r16
; call write_5767
call send5767
ldi r16,16
sts eepromaddr_hi,r16
lds r16,qs_register
sts eepromdata_hi,r16
call EEPROM_write ; save qs
rjmp main
;=========================================================== zhong jian jian
center_key_program:
lds r16,main_level
cpi r16,0
brne center_key_program_1
rjmp first_center_program
center_key_program_1:
rjmp second_center_program
;==============================================
left_key_program:
lds r16,main_level
cpi r16,0
brne left_key_program_1
rjmp first_left_program
left_key_program_1:
rjmp second_left_program
;==============================================
down_key_progrm:
lds r16,main_level
cpi r16,0
brne down_key_program_1
rjmp first_down_program
down_key_program_1:
rjmp second_down_program
;=============================================
up_key_program:
lds r16,main_level
cpi r16,0
brne up_key_program_1
rjmp first_up_program
up_key_program_1:
rjmp second_up_program
;=======================================
right_key_program:
lds r16,main_level
cpi r16,0
brne right_key_program_1
rjmp first_right_program
right_key_program_1:
rjmp second_right_program
;********************************************************************
;================================================ 功能程序 开始
;****************************************** 中键
first_center_program:
;====================================================play=0 play =1 pause =2 FF =3 REW =4 stop
ldi r16,30
first_center_program_0:
sbic pinb,play_key
rjmp exPLAYPAUSE
call delay_20ms
dec r16
brne first_center_program_0
;-------------------------------------
first_center_program_1: ; wait lose key
;****************************************************** into set model
set
bld r11,2
ldi r16,1
sts main_level,r16
call dis_set_model ; dis set repeat shuffle
first_center_program_2:
sbis pinb,play_key
rjmp first_center_program_2
rjmp main
;===================================================================
second_center_program:
lds r16,first_status ; 光标在哪个位置
cpi r16,1
brne second_center_program_1
call setrepeat
rjmp second_center_program_2
;------------------------------------------------
second_center_program_1:
call setshuffle
second_center_program_2:
clt
bld r11,2
ldi r16,0
sts main_level,r16
call clrarscrren
call dis_first_info
call display_content_comom
second_center_program_3:
sbis pinb,play_key
rjmp second_center_program_3 ;wait lose key
rjmp main
;=========================================================
exPLAYPAUSE:
ldi r16,1
sts playcontrol_status,r16
call play_control
; call play_pause
call readipod_no_save
lds r16,play_status
cpi r16,0x0 ;55 play status aa pause status
brne exPLAYPAUSE_1
ldi r16,0x01
sts play_status,r16
;=====================================
sbi portd,mute
;========================================
rjmp exPLAYPAUSE_2
exPLAYPAUSE_1:
ldi r16,0x0
sts play_status,r16
cbi portd,mute
;--------------------------------------------------display playpause
exPLAYPAUSE_2:
call display_playinfo
ldi r16,0
sts dis_leixing,R16
rjmp main
;========================================中央键结束
;************************************************ 上键
;======================================第一级
first_up_program:
upkeyprogram:
lds r16,volregister
cpi r16,16
breq upkeyprogram_2
cpi r16,0
breq upkeyprogram_1
inc r16
sts volregister,r16
call vol_add
rjmp upkeyprogram_2
upkeyprogram_1:
inc r16
sts volregister,r16
lds r16,model_status
cpi r16,0
brne upkeyprogram_1_0
rcall send5767
rjmp upkeyprogram_2
upkeyprogram_1_0:
cbi portd,mute
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -