📄 main.s
字号:
L30:
L28:
L26:
L24:
L22:
.dbline 87
;
; //-------------- 音量调节 ----------------//
; if(vol_flag!=0)
tst R10
brne X1
xjmp L33
X1:
.dbline 88
; {
.dbline 89
; if(vol_flag==1)
mov R24,R10
cpi R24,1
brne L35
.dbline 90
; {
.dbline 91
; if(VOL>27)VOL=29;
ldi R24,27
ldi R25,0
lds R2,_VOL
lds R3,_VOL+1
cp R24,R2
cpc R25,R3
brsh L37
.dbline 91
ldi R24,29
sts _VOL+1,R25
sts _VOL,R24
xjmp L36
L37:
.dbline 92
; else VOL+=2;
lds R24,_VOL
lds R25,_VOL+1
adiw R24,2
sts _VOL+1,R25
sts _VOL,R24
.dbline 93
; }
xjmp L36
L35:
.dbline 95
; else
; {
.dbline 96
; if(VOL<2)VOL=0;
lds R24,_VOL
lds R25,_VOL+1
cpi R24,2
ldi R30,0
cpc R25,R30
brsh L39
.dbline 96
clr R2
clr R3
sts _VOL+1,R3
sts _VOL,R2
xjmp L40
L39:
.dbline 97
; else VOL-=2;
lds R24,_VOL
lds R25,_VOL+1
sbiw R24,2
sts _VOL+1,R25
sts _VOL,R24
L40:
.dbline 98
; }
L36:
.dbline 100
;
; VS1003_WriteReg(VS1003_SPI_VOL ,VOL_BUFFER[VOL]); // 送音量数据
lds R18,_VOL
lds R19,_VOL+1
ldi R16,2
ldi R17,0
xcall empy16s
movw R30,R16
ldi R24,<_VOL_BUFFER
ldi R25,>_VOL_BUFFER
add R30,R24
adc R31,R25
lpm R18,Z+
lpm R19,Z
ldi R16,11
xcall _VS1003_WriteReg
L41:
.dbline 102
L42:
.dbline 102
;
; while(VS1003_DREQ_STATE() != VS1003_DREQ); // 等待
in R24,0x13
andi R24,128
cpi R24,128
brne L41
.dbline 104
;
; key_num = 0;
clr R2
sts _key_num,R2
.dbline 105
; vol_flag=0;
clr R10
.dbline 106
; }
L33:
.dbline 111
;
;
; //----------------- 换曲操作 -----------------//
;
; if(music_next!=0||music_last!=0)
tst R14
brne L46
tst R12
breq L44
L46:
.dbline 112
; {
.dbline 113
; data_pointer=512;
ldi R24,512
ldi R25,2
std y+23,R25
std y+22,R24
.dbline 114
; i=8;
ldi R20,8
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+10,R20
std z+11,R21
std z+12,R22
std z+13,R23
.dbline 115
; }
xjmp L45
L44:
.dbline 118
;
; //---------------- 音乐数据送入 ------------------//
; else if(VS1003_DREQ_STATE()== VS1003_DREQ&&play_flag!=0)
in R24,0x13
andi R24,128
cpi R24,128
breq X2
xjmp L47
X2:
ldd R0,y+24
tst R0
brne X3
xjmp L47
X3:
.dbline 119
; {
.dbline 120
; for(n=0;n<32;n++)
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+2,R20
std z+3,R21
std z+4,R22
std z+5,R23
xjmp L52
L49:
.dbline 121
.dbline 122
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
ldd R30,y+22
ldd R31,y+23
add R30,R24
adc R31,R25
ldd R16,z+0
xcall _VS1003_WriteDat
.dbline 123
ldd R24,y+22
ldd R25,y+23
adiw R24,1
std y+23,R25
std y+22,R24
.dbline 124
L50:
.dbline 120
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+2
ldd R3,z+3
ldd R4,z+4
ldd R5,z+5
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+2,R2
std z+3,R3
std z+4,R4
std z+5,R5
L52:
.dbline 120
ldi R20,32
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+2
ldd R3,z+3
ldd R4,z+4
ldd R5,z+5
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brsh X4
xjmp L49
X4:
.dbline 125
; {
; VS1003_WriteDat(Fat_Buffer[data_pointer]); // 发送数据
; data_pointer++;
; }
; size_buf+=32;
ldi R20,32
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+6,R2
std z+7,R3
std z+8,R4
std z+9,R5
.dbline 126
; }
L47:
L45:
.dbline 128
;
; if(size_buf>=MusicInfoList[music_num].FileLength-64)
ldi R24,41
ldd R0,y+25
mul R24,R0
movw R30,R0
ldi R24,<_MusicInfoList+37
ldi R25,>_MusicInfoList+37
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,64
ldi R21,0
ldi R22,0
ldi R23,0
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
ldd R6,z+6
ldd R7,z+7
ldd R8,z+8
ldd R9,z+9
cp R6,R2
cpc R7,R3
cpc R8,R4
cpc R9,R5
brlo L53
.dbline 129
; {
.dbline 130
; data_pointer=512;
ldi R24,512
ldi R25,2
std y+23,R25
std y+22,R24
.dbline 131
; i=8;
ldi R20,8
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+10,R20
std z+11,R21
std z+12,R22
std z+13,R23
.dbline 132
; size_buf=0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+6,R20
std z+7,R21
std z+8,R22
std z+9,R23
.dbline 133
; }
L53:
.dbline 135
L19:
.dbline 135
;
; }while(data_pointer<511);
ldd R24,y+22
ldd R25,y+23
cpi R24,255
ldi R30,1
cpc R25,R30
brsh X5
xjmp L18
X5:
.dbline 137
;
; data_pointer=0;
clr R0
clr R1
std y+23,R1
std y+22,R0
.dbline 138
; if(i%4 == 0)
ldi R20,3
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+10
ldd R3,z+11
ldd R4,z+12
ldd R5,z+13
and R2,R20
and R3,R21
and R4,R22
and R5,R23
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L56
.dbline 139
; {
.dbline 140
; if(j <= 0) j = 46;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+18
ldd R3,z+19
ldd R4,z+20
ldd R5,z+21
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L58
.dbline 140
ldi R20,46
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+18,R20
std z+19,R21
std z+20,R22
std z+21,R23
xjmp L59
L58:
.dbline 141
; else j--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+18
ldd R3,z+19
ldd R4,z+20
ldd R5,z+21
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+18,R2
std z+19,R3
std z+20,R4
std z+21,R5
L59:
.dbline 142
; }
L56:
.dbline 144
L11:
.dbline 72
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+10
ldd R3,z+11
ldd R4,z+12
ldd R5,z+13
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+10,R2
std z+11,R3
std z+12,R4
std z+13,R5
L13:
.dbline 72
lds R2,_DiskFATInfo+17
clr R3
clr R4
clr R5
movw R30,R28
ldd R6,z+10
ldd R7,z+11
ldd R8,z+12
ldd R9,z+13
cp R6,R2
cpc R7,R3
cpc R8,R4
cpc R9,R5
brsh X6
xjmp L10
X6:
.dbline 147
;
; }
;
; //---------- 下一簇 ------------//
; num = FatNextCluster(num);
movw R30,R28
ldd R16,z+14
ldd R17,z+15
ldd R18,z+16
ldd R19,z+17
xcall _FatNextCluster
movw R30,R28
std z+14,R16
std z+15,R17
std z+16,R18
std z+17,R19
.dbline 149
;
; if(num==CLUST_EOFE||music_next!=0||music_last!=0)
ldi R20,255
ldi R21,255
ldi R22,255
ldi R23,255
movw R30,R28
ldd R2,z+14
ldd R3,z+15
ldd R4,z+16
ldd R5,z+17
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
breq L63
tst R14
brne L63
tst R12
brne X7
xjmp L60
X7:
L63:
.dbline 150
; {
.dbline 151
; if(music_last!=0)
tst R12
breq L64
.dbline 152
; {
.dbline 153
; if(music_num>0)music_num--;
clr R2
ldd R0,y+25
cp R2,R0
brsh L66
.dbline 153
dec R0
std y+25,R0
xjmp L65
L66:
.dbline 154
; else music_num = NumOfFile - 1;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_NumOfFile+2
lds R5,_NumOfFile+2+1
lds R2,_NumOfFile
lds R3,_NumOfFile+1
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
std y+25,R2
.dbline 155
; }
xjmp L65
L64:
.dbline 158
;
; else
; {
.dbline 159
; if(music_num < NumOfFile-1)music_num++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_NumOfFile+2
lds R5,_NumOfFile+2+1
lds R2,_NumOfFile
lds R3,_NumOfFile+1
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
ldd R6,y+25
clr R7
clr R8
clr R9
cp R6,R2
cpc R7,R3
cpc R8,R4
cpc R9,R5
brsh L68
.dbline 159
mov R0,R6
inc R0
std y+25,R0
xjmp L69
L68:
.dbline 160
; else music_num=0;
clr R0
std y+25,R0
L69:
.dbline 161
; }
L65:
.dbline 163
;
; num = MusicInfoList[music_num].FileStartClustor;
ldi R24,41
ldd R0,y+25
mul R24,R0
movw R30,R0
ldi R24,<_MusicInfoList+33
ldi R25,>_MusicInfoList+33
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
movw R30,R28
std z+14,R2
std z+15,R3
std z+16,R4
std z+17,R5
.dbline 164
; play_flag=1;
clr R0
inc R0
std y+24,R0
.dbline 165
; music_next = 0;
clr R14
.dbline 166
; music_last = 0;
clr R12
.dbline 167
; key_num=0;
clr R2
sts _key_num,R2
.dbline 168
; }
L60:
.dbline 170
L8:
.dbline 68
xjmp L7
X0:
.dbline -2
L5:
adiw R28,26
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym l j 18 l
.dbsym l num 14 l
.dbsym l music_num 25 c
.dbsym r music_last 12 c
.dbsym r music_next 14 c
.dbsym l play_flag 24 c
.dbsym l i 10 l
.dbsym l size_buf 6 l
.dbsym r vol_flag 10 c
.dbsym l n 2 l
.dbsym l data_pointer 22 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -