📄 task.lis
字号:
01CC 20920000 sts L2,R2
01D0 50920300 sts L2+2+1,R5
01D4 40920200 sts L2+2,R4
01D8 .dbline 73
01D8 ;
01D8 ; if(new_Sec>=0xfff8)
01D8 48EF ldi R20,248
01DA 5FEF ldi R21,255
01DC 60E0 ldi R22,0
01DE 70E0 ldi R23,0
01E0 2416 cp R2,R20
01E2 3506 cpc R3,R21
01E4 4606 cpc R4,R22
01E6 5706 cpc R5,R23
01E8 20F0 brlo L31
01EA .dbline 74
01EA ; SONG_state=song_over;
01EA 85E0 ldi R24,5
01EC 80930000 sts _SONG_state,R24
01F0 7BC1 xjmp L8
01F2 L31:
01F2 .dbline 76
01F2 ; else
01F2 ; {new_Sec=(new_Sec-2)*(fat_info.BPB_SecPerClus)+fat_info.FirstDateSecter; //簇的头扇区号
01F2 .dbline 76
01F2 42E0 ldi R20,2
01F4 50E0 ldi R21,0
01F6 60E0 ldi R22,0
01F8 70E0 ldi R23,0
01FA 40900200 lds R4,L2+2
01FE 50900300 lds R5,L2+2+1
0202 20900000 lds R2,L2
0206 30900100 lds R3,L2+1
020A 241A sub R2,R20
020C 350A sbc R3,R21
020E 460A sbc R4,R22
0210 570A sbc R5,R23
0212 60900100 lds R6,_fat_info+1
0216 7724 clr R7
0218 8824 clr R8
021A 9924 clr R9
021C 9A92 st -y,R9
021E 8A92 st -y,R8
0220 7A92 st -y,R7
0222 6A92 st -y,R6
0224 8101 movw R16,R2
0226 9201 movw R18,R4
0228 0E940000 xcall empy32u
022C 1801 movw R2,R16
022E 2901 movw R4,R18
0230 60900500 lds R6,_fat_info+5
0234 70900600 lds R7,_fat_info+5+1
0238 8824 clr R8
023A 9924 clr R9
023C 260C add R2,R6
023E 371C adc R3,R7
0240 481C adc R4,R8
0242 591C adc R5,R9
0244 30920100 sts L2+1,R3
0248 20920000 sts L2,R2
024C 50920300 sts L2+2+1,R5
0250 40920200 sts L2+2,R4
0254 .dbline 78
0254 ;
0254 ; doing=((long)file_Clus_sendnumber*80)/file_Clus_allnumber;
0254 20900800 lds R2,L5
0258 30900900 lds R3,L5+1
025C 4424 clr R4
025E 5524 clr R5
0260 40E5 ldi R20,80
0262 50E0 ldi R21,0
0264 60E0 ldi R22,0
0266 70E0 ldi R23,0
0268 5A92 st -y,R5
026A 4A92 st -y,R4
026C 3A92 st -y,R3
026E 2A92 st -y,R2
0270 8A01 movw R16,R20
0272 9B01 movw R18,R22
0274 0E940000 xcall empy32s
0278 20900600 lds R2,L4
027C 30900700 lds R3,L4+1
0280 4424 clr R4
0282 5524 clr R5
0284 5A92 st -y,R5
0286 4A92 st -y,R4
0288 3A92 st -y,R3
028A 2A92 st -y,R2
028C 0E940000 xcall div32s
0290 A02E mov R10,R16
0292 .dbline 79
0292 ; if(doing1!=doing)
0292 20900A00 lds R2,L6
0296 2016 cp R2,R16
0298 51F0 breq L35
029A .dbline 80
029A ; {
029A .dbline 81
029A ; LCD_set_XY(doing+1,4);
029A 24E0 ldi R18,4
029C 0F5F subi R16,255 ; addi 1
029E 0E940000 xcall _LCD_set_XY
02A2 .dbline 82
02A2 ; LCD_write_byte(0x5d,1);
02A2 21E0 ldi R18,1
02A4 0DE5 ldi R16,93
02A6 0E940000 xcall _LCD_write_byte
02AA .dbline 83
02AA ; doing1=doing;
02AA A0920A00 sts L6,R10
02AE .dbline 84
02AE ; }
02AE L35:
02AE .dbline 85
02AE ; file_Clus_sendnumber++;
02AE 80910800 lds R24,L5
02B2 90910900 lds R25,L5+1
02B6 0196 adiw R24,1
02B8 90930900 sts L5+1,R25
02BC 80930800 sts L5,R24
02C0 .dbline 86
02C0 ; SONG_state=song_read_sector;
02C0 83E0 ldi R24,3
02C2 80930000 sts _SONG_state,R24
02C6 .dbline 87
02C6 ; secperclus=fat_info.BPB_SecPerClus; //每簇多少扇区
02C6 20900100 lds R2,_fat_info+1
02CA 2092B900 sts _secperclus,R2
02CE .dbline 88
02CE ; }
02CE .dbline 89
02CE ; break;
02CE 0CC1 xjmp L8
02D0 L38:
02D0 .dbline 92
02D0 ; }
02D0 ; case song_read_sector:
02D0 ; {
02D0 .dbline 93
02D0 ; if(secperclus--)
02D0 2090B900 lds R2,_secperclus
02D4 3324 clr R3
02D6 822D mov R24,R2
02D8 8150 subi R24,1
02DA 8093B900 sts _secperclus,R24
02DE 2220 tst R2
02E0 09F4 brne X9
02E2 39C0 xjmp L39
02E4 X9:
02E4 .dbline 94
02E4 ; {
02E4 .dbline 95
02E4 ; SD_start_read(new_Sec++);
02E4 40900200 lds R4,L2+2
02E8 50900300 lds R5,L2+2+1
02EC 20900000 lds R2,L2
02F0 30900100 lds R3,L2+1
02F4 FE01 movw R30,R28
02F6 2186 std z+9,R2
02F8 3286 std z+10,R3
02FA 4386 std z+11,R4
02FC 5486 std z+12,R5
02FE 41E0 ldi R20,1
0300 50E0 ldi R21,0
0302 60E0 ldi R22,0
0304 70E0 ldi R23,0
0306 FE01 movw R30,R28
0308 2184 ldd R2,z+9
030A 3284 ldd R3,z+10
030C 4384 ldd R4,z+11
030E 5484 ldd R5,z+12
0310 240E add R2,R20
0312 351E adc R3,R21
0314 461E adc R4,R22
0316 571E adc R5,R23
0318 30920100 sts L2+1,R3
031C 20920000 sts L2,R2
0320 50920300 sts L2+2+1,R5
0324 40920200 sts L2+2,R4
0328 FE01 movw R30,R28
032A 0185 ldd R16,z+9
032C 1285 ldd R17,z+10
032E 2385 ldd R18,z+11
0330 3485 ldd R19,z+12
0332 0E940000 xcall _SD_start_read
0336 .dbline 96
0336 ; SD_get_date(buffer,512);
0336 20E0 ldi R18,512
0338 32E0 ldi R19,2
033A 00E0 ldi R16,<_buffer
033C 10E0 ldi R17,>_buffer
033E 0E940000 xcall _SD_get_date
0342 .dbline 97
0342 ; SONG_state=song_send_frame;
0342 84E0 ldi R24,4
0344 80930000 sts _SONG_state,R24
0348 .dbline 98
0348 ; bytepersec=0;
0348 2224 clr R2
034A 3324 clr R3
034C 30920500 sts L3+1,R3
0350 20920400 sts L3,R2
0354 .dbline 99
0354 ; }
0354 C9C0 xjmp L8
0356 L39:
0356 .dbline 101
0356 ; else
0356 ; SONG_state=song_find_newsec;
0356 82E0 ldi R24,2
0358 80930000 sts _SONG_state,R24
035C .dbline 102
035C ; break;
035C C5C0 xjmp L8
035E L41:
035E .dbline 105
035E ; }
035E ; case song_send_frame:
035E ; {
035E .dbline 106
035E ; STA013_Enable();
035E DB9A sbi 0x1b,3
0360 .dbline 106
0360 1EC0 xjmp L43
0362 L42:
0362 .dbline 108
0362 ; while(sta_Demand()) //每次连续请求6ms,隔20ms才又来请求
0362 ; {
0362 .dbline 109
0362 ; Write_Byte_SD(*(buffer+bytepersec++));
0362 20900400 lds R2,L3
0366 30900500 lds R3,L3+1
036A C101 movw R24,R2
036C 0196 adiw R24,1
036E 90930500 sts L3+1,R25
0372 80930400 sts L3,R24
0376 80E0 ldi R24,<_buffer
0378 90E0 ldi R25,>_buffer
037A F101 movw R30,R2
037C E80F add R30,R24
037E F91F adc R31,R25
0380 0081 ldd R16,z+0
0382 0E940000 xcall _Write_Byte_SD
0386 .dbline 110
0386 ; if(bytepersec==512)
0386 80910400 lds R24,L3
038A 90910500 lds R25,L3+1
038E 8030 cpi R24,0
0390 E2E0 ldi R30,2
0392 9E07 cpc R25,R30
0394 21F4 brne L45
0396 .dbline 111
0396 ; {SONG_state=song_read_sector;
0396 .dbline 111
0396 83E0 ldi R24,3
0398 80930000 sts _SONG_state,R24
039C .dbline 112
039C ; break;
039C 04C0 xjmp L44
039E L45:
039E .dbline 114
039E L43:
039E .dbline 107
039E 0E940000 xcall _sta_Demand
03A2 0023 tst R16
03A4 F1F6 brne L42
03A6 L44:
03A6 .dbline 115
03A6 ; }
03A6 ; }
03A6 ; STA013_Disable();
03A6 DB98 cbi 0x1b,3
03A8 .dbline 115
03A8 .dbline 117
03A8 ;
03A8 ; break;
03A8 9FC0 xjmp L8
03AA L47:
03AA .dbline 120
03AA ; }
03AA ; case song_over:
03AA ; {
03AA .dbline 121
03AA ; doing1=0;
03AA 2224 clr R2
03AC 20920A00 sts L6,R2
03B0 .dbline 122
03B0 ; MP3_current_number++;
03B0 80910000 lds R24,_MP3_current_number
03B4 8F5F subi R24,255 ; addi 1
03B6 80930000 sts _MP3_current_number,R24
03BA .dbline 123
03BA ; if(MP3_current_number>MP3_all_number)
03BA 20900000 lds R2,_MP3_all_number
03BE 2816 cp R2,R24
03C0 18F4 brsh L48
03C2 .dbline 124
03C2 ; MP3_current_number=1;
03C2 81E0 ldi R24,1
03C4 80930000 sts _MP3_current_number,R24
03C8 L48:
03C8 .dbline 125
03C8 ; GEPAI();
03C8 0E940000 xcall _GEPAI
03CC .dbline 126
03CC ; JINGDU();
03CC 0E940000 xcall _JINGDU
03D0 .dbline 127
03D0 ; ASCII(buffer,MP3_current_number);
03D0 20910000 lds R18,_MP3_current_number
03D4 00E0 ldi R16,<_buffer
03D6 10E0 ldi R17,>_buffer
03D8 0E940000 xcall _ASCII
03DC .dbline 128
03DC ; LCD_write_String(8,5,2,buffer,0);
03DC 2224 clr R2
03DE 2C82 std y+4,R2
03E0 80E0 ldi R24,<_buffer
03E2 90E0 ldi R25,>_buffer
03E4 9B83 std y+3,R25
03E6 8A83 std y+2,R24
03E8 82E0 ldi R24,2
03EA 8883 std y+0,R24
03EC 25E0 ldi R18,5
03EE 08E0 ldi R16,8
03F0 0E940000 xcall _LCD_write_String
03F4 .dbline 130
03F4 ;
03F4 ; MP3_Directory(MP3_current_number);
03F4 00910000 lds R16,_MP3_current_number
03F8 0E940000 xcall _MP3_Directory
03FC .dbline 131
03FC ; if(mp3_info.Name_number==0)
03FC 20903400 lds R2,_mp3_info+52
0400 2220 tst R2
0402 09F0 breq X10
0404 41C0 xjmp L50
0406 X10:
0406 .dbline 132
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -