📄 m16_vs1003_test.lst
字号:
0421 E092 LDI R25,2
0422 8B9F STD Y+23,R25
0423 8B8E STD Y+22,R24
(0114) i=8;
0424 E048 LDI R20,0x8
0425 E050 LDI R21,0
0426 E060 LDI R22,0
0427 E070 LDI R23,0
0428 01FE MOVW R30,R28
0429 8742 STD Z+10,R20
042A 8753 STD Z+11,R21
042B 8764 STD Z+12,R22
042C 8775 STD Z+13,R23
(0115) }
042D C054 RJMP 0x0482
(0116)
(0117) //---------------- 音乐数据送入 ------------------//
(0118) else if(VS1003_DREQ_STATE()== VS1003_DREQ&&play_flag!=0)
042E B383 IN R24,0x13
042F 7880 ANDI R24,0x80
0430 3880 CPI R24,0x80
0431 F009 BEQ 0x0433
0432 C04F RJMP 0x0482
0433 8C08 LDD R0,Y+24
0434 2000 TST R0
0435 F409 BNE 0x0437
0436 C04B RJMP 0x0482
(0119) {
(0120) for(n=0;n<32;n++)
0437 E040 LDI R20,0
0438 E050 LDI R21,0
0439 E060 LDI R22,0
043A E070 LDI R23,0
043B 01FE MOVW R30,R28
043C 8342 STD Z+2,R20
043D 8353 STD Z+3,R21
043E 8364 STD Z+4,R22
043F 8375 STD Z+5,R23
0440 C020 RJMP 0x0461
(0121) {
(0122) VS1003_WriteDat(Fat_Buffer[data_pointer]); // 发送数据
0441 E28E LDI R24,0x2E
0442 E092 LDI R25,2
0443 89EE LDD R30,Y+22
0444 89FF LDD R31,Y+23
0445 0FE8 ADD R30,R24
0446 1FF9 ADC R31,R25
0447 8100 LDD R16,Z+0
0448 940E1239 CALL _VS1003_WriteDat
(0123) data_pointer++;
044A 898E LDD R24,Y+22
044B 899F LDD R25,Y+23
044C 9601 ADIW R24,1
044D 8B9F STD Y+23,R25
044E 8B8E STD Y+22,R24
044F E041 LDI R20,1
0450 E050 LDI R21,0
0451 E060 LDI R22,0
0452 E070 LDI R23,0
0453 01FE MOVW R30,R28
0454 8022 LDD R2,Z+2
0455 8033 LDD R3,Z+3
0456 8044 LDD R4,Z+4
0457 8055 LDD R5,Z+5
0458 0E24 ADD R2,R20
0459 1E35 ADC R3,R21
045A 1E46 ADC R4,R22
045B 1E57 ADC R5,R23
045C 01FE MOVW R30,R28
045D 8222 STD Z+2,R2
045E 8233 STD Z+3,R3
045F 8244 STD Z+4,R4
0460 8255 STD Z+5,R5
0461 E240 LDI R20,0x20
0462 E050 LDI R21,0
0463 E060 LDI R22,0
0464 E070 LDI R23,0
0465 01FE MOVW R30,R28
0466 8022 LDD R2,Z+2
0467 8033 LDD R3,Z+3
0468 8044 LDD R4,Z+4
0469 8055 LDD R5,Z+5
046A 1624 CP R2,R20
046B 0635 CPC R3,R21
046C 0646 CPC R4,R22
046D 0657 CPC R5,R23
046E F408 BCC 0x0470
046F CFD1 RJMP 0x0441
(0124) }
(0125) size_buf+=32;
0470 E240 LDI R20,0x20
0471 E050 LDI R21,0
0472 E060 LDI R22,0
0473 E070 LDI R23,0
0474 01FE MOVW R30,R28
0475 8026 LDD R2,Z+6
0476 8037 LDD R3,Z+7
0477 8440 LDD R4,Z+8
0478 8451 LDD R5,Z+9
0479 0E24 ADD R2,R20
047A 1E35 ADC R3,R21
047B 1E46 ADC R4,R22
047C 1E57 ADC R5,R23
047D 01FE MOVW R30,R28
047E 8226 STD Z+6,R2
047F 8237 STD Z+7,R3
0480 8640 STD Z+8,R4
0481 8651 STD Z+9,R5
(0126) }
(0127)
(0128) if(size_buf>=MusicInfoList[music_num].FileLength-64)
0482 E289 LDI R24,0x29
0483 8C09 LDD R0,Y+25
0484 9D80 MUL R24,R0
0485 01F0 MOVW R30,R0
0486 EB89 LDI R24,0xB9
0487 E091 LDI R25,1
0488 0FE8 ADD R30,R24
0489 1FF9 ADC R31,R25
048A 8020 LDD R2,Z+0
048B 8031 LDD R3,Z+1
048C 8042 LDD R4,Z+2
048D 8053 LDD R5,Z+3
048E E440 LDI R20,0x40
048F E050 LDI R21,0
0490 E060 LDI R22,0
0491 E070 LDI R23,0
0492 1A24 SUB R2,R20
0493 0A35 SBC R3,R21
0494 0A46 SBC R4,R22
0495 0A57 SBC R5,R23
0496 01FE MOVW R30,R28
0497 8066 LDD R6,Z+6
0498 8077 LDD R7,Z+7
0499 8480 LDD R8,Z+8
049A 8491 LDD R9,Z+9
049B 1462 CP R6,R2
049C 0473 CPC R7,R3
049D 0484 CPC R8,R4
049E 0495 CPC R9,R5
049F F0B0 BCS 0x04B6
(0129) {
(0130) data_pointer=512;
04A0 E080 LDI R24,0
04A1 E092 LDI R25,2
04A2 8B9F STD Y+23,R25
04A3 8B8E STD Y+22,R24
(0131) i=8;
04A4 E048 LDI R20,0x8
04A5 E050 LDI R21,0
04A6 E060 LDI R22,0
04A7 E070 LDI R23,0
04A8 01FE MOVW R30,R28
04A9 8742 STD Z+10,R20
04AA 8753 STD Z+11,R21
04AB 8764 STD Z+12,R22
04AC 8775 STD Z+13,R23
(0132) size_buf=0;
04AD E040 LDI R20,0
04AE E050 LDI R21,0
04AF E060 LDI R22,0
04B0 E070 LDI R23,0
04B1 01FE MOVW R30,R28
04B2 8346 STD Z+6,R20
04B3 8357 STD Z+7,R21
04B4 8760 STD Z+8,R22
04B5 8771 STD Z+9,R23
(0133) }
(0134)
(0135) }while(data_pointer<511);
04B6 898E LDD R24,Y+22
04B7 899F LDD R25,Y+23
04B8 3F8F CPI R24,0xFF
04B9 E0E1 LDI R30,1
04BA 079E CPC R25,R30
04BB F408 BCC 0x04BD
04BC CECC RJMP 0x0389
(0136)
(0137) data_pointer=0;
04BD 2400 CLR R0
04BE 2411 CLR R1
04BF 8A1F STD Y+23,R1
04C0 8A0E STD Y+22,R0
(0138) if(i%4 == 0)
04C1 E043 LDI R20,3
04C2 E050 LDI R21,0
04C3 E060 LDI R22,0
04C4 E070 LDI R23,0
04C5 01FE MOVW R30,R28
04C6 8422 LDD R2,Z+10
04C7 8433 LDD R3,Z+11
04C8 8444 LDD R4,Z+12
04C9 8455 LDD R5,Z+13
04CA 2224 AND R2,R20
04CB 2235 AND R3,R21
04CC 2246 AND R4,R22
04CD 2257 AND R5,R23
04CE E040 LDI R20,0
04CF E050 LDI R21,0
04D0 E060 LDI R22,0
04D1 E070 LDI R23,0
04D2 1624 CP R2,R20
04D3 0635 CPC R3,R21
04D4 0646 CPC R4,R22
04D5 0657 CPC R5,R23
04D6 F551 BNE 0x0501
(0139) {
(0140) if(j <= 0) j = 46;
04D7 E040 LDI R20,0
04D8 E050 LDI R21,0
04D9 E060 LDI R22,0
04DA E070 LDI R23,0
04DB 01FE MOVW R30,R28
04DC 8822 LDD R2,Z+18
04DD 8833 LDD R3,Z+19
04DE 8844 LDD R4,Z+20
04DF 8855 LDD R5,Z+21
04E0 1624 CP R2,R20
04E1 0635 CPC R3,R21
04E2 0646 CPC R4,R22
04E3 0657 CPC R5,R23
04E4 F451 BNE 0x04EF
04E5 E24E LDI R20,0x2E
04E6 E050 LDI R21,0
04E7 E060 LDI R22,0
04E8 E070 LDI R23,0
04E9 01FE MOVW R30,R28
04EA 8B42 STD Z+18,R20
04EB 8B53 STD Z+19,R21
04EC 8B64 STD Z+20,R22
04ED 8B75 STD Z+21,R23
04EE C012 RJMP 0x0501
(0141) else j--;
04EF E041 LDI R20,1
04F0 E050 LDI R21,0
04F1 E060 LDI R22,0
04F2 E070 LDI R23,0
04F3 01FE MOVW R30,R28
04F4 8822 LDD R2,Z+18
04F5 8833 LDD R3,Z+19
04F6 8844 LDD R4,Z+20
04F7 8855 LDD R5,Z+21
04F8 1A24 SUB R2,R20
04F9 0A35 SBC R3,R21
04FA 0A46 SBC R4,R22
04FB 0A57 SBC R5,R23
04FC 01FE MOVW R30,R28
04FD 8A22 STD Z+18,R2
04FE 8A33 STD Z+19,R3
04FF 8A44 STD Z+20,R4
0500 8A55 STD Z+21,R5
0501 E041 LDI R20,1
0502 E050 LDI R21,0
0503 E060 LDI R22,0
0504 E070 LDI R23,0
0505 01FE MOVW R30,R28
0506 8422 LDD R2,Z+10
0507 8433 LDD R3,Z+11
0508 8444 LDD R4,Z+12
0509 8455 LDD R5,Z+13
050A 0E24 ADD R2,R20
050B 1E35 ADC R3,R21
050C 1E46 ADC R4,R22
050D 1E57 ADC R5,R23
050E 01FE MOVW R30,R28
050F 8622 STD Z+10,R2
0510 8633 STD Z+11,R3
0511 8644 STD Z+12,R4
0512 8655 STD Z+13,R5
0513 90200220 LDS R2,0x220
0515 2433 CLR R3
0516 2444 CLR R4
0517 2455 CLR R5
0518 01FE MOVW R30,R28
0519 8462 LDD R6,Z+10
051A 8473 LDD R7,Z+11
051B 8484 LDD R8,Z+12
051C 8495 LDD R9,Z+13
051D 1462 CP R6,R2
051E 0473 CPC R7,R3
051F 0484 CPC R8,R4
0520 0495 CPC R9,R5
0521 F408 BCC 0x0523
0522 CE2D RJMP 0x0350
(0142) }
(0143)
(0144) }
(0145)
(0146) //---------- 下一簇 ------------//
(0147) num = FatNextCluster(num);
0523 01FE MOVW R30,R28
0524 8506 LDD R16,Z+14
0525 8517 LDD R17,Z+15
0526 8920 LDD R18,Z+16
0527 8931 LDD R19,Z+17
0528 940E1060 CALL _FatNextCluster
052A 01FE MOVW R30,R28
052B 8706 STD Z+14,R16
052C 8717 STD Z+15,R17
052D 8B20 STD Z+16,R18
052E 8B31 STD Z+17,R19
(0148)
(0149) if(num==CLUST_EOFE||music_next!=0||music_last!=0)
052F EF4F LDI R20,0xFF
0530 EF5F LDI R21,0xFF
0531 EF6F LDI R22,0xFF
0532 EF7F LDI R23,0xFF
0533 01FE MOVW R30,R28
0534 8426 LDD R2,Z+14
0535 8437 LDD R3,Z+15
0536 8840 LDD R4,Z+16
0537 8851 LDD R5,Z+17
0538 1624 CP R2,R20
0539 0635 CPC R3,R21
053A 0646 CPC R4,R22
053B 0657 CPC R5,R23
053C F029 BEQ 0x0542
053D 20EE TST R14
053E F419 BNE 0x0542
053F 20CC TST R12
0540 F409 BNE 0x0542
0541 C053 RJMP 0x0595
(0150) {
(0151) if(music_last!=0)
0542 20CC TST R12
0543 F0C9 BEQ 0x055D
(0152) {
(0153) if(music_num>0)music_num--;
0544 2422 CLR R2
0545 8C09 LDD R0,Y+25
0546 1420 CP R2,R0
0547 F418 BCC 0x054B
0548 940A DEC R0
0549 8E09 STD Y+25,R0
054A C031 RJMP 0x057C
(0154) else music_num = NumOfFile - 1;
054B E041 LDI R20,1
054C E050 LDI R21,0
054D E060 LDI R22,0
054E E070 LDI R23,0
054F 9040022C LDS R4,NumOfFile+2
0551 9050022D LDS R5,NumOfFile+3
0553 9020022A LDS R2,NumOfFile
0555 9030022B LDS R3,NumOfFile+1
0557 1A24 SUB R2,R20
0558 0A35 SBC R3,R21
0559 0A46 SBC R4,R22
055A 0A57 SBC R5,R23
055B 8E29 STD Y+25,R2
(0155) }
055C C01F RJMP 0x057C
(0156)
(0157) else
(0158) {
(0159) if(music_num < NumOfFile-1)music_num++;
055D E041 LDI R20,1
055E E050 LDI R21,0
055F E060 LDI R22,0
0560 E070 LDI R23,0
0561 9040022C LDS R4,NumOfFile+2
0563 9050022D LDS R5,NumOfFile+3
0565 9020022A LDS R2,NumOfFile
0567 9030022B LDS R3,NumOfFile+1
0569 1A24 SUB R2,R20
056A 0A35 SBC R3,R21
056B 0A46 SBC R4,R22
056C 0A57 SBC R5,R23
056D 8C69 LDD R6,Y+25
056E 2477 CLR R7
056F 2488 CLR R8
0570 2499 CLR R9
0571 1462 CP R6,R2
0572 0473 CPC R7,R3
0573 0484 CPC R8,R4
0574 0495 CPC R9,R5
0575 F420 BCC 0x057A
0576 2C06 MOV R0,R6
0577 9403 INC R0
0578 8E09 STD Y+25,R0
0579 C002 RJMP 0x057C
(0160) else music_num=0;
057A 2400 CLR R0
057B 8E09 STD Y+25,R0
(0161) }
(0162)
(0163) num = MusicInfoList[music_num].FileStartClustor;
057C E289 LDI R24,0x29
057D 8C09 LDD R0,Y+25
057E 9D80 MUL R24,R0
057F 01F0 MOVW R30,R0
0580 EB85 LDI R24,0xB5
0581 E091 LDI R25,1
0582 0FE8 ADD R30,R24
0583 1FF9 ADC R31,R25
0584 8020 LDD R2,Z+0
0585 8031 LDD R3,Z+1
0586 8042 LDD R4,Z+2
0587 8053 LDD R5,Z+3
0588 01FE MOVW R30,R28
0589 8626 STD Z+14,R2
058A 8637 STD Z+15,R3
058B 8A40 STD Z+16,R4
058C 8A51 STD Z+17,R5
(0164) play_flag=1;
058D 2400 CLR R0
058E 9403 INC R0
058F 8E08 STD Y+24,R0
(0165) music_next = 0;
0590 24EE CLR R14
(0166) music_last = 0;
0591 24CC CLR R12
(0167) key_num=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -