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

📄 i993_lcd_avr168.asm

📁 IPOD 线控程序(将IPOD AND IPHONE 的歌曲信息读出来显示的LCD 屏幕上) 适应于 所有的 苹果 MP3 和手机的机型
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	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 + -