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

📄 fat.lis

📁 绝对好用的M64-SD卡MP3程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0352 0E940000          xcall _LCD_set_XY
 0356                   .dbline 131
 0356           ;     t1=data/100;
 0356 24E6              ldi R18,100
 0358 30E0              ldi R19,0
 035A 8501              movw R16,R10
 035C 0E940000          xcall div16u
 0360                   .dbline 132
 0360           ;       LCD_write_char(t1+48);
 0360 005D              subi R16,208    ; addi 48
 0362 0E940000          xcall _LCD_write_char
 0366                   .dbline 133
 0366           ;       data=data%100;
 0366 24E6              ldi R18,100
 0368 30E0              ldi R19,0
 036A 8501              movw R16,R10
 036C 0E940000          xcall mod16u
 0370 5801              movw R10,R16
 0372                   .dbline 134
 0372           ;       t1=data/10;
 0372 2AE0              ldi R18,10
 0374 30E0              ldi R19,0
 0376 0E940000          xcall div16u
 037A C02E              mov R12,R16
 037C                   .dbline 135
 037C           ;       LCD_write_char(t1+48);
 037C 005D              subi R16,208    ; addi 48
 037E 0E940000          xcall _LCD_write_char
 0382                   .dbline 136
 0382           ;       t2=data%10;
 0382 2AE0              ldi R18,10
 0384 30E0              ldi R19,0
 0386 8501              movw R16,R10
 0388 0E940000          xcall mod16u
 038C A02E              mov R10,R16
 038E                   .dbline 137
 038E           ;       LCD_write_char(t2+48);
 038E 005D              subi R16,208    ; addi 48
 0390 0E940000          xcall _LCD_write_char
 0394                   .dbline 138
 0394           ;       LCD_write_String(76,0,"M");
 0394 80E0              ldi R24,<L36
 0396 90E0              ldi R25,>L36
 0398 9983              std y+1,R25
 039A 8883              std y+0,R24
 039C 2227              clr R18
 039E 0CE4              ldi R16,76
 03A0 0E940000          xcall _LCD_write_String
 03A4                   .dbline 139
 03A4           ;     LCD_write_String(0,1,"RATE"); 
 03A4 80E0              ldi R24,<L37
 03A6 90E0              ldi R25,>L37
 03A8 9983              std y+1,R25
 03AA 8883              std y+0,R24
 03AC 21E0              ldi R18,1
 03AE 0027              clr R16
 03B0 0E940000          xcall _LCD_write_String
 03B4                   .dbline 140
 03B4           ;       return 0;       
 03B4 0027              clr R16
 03B6                   .dbline -2
 03B6           L4:
 03B6 2296              adiw R28,2
 03B8 0E940000          xcall pop_gset4
 03BC                   .dbline 0 ; func end
 03BC 0895              ret
 03BE                   .dbsym r t2 10 c
 03BE                   .dbsym r t1 12 c
 03BE                   .dbsym r data 10 i
 03BE                   .dbsym r bpb 10 pS[bpb710]
 03BE                   .dbend
                        .area data(ram, con, rel)
 0008                   .dbfile E:\V3U~1\sd\M64-SD卡MP3程序\fat.c
 0008           _baseentry::
 0008                   .blkb 2
                        .area idata
 0008 0000              .word 0
                        .area data(ram, con, rel)
 000A                   .dbfile E:\V3U~1\sd\M64-SD卡MP3程序\fat.c
 000A                   .dbsym e baseentry _baseentry i
 000A           _entrycount::
 000A                   .blkb 2
                        .area idata
 000A 0000              .word 0
                        .area data(ram, con, rel)
 000C                   .dbfile E:\V3U~1\sd\M64-SD卡MP3程序\fat.c
 000C                   .dbsym e entrycount _entrycount i
                        .area text(rom, con, rel)
 03BE                   .dbfile E:\V3U~1\sd\M64-SD卡MP3程序\fat.c
 03BE                   .dbfunc e fatGetDirEntry _fatGetDirEntry fl
 03BE                   .dbstruct 0 32 winentry
 03BE                   .dbfield 0 weCnt c
 03BE                   .dbfield 1 wePart1 A[10:10]c
 03BE                   .dbfield 11 weAttributes c
 03BE                   .dbfield 12 weReserved1 c
 03BE                   .dbfield 13 weChksum c
 03BE                   .dbfield 14 wePart2 A[12:12]c
 03BE                   .dbfield 26 weReserved2 i
 03BE                   .dbfield 28 wePart3 A[4:4]c
 03BE                   .dbend
 03BE                   .dbstruct 0 32 direntry
 03BE                   .dbfield 0 deName A[8:8]c
 03BE                   .dbfield 8 deExtension A[3:3]c
 03BE                   .dbfield 11 deAttributes c
 03BE                   .dbfield 12 deLowerCase c
 03BE                   .dbfield 13 deCHundredth c
 03BE                   .dbfield 14 deCTime A[2:2]c
 03BE                   .dbfield 16 deCDate A[2:2]c
 03BE                   .dbfield 18 deADate A[2:2]c
 03BE                   .dbfield 20 deHighClust i
 03BE                   .dbfield 22 deMTime A[2:2]c
 03BE                   .dbfield 24 deMDate A[2:2]c
 03BE                   .dbfield 26 deStartCluster i
 03BE                   .dbfield 28 deFileSize l
 03BE                   .dbend
 03BE           ;           rval -> y+8
 03BE           ;          save2 -> R10,R11
 03BE           ;           save -> y+4
 03BE           ;              b -> y+20
 03BE           ;         sector -> y+0
 03BE           ;      hasBuffer -> y+18
 03BE           ;          index -> y+16
 03BE           ;             de -> y+14
 03BE           ;              p -> R12,R13
 03BE           ;             we -> y+12
 03BE           ;              i -> R14,R15
 03BE           ;          entry -> y+32
                        .even
 03BE           _fatGetDirEntry::
 03BE 1A93              st -y,r17
 03C0 0A93              st -y,r16
 03C2 0E940000          xcall push_gset5
 03C6 6697              sbiw R28,22
 03C8                   .dbline -1
 03C8                   .dbline 151
 03C8           ; }
 03C8           ; 
 03C8           ; /*-----------------------------------------------------------------------
 03C8           ; 查询一个文件的开始簇
 03C8           ; -----------------------------------------------------------------------*/
 03C8           ; unsigned int baseentry = 0;
 03C8           ; unsigned int entrycount = 0;
 03C8           ; 
 03C8           ; 
 03C8           ; unsigned long fatGetDirEntry(unsigned int entry)
 03C8           ; {
 03C8                   .dbline 153
 03C8           ;       unsigned long sector;
 03C8           ;       struct direntry *de = 0;        // 防止compiler warning
 03C8 0024              clr R0
 03CA 1124              clr R1
 03CC 1F86              std y+15,R1
 03CE 0E86              std y+14,R0
 03D0                   .dbline 160
 03D0           ;       struct winentry *we;
 03D0           ;       unsigned int hasBuffer;
 03D0           ;       unsigned int b;
 03D0           ;       int i,index;
 03D0           ;       char *p;
 03D0           ;       
 03D0           ;               entrycount = 0;
 03D0 2224              clr R2
 03D2 3324              clr R3
 03D4 30920B00          sts _entrycount+1,R3
 03D8 20920A00          sts _entrycount,R2
 03DC                   .dbline 161
 03DC           ;               DirNameBuffer = 0;
 03DC 30920300          sts _DirNameBuffer+1,R3
 03E0 20920200          sts _DirNameBuffer,R2
 03E4                   .dbline 165
 03E4           ;       
 03E4           ;       
 03E4           ;       // 读取目录区数据
 03E4           ;       sector = fatClustToSect(FirstDirSector);
 03E4 20910600          lds R18,_FirstDirSector+2
 03E8 30910700          lds R19,_FirstDirSector+2+1
 03EC 00910400          lds R16,_FirstDirSector
 03F0 10910500          lds R17,_FirstDirSector+1
 03F4 22DE              xcall _fatClustToSect
 03F6 FE01              movw R30,R28
 03F8 0083              std z+0,R16
 03FA 1183              std z+1,R17
 03FC 2283              std z+2,R18
 03FE 3383              std z+3,R19
 0400                   .dbline 167
 0400           ; 
 0400           ;       hasBuffer = 0;
 0400 0024              clr R0
 0402 1124              clr R1
 0404 1B8A              std y+19,R1
 0406 0A8A              std y+18,R0
 0408                   .dbline 169
 0408           ; 
 0408           ;       index = 16;     
 0408 80E1              ldi R24,16
 040A 90E0              ldi R25,0
 040C 998B              std y+17,R25
 040E 888B              std y+16,R24
 0410           L39:
 0410                   .dbline 171
 0410           ;       do 
 0410           ;       {
 0410                   .dbline 172
 0410           ;               if(index == 16) // 是否该一人一扇区time for next sector ?
 0410 8889              ldd R24,y+16
 0412 9989              ldd R25,y+17
 0414 8031              cpi R24,16
 0416 E0E0              ldi R30,0
 0418 9E07              cpc R25,R30
 041A 09F0              breq X6
 041C 2AC0              xjmp L42
 041E           X6:
 041E                   .dbline 173
 041E           ;               {
 041E                   .dbline 174
 041E           ;                       ReadBlock(sector++);
 041E FE01              movw R30,R28
 0420 2080              ldd R2,z+0
 0422 3180              ldd R3,z+1
 0424 4280              ldd R4,z+2
 0426 5380              ldd R5,z+3
 0428 FE01              movw R30,R28
 042A 2482              std z+4,R2
 042C 3582              std z+5,R3
 042E 4682              std z+6,R4
 0430 5782              std z+7,R5
 0432 41E0              ldi R20,1
 0434 50E0              ldi R21,0
 0436 60E0              ldi R22,0
 0438 70E0              ldi R23,0
 043A FE01              movw R30,R28
 043C 2480              ldd R2,z+4
 043E 3580              ldd R3,z+5
 0440 4680              ldd R4,z+6
 0442 5780              ldd R5,z+7
 0444 240E              add R2,R20
 0446 351E              adc R3,R21
 0448 461E              adc R4,R22
 044A 571E              adc R5,R23
 044C FE01              movw R30,R28
 044E 2082              std z+0,R2
 0450 3182              std z+1,R3
 0452 4282              std z+2,R4
 0454 5382              std z+3,R5
 0456 FE01              movw R30,R28
 0458 0481              ldd R16,z+4
 045A 1581              ldd R17,z+5
 045C 2681              ldd R18,z+6
 045E 3781              ldd R19,z+7
 0460 CFDD              xcall _ReadBlock
 0462                   .dbline 175
 0462           ;                       de = (struct direntry *)BUFFER;
 0462 80E0              ldi R24,<_BUFFER
 0464 90E0              ldi R25,>_BUFFER
 0466 9F87              std y+15,R25
 0468 8E87              std y+14,R24
 046A                   .dbline 176
 046A           ;                       index = 0;
 046A 0024              clr R0
 046C 1124              clr R1
 046E 198A              std y+17,R1
 0470 088A              std y+16,R0
 0472                   .dbline 177
 0472           ;               }       
 0472           L42:
 0472                   .dbline 179
 0472           ;       
 0472           ;               if(*de->deName != 0xE5)
 0472 EE85              ldd R30,y+14
 0474 FF85              ldd R31,y+15
 0476 8081              ldd R24,z+0
 0478 853E              cpi R24,229
 047A 09F4              brne X7
 047C 22C1              xjmp L44
 047E           X7:
 047E                   .dbline 180
 047E           ;               {
 047E                   .dbline 182
 047E           ;                       // 如果if not a deleted entry
 047E           ;                       if(de->deAttributes == ATTR_LONG_FILENAME)
 047E 8385              ldd R24,z+11
 0480 8F30              cpi R24,15
 0482 09F0              breq X8
 0484 6FC0              xjmp L46
 0486           X8:
 0486                   .dbline 183
 0486           ;                       {
 0486                   .dbline 185
 0486           ;                               // we have a long name entry
 0486           ;                               we = (struct winentry *) de;
 0486 0E84              ldd R0,y+14
 0488 1F84              ldd R1,y+15
 048A 1D86              std y+13,R1
 048C 0C86              std y+12,R0
 048E                   .dbline 186
 048E           ;                               b = 13 *( (we->weCnt-1) & 0x0f);                                // index into string
 048E F001              movw R30,R0
 0490 8081              ldd R24,z+0
 0492 8150              subi R24,1
 0494 8F70              andi R24,15
 0496 9DE0              ldi R25,13
 0498 989F              mul R25,R24
 049A 1D8A              std y+21,R1
 049C 0C8A              std y+20,R0
 049E                   .dbline 187
 049E           ;                               p = &LongNameBuffer[b];
 049E 20900000          lds R2,_LongNameBuffer
 04A2 30900100          lds R3,_LongNameBuffer+1
 04A6 6001              movw R12,R0
 04A8 C20C              add R12,R2
 04AA D31C              adc R13,R3

⌨️ 快捷键说明

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