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

📄 fat.lis

📁 /*** *** *** *** *** *** *** *** *** *** / /* MP3 Code for M32L */ /* By pasyong
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 034E 2227              clr R18
 0350 08E3              ldi R16,56
 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_english_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_english_string
 03A4                   .dbline 140
 03A4           ;   //LCD_write_english_string(0,1,"RATE");
 03A4           ;       return 0;       
 03A4 0027              clr R16
 03A6                   .dbline -2
 03A6           L4:
 03A6 2296              adiw R28,2
 03A8 0E940000          xcall pop_gset4
 03AC                   .dbline 0 ; func end
 03AC 0895              ret
 03AE                   .dbsym r t2 10 c
 03AE                   .dbsym r t1 12 c
 03AE                   .dbsym r data 10 i
 03AE                   .dbsym r bpb 10 pS[bpb710]
 03AE                   .dbend
                        .area data(ram, con, rel)
 0008                   .dbfile D:\Temp\AVRTest\SDMP3~1\fat.c
 0008           _baseentry::
 0008                   .blkb 2
                        .area idata
 0008 0000              .word 0
                        .area data(ram, con, rel)
 000A                   .dbfile D:\Temp\AVRTest\SDMP3~1\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 D:\Temp\AVRTest\SDMP3~1\fat.c
 000C                   .dbsym e entrycount _entrycount i
                        .area text(rom, con, rel)
 03AE                   .dbfile D:\Temp\AVRTest\SDMP3~1\fat.c
 03AE                   .dbfunc e fatGetDirEntry _fatGetDirEntry fl
 03AE                   .dbstruct 0 32 winentry
 03AE                   .dbfield 0 weCnt c
 03AE                   .dbfield 1 wePart1 A[10:10]c
 03AE                   .dbfield 11 weAttributes c
 03AE                   .dbfield 12 weReserved1 c
 03AE                   .dbfield 13 weChksum c
 03AE                   .dbfield 14 wePart2 A[12:12]c
 03AE                   .dbfield 26 weReserved2 i
 03AE                   .dbfield 28 wePart3 A[4:4]c
 03AE                   .dbend
 03AE                   .dbstruct 0 32 direntry
 03AE                   .dbfield 0 deName A[8:8]c
 03AE                   .dbfield 8 deExtension A[3:3]c
 03AE                   .dbfield 11 deAttributes c
 03AE                   .dbfield 12 deLowerCase c
 03AE                   .dbfield 13 deCHundredth c
 03AE                   .dbfield 14 deCTime A[2:2]c
 03AE                   .dbfield 16 deCDate A[2:2]c
 03AE                   .dbfield 18 deADate A[2:2]c
 03AE                   .dbfield 20 deHighClust i
 03AE                   .dbfield 22 deMTime A[2:2]c
 03AE                   .dbfield 24 deMDate A[2:2]c
 03AE                   .dbfield 26 deStartCluster i
 03AE                   .dbfield 28 deFileSize l
 03AE                   .dbend
 03AE           ;           rval -> y+10
 03AE           ;          save2 -> R10,R11
 03AE           ;           save -> y+6
 03AE           ;              b -> y+22
 03AE           ;         sector -> y+2
 03AE           ;      hasBuffer -> y+20
 03AE           ;          index -> y+18
 03AE           ;             de -> y+16
 03AE           ;              p -> R12,R13
 03AE           ;             we -> y+14
 03AE           ;              i -> R14,R15
 03AE           ;          entry -> y+34
                        .even
 03AE           _fatGetDirEntry::
 03AE 1A93              st -y,r17
 03B0 0A93              st -y,r16
 03B2 0E940000          xcall push_gset5
 03B6 6897              sbiw R28,24
 03B8                   .dbline -1
 03B8                   .dbline 151
 03B8           ; }
 03B8           ; 
 03B8           ; /*-----------------------------------------------------------------------
 03B8           ; 查询一个文件的开始簇
 03B8           ; -----------------------------------------------------------------------*/
 03B8           ; unsigned int baseentry = 0;
 03B8           ; unsigned int entrycount = 0;
 03B8           ; 
 03B8           ; 
 03B8           ; unsigned long fatGetDirEntry(unsigned int entry)
 03B8           ; {
 03B8                   .dbline 153
 03B8           ;       unsigned long sector;
 03B8           ;       struct direntry *de = 0;        // 防止compiler warning
 03B8 0024              clr R0
 03BA 1124              clr R1
 03BC 198A              std y+17,R1
 03BE 088A              std y+16,R0
 03C0                   .dbline 160
 03C0           ;       struct winentry *we;
 03C0           ;       unsigned int hasBuffer;
 03C0           ;       unsigned int b;
 03C0           ;       int i,index;
 03C0           ;       char *p;
 03C0           ;       
 03C0           ;       entrycount = 0;
 03C0 2224              clr R2
 03C2 3324              clr R3
 03C4 30920B00          sts _entrycount+1,R3
 03C8 20920A00          sts _entrycount,R2
 03CC                   .dbline 161
 03CC           ;       DirNameBuffer = 0;
 03CC 30920300          sts _DirNameBuffer+1,R3
 03D0 20920200          sts _DirNameBuffer,R2
 03D4                   .dbline 165
 03D4           ;       
 03D4           ;       
 03D4           ;       // 读取目录区数据
 03D4           ;       sector = fatClustToSect(FirstDirSector);
 03D4 20910600          lds R18,_FirstDirSector+2
 03D8 30910700          lds R19,_FirstDirSector+2+1
 03DC 00910400          lds R16,_FirstDirSector
 03E0 10910500          lds R17,_FirstDirSector+1
 03E4 2ADE              xcall _fatClustToSect
 03E6 FE01              movw R30,R28
 03E8 0283              std z+2,R16
 03EA 1383              std z+3,R17
 03EC 2483              std z+4,R18
 03EE 3583              std z+5,R19
 03F0                   .dbline 167
 03F0           ; 
 03F0           ;       hasBuffer = 0;
 03F0 0024              clr R0
 03F2 1124              clr R1
 03F4 1D8A              std y+21,R1
 03F6 0C8A              std y+20,R0
 03F8                   .dbline 169
 03F8           ; 
 03F8           ;       index = 16;     
 03F8 80E1              ldi R24,16
 03FA 90E0              ldi R25,0
 03FC 9B8B              std y+19,R25
 03FE 8A8B              std y+18,R24
 0400           L38:
 0400                   .dbline 171
 0400           ;       do 
 0400           ;       {
 0400                   .dbline 172
 0400           ;               if(index == 16) // 是否该一人一扇区time for next sector ?
 0400 8A89              ldd R24,y+18
 0402 9B89              ldd R25,y+19
 0404 8031              cpi R24,16
 0406 E0E0              ldi R30,0
 0408 9E07              cpc R25,R30
 040A 09F0              breq X6
 040C 2AC0              xjmp L41
 040E           X6:
 040E                   .dbline 173
 040E           ;               {
 040E                   .dbline 174
 040E           ;                       ReadBlock(sector++);
 040E FE01              movw R30,R28
 0410 2280              ldd R2,z+2
 0412 3380              ldd R3,z+3
 0414 4480              ldd R4,z+4
 0416 5580              ldd R5,z+5
 0418 FE01              movw R30,R28
 041A 2682              std z+6,R2
 041C 3782              std z+7,R3
 041E 4086              std z+8,R4
 0420 5186              std z+9,R5
 0422 41E0              ldi R20,1
 0424 50E0              ldi R21,0
 0426 60E0              ldi R22,0
 0428 70E0              ldi R23,0
 042A FE01              movw R30,R28
 042C 2680              ldd R2,z+6
 042E 3780              ldd R3,z+7
 0430 4084              ldd R4,z+8
 0432 5184              ldd R5,z+9
 0434 240E              add R2,R20
 0436 351E              adc R3,R21
 0438 461E              adc R4,R22
 043A 571E              adc R5,R23
 043C FE01              movw R30,R28
 043E 2282              std z+2,R2
 0440 3382              std z+3,R3
 0442 4482              std z+4,R4
 0444 5582              std z+5,R5
 0446 FE01              movw R30,R28
 0448 0681              ldd R16,z+6
 044A 1781              ldd R17,z+7
 044C 2085              ldd R18,z+8
 044E 3185              ldd R19,z+9
 0450 D7DD              xcall _ReadBlock
 0452                   .dbline 175
 0452           ;                       de = (struct direntry *)BUFFER;
 0452 80E0              ldi R24,<_BUFFER
 0454 90E0              ldi R25,>_BUFFER
 0456 998B              std y+17,R25
 0458 888B              std y+16,R24
 045A                   .dbline 176
 045A           ;                       index = 0;
 045A 0024              clr R0
 045C 1124              clr R1
 045E 1B8A              std y+19,R1
 0460 0A8A              std y+18,R0
 0462                   .dbline 177
 0462           ;               }       
 0462           L41:
 0462                   .dbline 179
 0462           ;       
 0462           ;               if(*de->deName != 0xE5)
 0462 E889              ldd R30,y+16
 0464 F989              ldd R31,y+17
 0466 8081              ldd R24,z+0
 0468 853E              cpi R24,229
 046A 09F4              brne X7
 046C 22C1              xjmp L43
 046E           X7:
 046E                   .dbline 180
 046E           ;               {
 046E                   .dbline 182
 046E           ;                       // 如果if not a deleted entry
 046E           ;                       if(de->deAttributes == ATTR_LONG_FILENAME)
 046E 8385              ldd R24,z+11
 0470 8F30              cpi R24,15
 0472 09F0              breq X8
 0474 6FC0              xjmp L45
 0476           X8:
 0476                   .dbline 183
 0476           ;                       {
 0476                   .dbline 185
 0476           ;                               // we have a long name entry
 0476           ;                               we = (struct winentry *) de;
 0476 0888              ldd R0,y+16
 0478 1988              ldd R1,y+17
 047A 1F86              std y+15,R1
 047C 0E86              std y+14,R0
 047E                   .dbline 186
 047E           ;                               b = 13 *( (we->weCnt-1) & 0x0f);                                // index into string
 047E F001              movw R30,R0
 0480 8081              ldd R24,z+0
 0482 8150              subi R24,1
 0484 8F70              andi R24,15
 0486 9DE0              ldi R25,13
 0488 989F              mul R25,R24
 048A 1F8A              std y+23,R1
 048C 0E8A              std y+22,R0
 048E                   .dbline 187
 048E           ;                               p = &LongNameBuffer[b];
 048E 20900000          lds R2,_LongNameBuffer
 0492 30900100          lds R3,_LongNameBuffer+1
 0496 6001              movw R12,R0
 0498 C20C              add R12,R2
 049A D31C              adc R13,R3
 049C                   .dbline 188
 049C EE24              clr R14
 049E FF24              clr R15
 04A0           L47:
 04A0                   .dbline 188

⌨️ 快捷键说明

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