📄 task.lis
字号:
.module task.c
.area data(ram, con, rel)
0000 _SONG_state::
0000 .blkb 1
.area idata
0000 05 .byte 5
.area data(ram, con, rel)
0001 .dbfile D:\TDDownload\MP3BOA~1.8\task.c
0001 .dbsym e SONG_state _SONG_state c
0001 _disp_state::
0001 .blkb 1
.area idata
0001 05 .byte 5
.area data(ram, con, rel)
0002 .dbfile D:\TDDownload\MP3BOA~1.8\task.c
0002 .dbsym e disp_state _disp_state c
0002 _STA013_INIT::
0002 .blkb 1
.area idata
0002 01 .byte 1
.area data(ram, con, rel)
0003 .dbfile D:\TDDownload\MP3BOA~1.8\task.c
0003 .dbsym e STA013_INIT _STA013_INIT c
.area bss(ram, con, rel)
0000 .dbfile D:\TDDownload\MP3BOA~1.8\task.c
0000 L2:
0000 .blkb 4
0004 L3:
0004 .blkb 2
0006 L4:
0006 .blkb 2
0008 L5:
0008 .blkb 2
000A L6:
000A .blkb 1
.area text(rom, con, rel)
0000 .dbfile D:\TDDownload\MP3BOA~1.8\task.c
0000 .dbfunc e SONG_task _SONG_task fV
0000 .dbsym s doing1 L6 c
0000 .dbsym s file_Clus_sendnumber L5 i
0000 .dbsym s file_Clus_allnumber L4 i
0000 .dbsym s bytepersec L3 i
0000 .dbsym s new_Sec L2 l
0000 ; doing -> R10
0000 ; FAT_Clus -> y+5
.even
0000 _SONG_task::
0000 0E940000 xcall push_gset4
0004 2D97 sbiw R28,13
0006 .dbline -1
0006 .dbline 34
0006 ; //ICC-AVR application builder : 2005-11-12 17:11:59
0006 ; // Target : M16
0006 ; // Crystal: 8.0000Mhz
0006 ; // copyright:鲁军波(endylu)
0006 ; // www.shop34612283.taobao.com
0006 ; // www.adembed.com
0006 ; #include <iom16v.h>
0006 ; #include <macros.h>
0006 ; #include "main.h"
0006 ; extern uint8 timer1_over;
0006 ; extern uint8 key_value;
0006 ; extern uint8 set_volume;
0006 ; extern uint8 MP3_all_number;
0006 ; extern uint8 MP3_current_number;
0006 ; extern uint8 play_state;
0006 ;
0006 ; extern MP3_INFO mp3_info;
0006 ; extern FAT_INFO fat_info;
0006 ;
0006 ; extern uint32 CHINALIB_point;
0006 ; extern uint32 UNICODE_point;
0006 ;
0006 ; extern uint8 buffer[512];
0006 ; //extern const uint8 BassTrebleTable[48];
0006 ;
0006 ; uint8 SONG_state=song_over;
0006 ; uint8 secperclus; //对下面显示歌词的时间有关
0006 ;
0006 ; uint8 disp_state=5;
0006 ; uint8 STA013_INIT=1;
0006 ;
0006 ; //=======================================================================
0006 ; void SONG_task(void)
0006 ; {
0006 .dbline 46
0006 ; static uint32 new_Sec;
0006 ;
0006 ; static uint16 bytepersec;
0006 ;
0006 ; static uint16 file_Clus_allnumber;
0006 ; static uint16 file_Clus_sendnumber;
0006 ;
0006 ; uint32 FAT_Clus;
0006 ; uint8 doing;
0006 ; static uint8 doing1;
0006 ;
0006 ; switch(SONG_state)
0006 A0900000 lds R10,_SONG_state
000A BB24 clr R11
000C AA20 tst R10
000E 19F4 brne X0
0010 BB20 tst R11
0012 09F4 brne X4
0014 69C2 xjmp L8
0016 X4:
0016 X0:
0016 C501 movw R24,R10
0018 8130 cpi R24,1
001A E0E0 ldi R30,0
001C 9E07 cpc R25,R30
001E A9F0 breq L11
0020 8230 cpi R24,2
0022 E0E0 ldi R30,0
0024 9E07 cpc R25,R30
0026 09F4 brne X5
0028 78C0 xjmp L22
002A X5:
002A 8330 cpi R24,3
002C E0E0 ldi R30,0
002E 9E07 cpc R25,R30
0030 09F4 brne X6
0032 4EC1 xjmp L38
0034 X6:
0034 8430 cpi R24,4
0036 E0E0 ldi R30,0
0038 9E07 cpc R25,R30
003A 09F4 brne X7
003C 90C1 xjmp L41
003E X7:
003E 8530 cpi R24,5
0040 E0E0 ldi R30,0
0042 9E07 cpc R25,R30
0044 09F4 brne X8
0046 B1C1 xjmp L47
0048 X8:
0048 4FC2 xjmp L7
004A X1:
004A .dbline 47
004A ; {
004A .dbline 49
004A ; case song_stop:
004A ; {
004A .dbline 51
004A ;
004A ; break;
004A L11:
004A .dbline 54
004A ; }
004A ; case song_start:
004A ; {
004A .dbline 55
004A ; file_Clus_allnumber=((mp3_info.DIR_Filesize[0]>>1)+((int)(mp3_info.DIR_Filesize[1])<<7))/(fat_info.BPB_SecPerClus)+1; //多少簇
004A 27E0 ldi R18,7
004C 30E0 ldi R19,0
004E 00913800 lds R16,_mp3_info+55+1
0052 1127 clr R17
0054 0E940000 xcall lsl16
0058 1801 movw R2,R16
005A 00913700 lds R16,_mp3_info+55
005E 1127 clr R17
0060 1595 asr R17
0062 0795 ror R16
0064 020D add R16,R2
0066 131D adc R17,R3
0068 20910100 lds R18,_fat_info+1
006C 3327 clr R19
006E 0E940000 xcall div16s
0072 C801 movw R24,R16
0074 0196 adiw R24,1
0076 90930700 sts L4+1,R25
007A 80930600 sts L4,R24
007E .dbline 56
007E ; new_Sec=(((long)(mp3_info.DIR_FstClusL[1])<<8)+(mp3_info.DIR_FstClusL[0])-2)*fat_info.BPB_SecPerClus+fat_info.FirstDateSecter; //簇的头扇区号
007E 88E0 ldi R24,8
0080 90E0 ldi R25,0
0082 20903600 lds R2,_mp3_info+53+1
0086 3324 clr R3
0088 4424 clr R4
008A 5524 clr R5
008C 8A93 st -y,R24
008E 8101 movw R16,R2
0090 9201 movw R18,R4
0092 0E940000 xcall lsl32
0096 1801 movw R2,R16
0098 2901 movw R4,R18
009A 60903500 lds R6,_mp3_info+53
009E 7724 clr R7
00A0 8824 clr R8
00A2 9924 clr R9
00A4 260C add R2,R6
00A6 371C adc R3,R7
00A8 481C adc R4,R8
00AA 591C adc R5,R9
00AC 42E0 ldi R20,2
00AE 50E0 ldi R21,0
00B0 60E0 ldi R22,0
00B2 70E0 ldi R23,0
00B4 241A sub R2,R20
00B6 350A sbc R3,R21
00B8 460A sbc R4,R22
00BA 570A sbc R5,R23
00BC 60900100 lds R6,_fat_info+1
00C0 7724 clr R7
00C2 8824 clr R8
00C4 9924 clr R9
00C6 9A92 st -y,R9
00C8 8A92 st -y,R8
00CA 7A92 st -y,R7
00CC 6A92 st -y,R6
00CE 8101 movw R16,R2
00D0 9201 movw R18,R4
00D2 0E940000 xcall empy32s
00D6 1801 movw R2,R16
00D8 2901 movw R4,R18
00DA 60900500 lds R6,_fat_info+5
00DE 70900600 lds R7,_fat_info+5+1
00E2 8824 clr R8
00E4 9924 clr R9
00E6 260C add R2,R6
00E8 371C adc R3,R7
00EA 481C adc R4,R8
00EC 591C adc R5,R9
00EE 30920100 sts L2+1,R3
00F2 20920000 sts L2,R2
00F6 50920300 sts L2+2+1,R5
00FA 40920200 sts L2+2,R4
00FE .dbline 57
00FE ; file_Clus_sendnumber=0;
00FE 2224 clr R2
0100 3324 clr R3
0102 30920900 sts L5+1,R3
0106 20920800 sts L5,R2
010A .dbline 59
010A ;
010A ; SONG_state=song_read_sector;
010A 83E0 ldi R24,3
010C 80930000 sts _SONG_state,R24
0110 .dbline 60
0110 ; secperclus=fat_info.BPB_SecPerClus;
0110 20900100 lds R2,_fat_info+1
0114 2092B900 sts _secperclus,R2
0118 .dbline 62
0118 ;
0118 ; break;
0118 E7C1 xjmp L8
011A L22:
011A .dbline 66
011A ; }
011A ;
011A ; case song_find_newsec:
011A ; {
011A .dbline 67
011A ; FAT_Clus=((long)(fat_info.Relative+fat_info.BPB_RsvdSecCnt+mp3_info.DIR_FstClusL[1])<<9)+((int)mp3_info.DIR_FstClusL[0]<<1);
011A 20900200 lds R2,_fat_info+2
011E 3324 clr R3
0120 40900000 lds R4,_fat_info
0124 5524 clr R5
0126 420C add R4,R2
0128 531C adc R5,R3
012A 20903600 lds R2,_mp3_info+53+1
012E 3324 clr R3
0130 420C add R4,R2
0132 531C adc R5,R3
0134 1201 movw R2,R4
0136 4424 clr R4
0138 37FC sbrc R3,7
013A 4094 com R4
013C 5524 clr R5
013E 47FC sbrc R4,7
0140 5094 com R5
0142 89E0 ldi R24,9
0144 90E0 ldi R25,0
0146 8A93 st -y,R24
0148 8101 movw R16,R2
014A 9201 movw R18,R4
014C 0E940000 xcall lsl32
0150 1801 movw R2,R16
0152 2901 movw R4,R18
0154 60903500 lds R6,_mp3_info+53
0158 7724 clr R7
015A 660C lsl R6
015C 771C rol R7
015E 8824 clr R8
0160 77FC sbrc R7,7
0162 8094 com R8
0164 9924 clr R9
0166 87FC sbrc R8,7
0168 9094 com R9
016A 260C add R2,R6
016C 371C adc R3,R7
016E 481C adc R4,R8
0170 591C adc R5,R9
0172 FE01 movw R30,R28
0174 2582 std z+5,R2
0176 3682 std z+6,R3
0178 4782 std z+7,R4
017A 5086 std z+8,R5
017C .dbline 69
017C ;
017C ; SD_read_sector2(FAT_Clus,mp3_info.DIR_FstClusL,2);
017C 82E0 ldi R24,2
017E 90E0 ldi R25,0
0180 9B83 std y+3,R25
0182 8A83 std y+2,R24
0184 80E0 ldi R24,<_mp3_info+53
0186 90E0 ldi R25,>_mp3_info+53
0188 9983 std y+1,R25
018A 8883 std y+0,R24
018C FE01 movw R30,R28
018E 0581 ldd R16,z+5
0190 1681 ldd R17,z+6
0192 2781 ldd R18,z+7
0194 3085 ldd R19,z+8
0196 0E940000 xcall _SD_read_sector2
019A .dbline 71
019A ;
019A ; new_Sec=((long)(mp3_info.DIR_FstClusL[1])<<8)+mp3_info.DIR_FstClusL[0];
019A 88E0 ldi R24,8
019C 90E0 ldi R25,0
019E 20903600 lds R2,_mp3_info+53+1
01A2 3324 clr R3
01A4 4424 clr R4
01A6 5524 clr R5
01A8 8A93 st -y,R24
01AA 8101 movw R16,R2
01AC 9201 movw R18,R4
01AE 0E940000 xcall lsl32
01B2 1801 movw R2,R16
01B4 2901 movw R4,R18
01B6 60903500 lds R6,_mp3_info+53
01BA 7724 clr R7
01BC 8824 clr R8
01BE 9924 clr R9
01C0 260C add R2,R6
01C2 371C adc R3,R7
01C4 481C adc R4,R8
01C6 591C adc R5,R9
01C8 30920100 sts L2+1,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -