📄 fat.lis
字号:
015A 80921200 sts _FirstDataSector+2,R8
015E .dbline 75
015E ; }
015E 2FC0 xjmp L10
0160 L9:
0160 .dbline 77
0160 ; else
0160 ; {
0160 .dbline 79
0160 ; // bpbFATsecs是0,为FAT32,FAT表所占的扇区数在bpbBigFATsecs里
0160 ; FirstDataSector += bpb->bpbResSectors + bpb->bpbFATs * bpb->bpbBigFATsecs;
0160 F501 movw R30,R10
0162 218C ldd R2,z+25
0164 328C ldd R3,z+26
0166 438C ldd R4,z+27
0168 548C ldd R5,z+28
016A F501 movw R30,R10
016C 6580 ldd R6,z+5
016E 7724 clr R7
0170 8824 clr R8
0172 9924 clr R9
0174 5A92 st -y,R5
0176 4A92 st -y,R4
0178 3A92 st -y,R3
017A 2A92 st -y,R2
017C 8301 movw R16,R6
017E 9401 movw R18,R8
0180 0E940000 xcall empy32u
0184 F501 movw R30,R10
0186 2380 ldd R2,z+3
0188 3480 ldd R3,z+4
018A 4424 clr R4
018C 5524 clr R5
018E 200E add R2,R16
0190 311E adc R3,R17
0192 421E adc R4,R18
0194 531E adc R5,R19
0196 80901200 lds R8,_FirstDataSector+2
019A 90901300 lds R9,_FirstDataSector+2+1
019E 60901000 lds R6,_FirstDataSector
01A2 70901100 lds R7,_FirstDataSector+1
01A6 620C add R6,R2
01A8 731C adc R7,R3
01AA 841C adc R8,R4
01AC 951C adc R9,R5
01AE 70921100 sts _FirstDataSector+1,R7
01B2 60921000 sts _FirstDataSector,R6
01B6 90921300 sts _FirstDataSector+2+1,R9
01BA 80921200 sts _FirstDataSector+2,R8
01BE .dbline 80
01BE ; }
01BE L10:
01BE .dbline 82
01BE ;
01BE ; SectorsPerCluster = bpb->bpbSecPerClust;
01BE F501 movw R30,R10
01C0 2280 ldd R2,z+2
01C2 3324 clr R3
01C4 30920D00 sts _SectorsPerCluster+1,R3
01C8 20920C00 sts _SectorsPerCluster,R2
01CC .dbline 83
01CC ; BytesPerSector = bpb->bpbBytesPerSec;
01CC F501 movw R30,R10
01CE 2080 ldd R2,z+0
01D0 3180 ldd R3,z+1
01D2 30920F00 sts _BytesPerSector+1,R3
01D6 20920E00 sts _BytesPerSector,R2
01DA .dbline 84
01DA ; FirstFATSector = bpb->bpbResSectors + PartInfo.prStartLBA;
01DA 40901F00 lds R4,_PartInfo+8+2
01DE 50902000 lds R5,_PartInfo+8+2+1
01E2 20901D00 lds R2,_PartInfo+8
01E6 30901E00 lds R3,_PartInfo+8+1
01EA 6380 ldd R6,z+3
01EC 7480 ldd R7,z+4
01EE 8824 clr R8
01F0 9924 clr R9
01F2 620C add R6,R2
01F4 731C adc R7,R3
01F6 841C adc R8,R4
01F8 951C adc R9,R5
01FA 70920900 sts _FirstFATSector+1,R7
01FE 60920800 sts _FirstFATSector,R6
0202 90920B00 sts _FirstFATSector+2+1,R9
0206 80920A00 sts _FirstFATSector+2,R8
020A .dbline 86
020A ; //查询SD卡文件系统分区类型
020A ; switch (PartInfo.prPartType)
020A C0901900 lds R12,_PartInfo+4
020E DD24 clr R13
0210 C601 movw R24,R12
0212 8430 cpi R24,4
0214 E0E0 ldi R30,0
0216 9E07 cpc R25,R30
0218 B1F0 breq L16
021A 8630 cpi R24,6
021C E0E0 ldi R30,0
021E 9E07 cpc R25,R30
0220 91F0 breq L16
0222 8430 cpi R24,4
0224 E0E0 ldi R30,0
0226 9E07 cpc R25,R30
0228 74F1 brlt L13
022A L18:
022A C601 movw R24,R12
022C 8B30 cpi R24,11
022E E0E0 ldi R30,0
0230 9E07 cpc R25,R30
0232 C9F0 breq L17
0234 8C30 cpi R24,12
0236 E0E0 ldi R30,0
0238 9E07 cpc R25,R30
023A A9F0 breq L17
023C 8E30 cpi R24,14
023E E0E0 ldi R30,0
0240 9E07 cpc R25,R30
0242 09F0 breq L16
0244 20C0 xjmp L13
0246 X1:
0246 .dbline 87
0246 ; {
0246 L16:
0246 .dbline 92
0246 ; case PART_TYPE_DOSFAT16:
0246 ; case PART_TYPE_FAT16:
0246 ; case PART_TYPE_FAT16LBA:
0246 ; // 第一个目录扇区号为2
0246 ; FirstDirSector = CLUST_FIRST;
0246 42E0 ldi R20,2
0248 50E0 ldi R21,0
024A 60E0 ldi R22,0
024C 70E0 ldi R23,0
024E 50930500 sts _FirstDirSector+1,R21
0252 40930400 sts _FirstDirSector,R20
0256 70930700 sts _FirstDirSector+2+1,R23
025A 60930600 sts _FirstDirSector+2,R22
025E .dbline 94
025E ; //FirstDataSector += (bpb->bpbRootDirEnts)/DIRENTRIES_PER_SECTOR;
025E ; Fat32Enabled = 0;
025E 2224 clr R2
0260 20921400 sts _Fat32Enabled,R2
0264 .dbline 96
0264 ;
0264 ; break;
0264 10C0 xjmp L13
0266 L17:
0266 .dbline 100
0266 ; case PART_TYPE_FAT32LBA:
0266 ; case PART_TYPE_FAT32:
0266 ;
0266 ; FirstDirSector = bpb->bpbRootClust;
0266 F501 movw R30,R10
0268 21A0 ldd R2,z+33
026A 32A0 ldd R3,z+34
026C 43A0 ldd R4,z+35
026E 54A0 ldd R5,z+36
0270 30920500 sts _FirstDirSector+1,R3
0274 20920400 sts _FirstDirSector,R2
0278 50920700 sts _FirstDirSector+2+1,R5
027C 40920600 sts _FirstDirSector+2,R4
0280 .dbline 101
0280 ; Fat32Enabled = 1;
0280 81E0 ldi R24,1
0282 80931400 sts _Fat32Enabled,R24
0286 .dbline 102
0286 ; break;
0286 .dbline 103
0286 ; default:break;
0286 L13:
0286 .dbline 107
0286 ; //return 1;
0286 ; }
0286 ; //查询SD卡文件系统信息
0286 ; switch (PartInfo.prPartType)
0286 A0901900 lds R10,_PartInfo+4
028A BB24 clr R11
028C C501 movw R24,R10
028E 8430 cpi R24,4
0290 E0E0 ldi R30,0
0292 9E07 cpc R25,R30
0294 B9F0 breq L23
0296 8630 cpi R24,6
0298 E0E0 ldi R30,0
029A 9E07 cpc R25,R30
029C E1F0 breq L25
029E 8430 cpi R24,4
02A0 E0E0 ldi R30,0
02A2 9E07 cpc R25,R30
02A4 0CF4 brge X3
02A6 3BC0 xjmp L19
02A8 X3:
02A8 L34:
02A8 C501 movw R24,R10
02AA 8B30 cpi R24,11
02AC E0E0 ldi R30,0
02AE 9E07 cpc R25,R30
02B0 69F1 breq L31
02B2 8C30 cpi R24,12
02B4 E0E0 ldi R30,0
02B6 9E07 cpc R25,R30
02B8 01F1 breq L29
02BA 8E30 cpi R24,14
02BC E0E0 ldi R30,0
02BE 9E07 cpc R25,R30
02C0 99F0 breq L27
02C2 2DC0 xjmp L19
02C4 X2:
02C4 .dbline 108
02C4 ; {
02C4 L23:
02C4 .dbline 110
02C4 ; case PART_TYPE_DOSFAT16:
02C4 ; LCD_write_english_string(0,0,"DOSFAT 16");
02C4 80E0 ldi R24,<L24
02C6 90E0 ldi R25,>L24
02C8 9983 std y+1,R25
02CA 8883 std y+0,R24
02CC 2227 clr R18
02CE 0027 clr R16
02D0 0E940000 xcall _LCD_write_english_string
02D4 .dbline 111
02D4 ; break;
02D4 2CC0 xjmp L20
02D6 L25:
02D6 .dbline 113
02D6 ; case PART_TYPE_FAT16:
02D6 ; LCD_write_english_string(0,0,"FAT16 ");
02D6 80E0 ldi R24,<L26
02D8 90E0 ldi R25,>L26
02DA 9983 std y+1,R25
02DC 8883 std y+0,R24
02DE 2227 clr R18
02E0 0027 clr R16
02E2 0E940000 xcall _LCD_write_english_string
02E6 .dbline 114
02E6 ; break;
02E6 23C0 xjmp L20
02E8 L27:
02E8 .dbline 116
02E8 ; case PART_TYPE_FAT16LBA:
02E8 ; LCD_write_english_string(0,0,"FAT16 LBA");
02E8 80E0 ldi R24,<L28
02EA 90E0 ldi R25,>L28
02EC 9983 std y+1,R25
02EE 8883 std y+0,R24
02F0 2227 clr R18
02F2 0027 clr R16
02F4 0E940000 xcall _LCD_write_english_string
02F8 .dbline 117
02F8 ; break;
02F8 1AC0 xjmp L20
02FA L29:
02FA .dbline 119
02FA ; case PART_TYPE_FAT32LBA:
02FA ; LCD_write_english_string(0,0,"FAT32 LBA");
02FA 80E0 ldi R24,<L30
02FC 90E0 ldi R25,>L30
02FE 9983 std y+1,R25
0300 8883 std y+0,R24
0302 2227 clr R18
0304 0027 clr R16
0306 0E940000 xcall _LCD_write_english_string
030A .dbline 120
030A ; break;
030A 11C0 xjmp L20
030C L31:
030C .dbline 122
030C ; case PART_TYPE_FAT32:
030C ; LCD_write_english_string(0,0,"FAT32");
030C 80E0 ldi R24,<L32
030E 90E0 ldi R25,>L32
0310 9983 std y+1,R25
0312 8883 std y+0,R24
0314 2227 clr R18
0316 0027 clr R16
0318 0E940000 xcall _LCD_write_english_string
031C .dbline 123
031C ; break;
031C 08C0 xjmp L20
031E L19:
031E .dbline 125
031E ; default:
031E ; LCD_write_english_string(0,0,"No Partition!");
031E 80E0 ldi R24,<L33
0320 90E0 ldi R25,>L33
0322 9983 std y+1,R25
0324 8883 std y+0,R24
0326 2227 clr R18
0328 0027 clr R16
032A 0E940000 xcall _LCD_write_english_string
032E .dbline 126
032E ; break;
032E L20:
032E .dbline 129
032E ; }
032E ; //显示磁盘容量
032E ; data=PartInfo.prSize>>11;
032E 8BE0 ldi R24,11
0330 90E0 ldi R25,0
0332 40902300 lds R4,_PartInfo+12+2
0336 50902400 lds R5,_PartInfo+12+2+1
033A 20902100 lds R2,_PartInfo+12
033E 30902200 lds R3,_PartInfo+12+1
0342 8A93 st -y,R24
0344 8101 movw R16,R2
0346 9201 movw R18,R4
0348 0E940000 xcall lsr32
034C 5801 movw R10,R16
034E .dbline 130
034E ; LCD_set_XY(56,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -