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

📄 fat.s

📁 LED条屏显示程序,但是对初学者
💻 S
📖 第 1 页 / 共 3 页
字号:
	brne L65
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L66
L65:
	clr R10
	clr R11
L66:
	ldd R2,y+13
	ldd R3,y+14
	and R2,R14
	and R3,R15
	and R2,R12
	and R3,R13
	and R2,R10
	and R3,R11
	tst R2
	brne X3
	tst R3
	brne X11
	xjmp L53
X11:
X3:
	.dbline 127
; 	   counter--; 
	ldd R0,y+12
	dec R0
	std y+12,R0
	.dbline 128
; 	}
	xjmp L53
L52:
	.dbline 129
;   else if((buffer[0]!=0XE5)&(buffer[11]==0x0f)&(buffer[12]==0x00))
	lds R24,_buffer
	cpi R24,229
	breq L71
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L72
L71:
	clr R14
	clr R15
L72:
	lds R24,_buffer+11
	cpi R24,15
	brne L73
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L74
L73:
	clr R12
	clr R13
L74:
	lds R2,_buffer+12
	tst R2
	brne L75
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L76
L75:
	clr R10
	clr R11
L76:
	movw R2,R14
	and R2,R12
	and R3,R13
	and R2,R10
	and R3,R11
	tst R2
	brne X4
	tst R3
	brne X12
	xjmp L67
X12:
X4:
	.dbline 130
;     {i=buffer[0]-0x40;
	.dbline 130
	lds R24,_buffer
	subi R24,64
	std y+11,R24
	.dbline 131
; 	 for(j=0;j<i;j++)
	clr R0
	std y+10,R0
	xjmp L80
L77:
	.dbline 132
	.dbline 133
	ldi R24,32
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R18,5
	ldi R19,0
	ldd R16,y+10
	clr R17
	subi R16,255  ; offset = 1
	sbci R17,255
	xcall lsl16
	movw R2,R16
	ldi R24,<_buffer
	ldi R25,>_buffer
	add R2,R24
	adc R3,R25
	std y+1,R3
	std y+0,R2
	ldd R2,y+8
	ldd R3,y+9
	movw R24,R2
	adiw R24,1
	std y+9,R25
	std y+8,R24
	ldi R24,5
	ldi R25,0
	clr R4
	clr R5
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsl32
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	movw R16,R2
	movw R18,R4
	xcall _SD_read_sector2
	.dbline 135
L78:
	.dbline 131
	ldd R0,y+10
	inc R0
	std y+10,R0
L80:
	.dbline 131
	ldd R0,y+10
	ldd R16,y+11
	cp R0,R16
	brsh X13
	xjmp L77
X13:
	.dbline 136
; 	     {
; 		 SD_read_sector2(mulu_Clus_number+((long)(Read_number++)<<5),buffer+(((int)j+1)<<5),32);
; 		
; 		 }
;      if((buffer[((int)i<<5)+8]==0x4D)&(buffer[((int)i<<5)+9]==0x50)&(buffer[((int)i<<5)+10]==0x33))
	ldi R18,5
	ldi R19,0
	clr R17
	xcall lsl16
	movw R30,R16
	ldi R24,<_buffer+8
	ldi R25,>_buffer+8
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,77
	brne L86
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L87
L86:
	clr R14
	clr R15
L87:
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldi R24,<_buffer+9
	ldi R25,>_buffer+9
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,80
	brne L88
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L89
L88:
	clr R12
	clr R13
L89:
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldi R24,<_buffer+10
	ldi R25,>_buffer+10
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,51
	brne L90
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L91
L90:
	clr R10
	clr R11
L91:
	movw R2,R14
	and R2,R12
	and R3,R13
	and R2,R10
	and R3,R11
	tst R2
	brne X5
	tst R3
	brne X14
	xjmp L68
X14:
X5:
	.dbline 137
; 	     { //处理数据了。
	.dbline 138
; 		  mp3_info.DIR_FstClusL[0]=buffer[((int)i<<5)+26];
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldi R24,<_buffer+26
	ldi R25,>_buffer+26
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _mp3_info+53,R2
	.dbline 139
; 	      mp3_info.DIR_FstClusL[1]=buffer[((int)i<<5)+27];
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldi R24,<_buffer+27
	ldi R25,>_buffer+27
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _mp3_info+53+1,R2
	.dbline 142
; 	   
; 	      //mp3_info.DIR_Filesize[0]=buffer[32*i+28];
; 	      mp3_info.DIR_Filesize[0]=buffer[((int)i<<5)+29];
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldi R24,<_buffer+29
	ldi R25,>_buffer+29
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _mp3_info+55,R2
	.dbline 143
; 	      mp3_info.DIR_Filesize[1]=buffer[((int)i<<5)+30];
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldi R24,<_buffer+30
	ldi R25,>_buffer+30
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _mp3_info+55+1,R2
	.dbline 147
; 	      //mp3_info.DIR_Filesize[3]=buffer[32*i+31];
; 			  
; 			  
; 		  if((UNICODE_point>0)&(CHINALIB_point>0))
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_UNICODE_point+2
	lds R5,_UNICODE_point+2+1
	lds R2,_UNICODE_point
	lds R3,_UNICODE_point+1
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	breq L104
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L105
L104:
	clr R12
	clr R13
L105:
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_CHINALIB_point+2
	lds R5,_CHINALIB_point+2+1
	lds R2,_CHINALIB_point
	lds R3,_CHINALIB_point+1
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	breq L106
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L107
L106:
	clr R10
	clr R11
L107:
	movw R2,R12
	and R2,R10
	and R3,R11
	tst R2
	brne X6
	tst R3
	brne X15
	xjmp L102
X15:
X6:
	.dbline 148
; 		    {Read_number=0;
	.dbline 148
	clr R0
	clr R1
	std y+9,R1
	std y+8,R0
	xjmp L109
L108:
	.dbline 150
; 			 while(i--)
; 			  {
	.dbline 151
; 			   for(j=0;j<10;j++)
	clr R0
	std y+10,R0
	xjmp L114
L111:
	.dbline 152
	ldd R2,y+8
	ldd R3,y+9
	movw R24,R2
	adiw R24,1
	std y+9,R25
	std y+8,R24
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldd R4,y+10
	clr R5
	add R30,R4
	adc R31,R5
	ldi R24,<_buffer+1
	ldi R25,>_buffer+1
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldi R24,<_buffer
	ldi R25,>_buffer
	movw R30,R2
	subi R30,212  ; offset = 300
	sbci R31,254
	add R30,R24
	adc R31,R25
	std z+0,R4
L112:
	.dbline 151
	ldd R0,y+10
	inc R0
	std y+10,R0
L114:
	.dbline 151
	ldd R24,y+10
	cpi R24,10
	brlo L111
	.dbline 153
; 			   buffer[300+Read_number++]=buffer[((int)i<<5)+j+1];
; 		       for(j=0;j<12;j++)
	clr R0
	std y+10,R0
	xjmp L119
L116:
	.dbline 154
	ldd R2,y+8
	ldd R3,y+9
	movw R24,R2
	adiw R24,1
	std y+9,R25
	std y+8,R24
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldd R4,y+10
	clr R5
	add R30,R4
	adc R31,R5
	ldi R24,<_buffer+14
	ldi R25,>_buffer+14
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldi R24,<_buffer
	ldi R25,>_buffer
	movw R30,R2
	subi R30,212  ; offset = 300
	sbci R31,254
	add R30,R24
	adc R31,R25
	std z+0,R4
L117:
	.dbline 153
	ldd R0,y+10
	inc R0
	std y+10,R0
L119:
	.dbline 153
	ldd R24,y+10
	cpi R24,12
	brlo L116
	.dbline 155
; 			   buffer[300+Read_number++]=buffer[((int)i<<5)+j+14];
; 			   for(j=0;j<4;j++)
	clr R0
	std y+10,R0
	xjmp L124
L121:
	.dbline 156
	ldd R2,y+8
	ldd R3,y+9
	movw R24,R2
	adiw R24,1
	std y+9,R25
	std y+8,R24
	ldi R18,5
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	movw R30,R16
	ldd R4,y+10
	clr R5
	add R30,R4
	adc R31,R5
	ldi R24,<_buffer+28
	ldi R25,>_buffer+28
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldi R24,<_buffer
	ldi R25,>_buffer
	movw R30,R2
	subi R30,212  ; offset = 300
	sbci R31,254
	add R30,R24
	adc R31,R25
	std z+0,R4
L122:
	.dbline 155
	ldd R0,y+10
	inc R0
	std y+10,R0
L124:
	.dbline 155
	ldd R24,y+10
	cpi R24,4
	brlo L121
	.dbline 157
L109:
	.dbline 149
	ldd R2,y+11
	clr R3
	mov R24,R2
	subi R24,1
	std y+11,R24
	tst R2
	breq X16
	xjmp L108
X16:
	.dbline 158
; 			   buffer[300+Read_number++]=buffer[((int)i<<5)+j+28];
; 			   }
; 			  mp3_info.Name_number=MAX_NAME_LENGTH;
	ldi R24,26
	sts _mp3_info+52,R24
	.dbline 160
; 			  
; 			  for(j=0;j<mp3_info.Name_number;j++)
	clr R0
	std y+10,R0
	xjmp L130
L127:
	.dbline 161
; 			     {
	.dbline 162
; 				  if((buffer[300+j*2]==0x2E)&(buffer[300+j*2+6]==0x33))     
	ldi R24,2
	ldd R0,y+10
	mul R24,R0
	movw R30,R0
	ldi R24,<_buffer+300
	ldi R25,>_buffer+300
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,46
	brne L136
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L137
L136:
	clr R12
	clr R13
L137:
	ldi R24,2
	ldd R0,y+10
	mul R24,R0
	movw R30,R0
	ldi R24,<_buffer+306
	ldi R25,>_buffer+306
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,51
	brne L138
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L139
L138:
	clr R10
	clr R11
L139:
	movw R2,R12
	and R2,R10
	and R3,R11
	tst R2
	brne X7
	tst R3
	breq L132
X7:
	.dbline 163
;                       mp3_info.Name_number=j;
	ldd R0,y+10
	sts _mp3_info+52,R0
L132:
	.dbline 164
; 				  for(i=0;i<31;i++)
	clr R0
	std y+11,R0
	xjmp L144
L141:
	.dbline 165
; 				   {
	.dbline 166
; 				    SD_read_sector2(UNICODE_point+((int)i<<8),buffer,256);
	ldi R24,256
	ldi R25,1
	std y+3,R25
	std y+2,R24
	ldi R24,<_buffer
	ldi R25,>_buffer
	std y+1,R25
	std y+0,R24
	ldd R2,y+11
	clr R3
	mov R3,R2
	clr R2
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	lds R8,_UNICODE_point+2
	lds R9,_UNICODE_point+2+1
	lds R6,_UNICODE_point
	lds R7,_UNICODE_point+1
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R16,R6
	movw R18,R8
	xcall _SD_read_sector2
	.dbline 167
; 					for(Read_number=0;Read_number<128;Read_number++)
	clr R0
	clr R1
	std y+9,R1
	std y+8,R0
	xjmp L148
L145:
	.dbline 168
; 					   {
	.dbline 169
; 					    if((buffer[Read_number<<1]==buffer[300+j*2])&(buffer[(Read_number<<1)+1]==buffer[300+j*2+1]))
	ldi R24,2
	ldd R0,y+10
	mul R24,R0
	movw R30,R0
	ldi R24,<_buffer+300
	ldi R25,>_buffer+300
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_buffer
	ldi R25,>_buffer
	ldd R30,y+8
	ldd R31,y+9
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R3,z+0
	cp R3,R2
	brne L153
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L154
L153:
	clr R12
	clr R13
L154:
	ldi R24,2
	ldd R0,y+10
	mul R24,R0
	movw R30,R0
	ldi R24,<_buffer+301
	ldi R25,>_buffer+301
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_buffer
	ldi R25,>_buffer
	ldd R30,y+8
	ldd R31,y+9
	lsl R30
	rol R31
	adiw R30,1
	add R30,R24
	adc R31,R25
	ldd R3,z+0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -