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

📄 fat.s

📁 LED条屏显示程序,但是对初学者
💻 S
📖 第 1 页 / 共 3 页
字号:
	cp R3,R2
	brne L155
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L156
L155:
	clr R10
	clr R11
L156:
	movw R2,R12
	and R2,R10
	and R3,R11
	tst R2
	brne X8
	tst R3
	breq L149
X8:
	.dbline 170
; 					      {
	.dbline 171
; 						   mp3_info.NAME[j]=Read_number+((int)i<<7);
	ldi R18,7
	ldi R19,0
	ldd R16,y+11
	clr R17
	xcall lsl16
	ldd R4,y+8
	ldd R5,y+9
	add R4,R16
	adc R5,R17
	ldi R24,2
	ldd R0,y+10
	mul R24,R0
	movw R30,R0
	ldi R24,<_mp3_info
	ldi R25,>_mp3_info
	add R30,R24
	adc R31,R25
	std z+1,R5
	std z+0,R4
	.dbline 172
; 						   i=40;
	ldi R24,40
	std y+11,R24
	.dbline 173
; 						   break;
	xjmp L147
L149:
	.dbline 175
L146:
	.dbline 167
	ldd R24,y+8
	ldd R25,y+9
	adiw R24,1
	std y+9,R25
	std y+8,R24
L148:
	.dbline 167
	ldd R24,y+8
	ldd R25,y+9
	cpi R24,128
	ldi R30,0
	cpc R25,R30
	brsh X17
	xjmp L145
X17:
L147:
	.dbline 176
L142:
	.dbline 164
	ldd R0,y+11
	inc R0
	std y+11,R0
L144:
	.dbline 164
	ldd R24,y+11
	cpi R24,31
	brsh X18
	xjmp L141
X18:
	.dbline 177
; 						  }
; 						}
; 				    }
; 				   if(i!=41)
	cpi R24,41
	breq L157
	.dbline 178
; 			          mp3_info.NAME[j]=0x000A;     //OFFSET.0x3e是*
	ldi R24,2
	ldd R0,y+10
	mul R24,R0
	movw R30,R0
	ldi R24,<_mp3_info
	ldi R25,>_mp3_info
	add R30,R24
	adc R31,R25
	ldi R24,10
	ldi R25,0
	std z+1,R25
	std z+0,R24
L157:
	.dbline 179
L128:
	.dbline 160
	ldd R0,y+10
	inc R0
	std y+10,R0
L130:
	.dbline 160
	lds R2,_mp3_info+52
	ldd R0,y+10
	cp R0,R2
	brsh X19
	xjmp L127
X19:
	.dbline 180
; 			      }
; 			}
L102:
	.dbline 181
; 		  counter--;
	ldd R0,y+12
	dec R0
	std y+12,R0
	.dbline 182
; 		 }
	.dbline 183
; 	 }
	xjmp L68
L67:
	.dbline 184
;   else if((buffer[0]!=0XE5)&(buffer[8]==0x4D)&(buffer[9]==0x50)&(buffer[10]==0x33))
	lds R24,_buffer
	cpi R24,229
	breq L164
	ldi R24,1
	ldi R25,0
	std y+16,R25
	std y+15,R24
	xjmp L165
L164:
	clr R0
	clr R1
	std y+16,R1
	std y+15,R0
L165:
	lds R24,_buffer+8
	cpi R24,77
	brne L166
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L167
L166:
	clr R14
	clr R15
L167:
	lds R24,_buffer+9
	cpi R24,80
	brne L168
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L169
L168:
	clr R10
	clr R11
L169:
	lds R24,_buffer+10
	cpi R24,51
	brne L170
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L171
L170:
	clr R12
	clr R13
L171:
	ldd R2,y+15
	ldd R3,y+16
	and R2,R14
	and R3,R15
	and R2,R10
	and R3,R11
	and R2,R12
	and R3,R13
	tst R2
	brne X9
	tst R3
	breq L159
X9:
	.dbline 185
; 	 {//处理数据了。
	.dbline 188
;               //mp3_info.Name_number=0;
; 			  
; 			  mp3_info.DIR_FstClusL[0]=buffer[26];
	lds R2,_buffer+26
	sts _mp3_info+53,R2
	.dbline 189
; 	          mp3_info.DIR_FstClusL[1]=buffer[27];
	lds R2,_buffer+27
	sts _mp3_info+53+1,R2
	.dbline 192
; 	   
; 	          //mp3_info.DIR_Filesize[0]=buffer[28];
; 	          mp3_info.DIR_Filesize[0]=buffer[29];
	lds R2,_buffer+29
	sts _mp3_info+55,R2
	.dbline 193
; 	          mp3_info.DIR_Filesize[1]=buffer[30];
	lds R2,_buffer+30
	sts _mp3_info+55+1,R2
	.dbline 196
; 	          //mp3_info.DIR_Filesize[3]=buffer[31];
; 			  
; 	  counter--;
	ldd R0,y+12
	dec R0
	std y+12,R0
	.dbline 197
; 	 }  
L159:
L68:
L53:
	.dbline 199
L50:
	.dbline 121
	ldd R0,y+12
	tst R0
	breq X20
	xjmp L49
X20:
	.dbline -2
L46:
	adiw R28,17
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym l counter 12 c
	.dbsym l mulu_Clus_number 4 l
	.dbsym l i 11 c
	.dbsym l j 10 c
	.dbsym l Read_number 8 i
	.dbsym r number 10 c
	.dbend
	.dbfunc e DAT_Directory _DAT_Directory fV
;    Read_number -> y+8
; mulu_Clus_number -> y+4
	.even
_DAT_Directory::
	xcall push_gset5
	sbiw R28,12
	.dbline -1
	.dbline 205
; 	
;  }
; 
; }
; 
; //=======================================================================
; void DAT_Directory(void)
; {
	.dbline 210
; 
;  uint16 Read_number;
;  uint32 mulu_Clus_number;
;  
;  Read_number=0;
	clr R0
	clr R1
	std y+9,R1
	std y+8,R0
	.dbline 211
;  mulu_Clus_number=fat_info.Firstgengmulu;
	lds R2,_fat_info+3
	lds R3,_fat_info+3+1
	clr R4
	clr R5
	movw R30,R28
	std z+4,R2
	std z+5,R3
	std z+6,R4
	std z+7,R5
	.dbline 212
;  mulu_Clus_number<<=9;
	ldi R24,9
	ldi R25,0
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsl32
	movw R30,R28
	std z+4,R16
	std z+5,R17
	std z+6,R18
	std z+7,R19
	xjmp L185
L184:
	.dbline 215
;  
;  while(1)
;  {
	.dbline 216
;   SD_read_sector2(mulu_Clus_number+((long)(Read_number++)<<5),buffer,32);
	ldi R24,32
	ldi R25,0
	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+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 217
;   if((buffer[0]!=0XE5)&(buffer[8]==0x44)&(buffer[9]==0x41)&(buffer[10]==0x54))
	lds R24,_buffer
	cpi R24,229
	breq L192
	ldi R24,1
	ldi R25,0
	std y+11,R25
	std y+10,R24
	xjmp L193
L192:
	clr R0
	clr R1
	std y+11,R1
	std y+10,R0
L193:
	lds R24,_buffer+8
	cpi R24,68
	brne L194
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L195
L194:
	clr R14
	clr R15
L195:
	lds R24,_buffer+9
	cpi R24,65
	brne L196
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L197
L196:
	clr R12
	clr R13
L197:
	lds R24,_buffer+10
	cpi R24,84
	brne L198
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L199
L198:
	clr R10
	clr R11
L199:
	ldd R2,y+10
	ldd R3,y+11
	and R2,R14
	and R3,R15
	and R2,R12
	and R3,R13
	and R2,R10
	and R3,R11
	tst R2
	brne X21
	tst R3
	brne X24
	xjmp L187
X24:
X21:
	.dbline 218
; 	{ 
	.dbline 219
; 	 if((buffer[0]==0X55)&(buffer[1]==0x4e)&(buffer[2]==0x49))
	lds R24,_buffer
	cpi R24,85
	brne L204
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L205
L204:
	clr R14
	clr R15
L205:
	lds R24,_buffer+1
	cpi R24,78
	brne L206
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L207
L206:
	clr R12
	clr R13
L207:
	lds R24,_buffer+2
	cpi R24,73
	brne L208
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L209
L208:
	clr R10
	clr R11
L209:
	movw R2,R14
	and R2,R12
	and R3,R13
	and R2,R10
	and R3,R11
	tst R2
	brne X22
	tst R3
	brne X25
	xjmp L200
X25:
X22:
	.dbline 220
; 	   {UNICODE_point=(((long)buffer[27]<<8)+buffer[26]-2)*(fat_info.BPB_SecPerClus)+fat_info.FirstDateSecter; //簇的头扇区号 
	.dbline 220
	ldi R24,8
	ldi R25,0
	lds R2,_buffer+27
	clr R3
	clr R4
	clr R5
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsl32
	movw R2,R16
	movw R4,R18
	lds R6,_buffer+26
	clr R7
	clr R8
	clr R9
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	ldi R20,2
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sub R2,R20
	sbc R3,R21
	sbc R4,R22
	sbc R5,R23
	lds R6,_fat_info+1
	clr R7
	clr R8
	clr R9
	st -y,R9
	st -y,R8
	st -y,R7
	st -y,R6
	movw R16,R2
	movw R18,R4
	xcall empy32s
	movw R2,R16
	movw R4,R18
	lds R6,_fat_info+5
	lds R7,_fat_info+5+1
	clr R8
	clr R9
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	sts _UNICODE_point+1,R3
	sts _UNICODE_point,R2
	sts _UNICODE_point+2+1,R5
	sts _UNICODE_point+2,R4
	.dbline 221
; 	    UNICODE_point<<=9;
	ldi R24,9
	ldi R25,0
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsl32
	sts _UNICODE_point+1,R17
	sts _UNICODE_point,R16
	sts _UNICODE_point+2+1,R19
	sts _UNICODE_point+2,R18
	.dbline 222
; 	   }
	xjmp L201
L200:
	.dbline 223
; 	 else if((buffer[0]==0X43)&(buffer[1]==0x48)&(buffer[2]==0x49))
	lds R24,_buffer
	cpi R24,67
	brne L218
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L219
L218:
	clr R10
	clr R11
L219:
	lds R24,_buffer+1
	cpi R24,72
	brne L220
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L221
L220:
	clr R14
	clr R15
L221:
	lds R24,_buffer+2
	cpi R24,73
	brne L222
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L223
L222:
	clr R12
	clr R13
L223:
	movw R2,R10
	and R2,R14
	and R3,R15
	and R2,R12
	and R3,R13
	tst R2
	brne X23
	tst R3
	brne X26
	xjmp L214
X26:
X23:
	.dbline 224
; 	   {CHINALIB_point=(((long)buffer[27]<<8)+buffer[26]-2)*(fat_info.BPB_SecPerClus)+fat_info.FirstDateSecter; //簇的头扇区号 
	.dbline 224
	ldi R24,8
	ldi R25,0
	lds R2,_buffer+27
	clr R3
	clr R4
	clr R5
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsl32
	movw R2,R16
	movw R4,R18
	lds R6,_buffer+26
	clr R7
	clr R8
	clr R9
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	ldi R20,2
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sub R2,R20
	sbc R3,R21
	sbc R4,R22
	sbc R5,R23
	lds R6,_fat_info+1
	clr R7
	clr R8
	clr R9
	st -y,R9
	st -y,R8
	st -y,R7
	st -y,R6
	movw R16,R2
	movw R18,R4
	xcall empy32s
	movw R2,R16
	movw R4,R18
	lds R6,_fat_info+5
	lds R7,_fat_info+5+1
	clr R8
	clr R9
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	sts _CHINALIB_point+1,R3
	sts _CHINALIB_point,R2
	sts _CHINALIB_point+2+1,R5
	sts _CHINALIB_point+2,R4
	.dbline 225
; 	    CHINALIB_point<<=9;
	ldi R24,9
	ldi R25,0
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsl32
	sts _CHINALIB_point+1,R17
	sts _CHINALIB_point,R16
	sts _CHINALIB_point+2+1,R19
	sts _CHINALIB_point+2,R18
	.dbline 226
; 	   }
L214:
L201:
	.dbline 227
; 	}
L187:
	.dbline 228
;   if(buffer[0]==0x00)
	lds R2,_buffer
	tst R2
	brne L228
	.dbline 229
;      break;
	xjmp L186
L228:
	.dbline 230
L185:
	.dbline 214
	xjmp L184
L186:
	.dbline -2
L182:
	adiw R28,12
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym l Read_number 8 i
	.dbsym l mulu_Clus_number 4 l
	.dbend

⌨️ 快捷键说明

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