📄 i993_lcd_avr168.asm
字号:
call dis_hold_blank
ret
;=============================================
;=========================================显示 设置内容
dis_set_model:
call clrarscrren
lds r16,first_status
cpi r16,0
brne dis_set_model_0
set
bld r11,1
rjmp dis_set_model_01
dis_set_model_0:
clt
bld r11,1
dis_set_model_01:
CALL tran_shuffle_to_ram
ldi r16,0
sts column_count,r16
LDI yL,LOW(back_geming_start) ; ipod read de data
LDI yH,HIGH(back_geming_start)
dis_set_model_1:
call utf8_to_uncode
sbrc r11,0
jmp dis_set_model_2
call data_tran
ldi r16,5
sts page_count,r16
call set_DISPLAY_CHAR
rjmp dis_set_model_1
;================================================
dis_set_model_2:
lds r16,first_status
cpi r16,1
brne dis_set_model_2_0
set
bld r11,1
rjmp dis_set_model_2_01
dis_set_model_2_0:
clt
bld r11,1
dis_set_model_2_01:
CALL tran_repeat_to_ram
ldi r16,0
sts column_count,r16
LDI yL,LOW(back_geming_start) ; ipod read de data
LDI yH,HIGH(back_geming_start)
dis_set_model_3:
call utf8_to_uncode
sbrc r11,0
jmp dis_set_model_4
call data_tran
ldi r16,3
sts page_count,r16
call set_DISPLAY_CHAR
rjmp dis_set_model_3
dis_set_model_4:
ret
;=====================================================
tran_shuffle_to_ram:
LDI ZL,LOW(set_shuffle_tab)
LDI ZH,HIGH(set_shuffle_tab)
set
bld r10,1
rjmp tran_to_ram
tran_repeat_to_ram:
clt
bld r10,1
LDI ZL,LOW(set_repeat_tab)
LDI ZH,HIGH(set_repeat_tab)
tran_to_ram:
ldi xl,low(back_geming_start)
ldi xh,high(back_geming_start)
CLC
ROL ZL
ROL ZH
tran_to_ram_lead:
ORI ZL,0B00000001
LPM r16,z
cpi r16,0x00
breq tran_to_ram_lead_exit
st x+,r16
ANDI ZL,0B11111110
LPM r16,z
cpi r16,0x00
breq tran_to_ram_lead_exit
st x+,r16
adiw zl,2
rjmp tran_to_ram_lead
tran_to_ram_lead_exit:
ldi r16,0x20
st x+,r16
st x+,r16
sbrs r10,1
st x+,r16
st x+,r16
sbrc r10,1
rjmp tran_shuffle_sub
tran_repeat_sub:
lds r16,repeat_status
cpi r16,0
brne tran_repeat_sub_1
LDI ZL,LOW(off_tab)
LDI ZH,HIGH(off_tab)
rjmp tran_repeat_sub_3
tran_repeat_sub_1:
cpi r16,1
brne tran_repeat_sub_2
LDI ZL,LOW(one_tab)
LDI ZH,HIGH(one_tab)
rjmp tran_repeat_sub_3
tran_repeat_sub_2:
LDI ZL,LOW(all_tab)
LDI ZH,HIGH(all_tab)
tran_repeat_sub_3:
rjmp tran_repeat_shuffle_sub
;--------------------------------------------------
tran_shuffle_sub:
lds r16,shuffle_status
cpi r16,0
brne tran_shuffle_sub_1
LDI ZL,LOW(off_tab)
LDI ZH,HIGH(off_tab)
rjmp tran_shuffle_sub_3
tran_shuffle_sub_1:
cpi r16,1
brne tran_shuffle_sub_2
LDI ZL,LOW(song_tab)
LDI ZH,HIGH(song_tab)
rjmp tran_shuffle_sub_3
tran_shuffle_sub_2:
LDI ZL,LOW(aLBUM_tab)
LDI ZH,HIGH(ALBUM_tab)
tran_shuffle_sub_3:
rjmp tran_repeat_shuffle_sub
tran_repeat_shuffle_sub:
CLC
ROL ZL
ROL ZH
tran_repeat_shuffle_sub_1:
ORI ZL,0B00000001
LPM r16,z
cpi r16,0x00
breq tran_repeat_shuffle_sub_exit
st x+,r16
ANDI ZL,0B11111110
LPM r16,z
cpi r16,0x00
breq tran_repeat_shuffle_sub_exit
st x+,r16
adiw zl,2
rjmp tran_repeat_shuffle_sub_1
tran_repeat_shuffle_sub_exit:
ldi r16,0
st x+,r16
st x+,r16
ret
;========================================
set_DISPLAY_CHAR:
lds r16,page_count
ori r16,0x40
call SdCmd
lds r16,column_count
ori r16,0x80
call SdCmd
ldi r18,6
set_DISPLAY_CHAR_1:
ORI ZL,0B00000001
LPM R16,Z
sbrc r11,1
com r16
call SdData
ANDI ZL,0B11111110
LPM R16,Z
sbrc r11,1
com r16
call SdData
ADIW ZL, 2
dec r18
brne set_DISPLAY_CHAR_1
;---------------------------------
lds r16,page_count
ori r16,0x40
dec r16
call SdCmd
lds r16,column_count
ori r16,0x80
call SdCmd
ldi r18,6
set_DISPLAY_CHAR_2:
ORI ZL,0B00000001
LPM R16,Z
sbrc r11,1
com r16
call SdData
ANDI ZL,0B11111110
LPM R16,Z
sbrc r11,1
com r16
call SdData
ADIW ZL, 2
dec r18
brne set_DISPLAY_CHAR_2
lds r16,column_count
ldi r17,6
set_DISPLAY_CHAR_4:
add r16,r17
sts column_count,r16
RET
;=================================================显示设置结束
;-----------------------------------------------speak
dis_speak:
ldi zh,high(font_speaktab)
ldi zl,low(font_speaktab)
ldi r16,0
sts column_count,r16
call lcd_first_weizi
ldi r16,3
sts display_byte_count,r16
call displayfigure_one_byte_icon
ret
;-----------------------------------------------vol
dis_vol:
ldi r16,6
sts column_count,r16
call lcd_first_weizi
ldi r17,0
lds r16,volregister
call hextobcd ; in r16 r17
lds r3,bcddata10
ldi r16,3
sts display_byte_count,r16
call displayfigure_one_byte
lds r3,bcddata1
call displayfigure_one_byte
ldi r16,0
call SdData
ldi r16,0
call SdData
ret
;=========================================================; repeat_all
dis_repeat:
ldi r16,20
sts column_count,r16
call lcd_first_weizi
dis_repeat_all_0:
call getrepeat
call readipod
lds r16,readipod_start+4
cpi r16,0x00
brne dis_repeat_all_0
lds r16,readipod_start+5
cpi r16,0x30
brne dis_repeat_all_0
lds r16,readipod_start+6
sts repeat_status,r16 ; 赋值给 repeat_status
cpi r16,2
brne first_info_1
ldi zl,low(all_repeattab)
ldi zh,high(all_repeattab)
rjmp first_info_3
first_info_1:
cpi r16,0
brne first_info_2
ldi zl,low(font_blank)
ldi zh,high(font_blank)
rjmp first_info_3
first_info_2:
ldi zl,low(one_repeattab)
ldi zh,high(one_repeattab)
first_info_3:
ldi r16,6
sts display_byte_count,r16
call displayfigure_one_byte_icon
ret
;==========================================================shuffle;
dis_shuffle:
ldi r16,6
sts display_byte_count,r16
call getshuffle
call readipod
lds r16,readipod_start+4
cpi r16,0x00
brne dis_shuffle
lds r16,readipod_start+5
cpi r16,0x2d
brne dis_shuffle
lds r16,readipod_start+6
sts shuffle_status,r16
cpi r16,1
brne dis_shuffle_1
ldi r16,44
sts column_count,r16
call lcd_first_weizi
ldi zl,low(font_blank)
ldi zh,high(font_blank)
call displayfigure_one_byte_icon
;----------------------------------------------------
ldi zl,low(shuffletab)
ldi zh,high(shuffletab)
ldi r16,32
sts column_count,r16
rjmp dis_shuffle_3
;====================================================
dis_shuffle_1:
cpi r16,2
brne dis_shuffle_2
ldi r16,32
sts column_count,r16
call lcd_first_weizi
ldi zl,low(font_blank)
ldi zh,high(font_blank)
call displayfigure_one_byte_icon
;---------------------------------------------------
ldi zl,low(shuffletab)
ldi zh,high(shuffletab)
ldi r16,44
sts column_count,r16
rjmp dis_shuffle_3
dis_shuffle_2:
ldi r16,32
sts column_count,r16
call lcd_first_weizi
ldi zl,low(font_blank)
ldi zh,high(font_blank)
call displayfigure_one_byte_icon
;---------------------------------
ldi r16,44
sts column_count,r16
call lcd_first_weizi
ldi zl,low(font_blank)
ldi zh,high(font_blank)
call displayfigure_one_byte_icon
rjmp dis_shuffle_exit
dis_shuffle_3:
call lcd_first_weizi
call displayfigure_one_byte_icon
dis_shuffle_exit:
ret
;====================================================display dian ci
dis_dianci:
ldi r16,56
sts column_count,r16
call lcd_first_weizi
call getpowerbatterystate
call readipod
lds r16,readipod_start+3
cpi r16,0x03
brne dis_dianci
lds r16,readipod_start+4
cpi r16,0x1b
brne dis_dianci
lds r16,readipod_start+6
sts dividend_0,r16
ldi r16,0
sts dividend_3,r16
sts dividend_2,r16
sts dividend_1,r16
sts divisor_3,r16
sts divisor_2,r16
sts divisor_1,r16
ldi r16,31
sts divisor_0,r16
call CHU40
lds r16,quotient_0
sts dianci_level,r16
call display_dianci_level
ret
;-----------------------------------------------------display_hold
dis_hold_blank:
ldi r16,72
sts column_count,r16
call lcd_first_weizi
ldi r18,21
first_info_7:
ldi r16,0
call SdData
dec r18
brne first_info_7
ret
;------------------------------------------
dis_hold:
ldi r16,72
sts column_count,r16
call lcd_first_weizi
first_info_8:
LDI ZL,LOW(h_tab)
LDI ZH,HIGH(h_tab)
ldi r16,3
sts display_byte_count,r16
call displayfigure_one_byte_icon
LDI ZL,LOW(o_tab)
LDI ZH,HIGH(o_tab)
call displayfigure_one_byte_icon
LDI ZL,LOW(l_tab)
LDI ZH,HIGH(l_tab)
call displayfigure_one_byte_icon
LDI ZL,LOW(d_tab)
LDI ZH,HIGH(d_tab)
call displayfigure_one_byte_icon
first_info_9:
ret
;============================================================
display_dianci_level:
lds r18,dianci_level
ldi r19,14
LDI ZL,LOW(diancitab)
LDI ZH,HIGH(diancitab)
CLC
ROL ZL
ROL ZH
ORI ZL,0B00000001
LPM r16,z
call SdData
ANDI ZL,0B11111110
LPM r16,z
call SdData
display_dianci_level_0:
adiw zl,2
ORI ZL,0B00000001
LPM r16,z
cpi r18,0
breq display_dianci_level_1
dec r18
ori r16,0b00111100
display_dianci_level_1:
call SdData
ANDI ZL,0B11111110
LPM r16,z
cpi r18,0
breq display_dianci_level_2
dec r18
ori r16,0b00111100
display_dianci_level_2:
call SdData
dec r19
dec r19
brne display_dianci_level_0
ret
;=============================================================
lcd_first_weizi:
ldi r16,0x45
lcd_weizi:
call SdCmd ;page
lds r16,column_count
ori r16,0x80
call SdCmd ;column
ret
;===========================================
display_jidu_key:
ldi r16,11
sts column_count,r16
;call zhuan_column_count
call display_jidu_key_dis
ret
display_playinfo:
ldi r16,0
sts column_count,r16
call clear_second_display
call pofang_zhuangtai
;-----------------------------------------------------------
;ldi r16,11
;sts column_count,r16
call display_jidu
;-----------------------------------------------------------
call display_qumu
ret
;========================================================显示歌名
display_gequ_ming:
clt
bld r11,7
ldi r16,0x20
sts distype,r16
call getdistype_name
lds r16,readipod_start+5
cpi r16,0x21
brne display_gequ_ming_exit
lds r16,readipod_start+6
cpi r16,0
breq display_gequ_ming_exit
ldi r16,0
sts column_count,r16
ldi zl,low(font_miuse_tab)
ldi zh,high(font_miuse_tab)
ldi r16,5
sts display_byte_count,r16
call displayfigure_two_byte_icon
call display_geming_21_23_25
ret
display_gequ_ming_exit:
set
bld r11,7
ret
;=========================================================显示演唱者
dis_artist_ming:
clt
bld r11,7
ldi r16,0x22
sts distype,r16
call getdistype_name
lds r16,readipod_start+5
cpi r16,0x23
brne dis_artist_ming_exit
lds r16,readipod_start+6
cpi r16,0
breq dis_artist_ming_exit
ldi r16,0
sts column_count,r16
ldi zl,low(font_artist_tab)
ldi zh,high(font_artist_tab)
ldi r16,5
sts display_byte_count,r16
call displayfigure_two_byte_icon
call display_geming_21_23_25
ret
dis_artist_ming_exit:
set
bld r11,7
ret
;=======================================================显示专辑名
dis_album_ming:
clt
bld r11,7
ldi r16,0x24
sts distype,r16
call getdistype_name
lds r16,readipod_start+5
cpi r16,0x25
brne dis_album_ming_exit
lds r16,readipod_start+6
cpi r16,0
breq dis_album_ming_exit
ldi r16,0
sts column_count,r16
ldi zl,low(font_album_tab)
ldi zh,high(font_album_tab)
ldi r16,5
sts display_byte_count,r16
call displayfigure_two_byte_icon
call display_geming_21_23_25
ret
dis_album_ming_exit:
set
bld r11,7
ret
;--------------------------------------------------------display_qumu
display_qumu:
;------------------------------------------fen mu
clt
bld r10,1
call getcurrentplaytrackindex
call readipod
lds r17,playnumber_start+2
sts dissendipodcount_hi,r17
lds r16,playnumber_start+3
sts dissendipodcount_lo,r16
inc r16
cpi r16,0
brne display_qumu_0_0
inc r17
display_qumu_0_0:
call hextobcd
lds r3,bcddata10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -