📄 main.lis
字号:
03B4 F501 movw R30,R10
03B6 8081 ldd R24,z+0
03B8 8F5F subi R24,255 ; addi 1
03BA 8083 std z+0,R24
03BC .dbline 190
03BC ; if((*Vol)>=255) *Vol=255;
03BC 8F3F cpi R24,255
03BE 08F4 brsh X24
03C0 5CC0 xjmp L35
03C2 X24:
03C2 X14:
03C2 .dbline 190
03C2 8FEF ldi R24,255
03C4 8083 std z+0,R24
03C6 .dbline 191
03C6 ; }
03C6 59C0 xjmp L35
03C8 L34:
03C8 .dbline 192
03C8 ; else if(KeySt03==0) //Volume--,增大音量
03C8 46B3 in R20,0x16
03CA 4470 andi R20,4
03CC 46BB out 0x16,R20
03CE 4423 tst R20
03D0 D1F4 brne L41
03D2 X15:
03D2 .dbline 193
03D2 ; {
03D2 .dbline 195
03D2 ; //等待该键释放
03D2 ; Delay(200);
03D2 08EC ldi R16,200
03D4 10E0 ldi R17,0
03D6 0E940000 xcall _Delay
03DA 04C0 xjmp L44
03DC L43:
03DC .dbline 196
03DC ; while(KeySt03==0) Delay(200);
03DC 08EC ldi R16,200
03DE 10E0 ldi R17,0
03E0 0E940000 xcall _Delay
03E4 L44:
03E4 .dbline 196
03E4 46B3 in R20,0x16
03E6 4470 andi R20,4
03E8 46BB out 0x16,R20
03EA 4423 tst R20
03EC B9F3 breq L43
03EE X16:
03EE .dbline 197
03EE ; (*Vol)--;
03EE F501 movw R30,R10
03F0 8081 ldd R24,z+0
03F2 8150 subi R24,1
03F4 8083 std z+0,R24
03F6 .dbline 198
03F6 ; if((*Vol)<=0) *Vol=0;
03F6 80E0 ldi R24,0
03F8 2080 ldd R2,z+0
03FA 8215 cp R24,R2
03FC 08F4 brsh X25
03FE 3DC0 xjmp L42
0400 X25:
0400 X17:
0400 .dbline 198
0400 2224 clr R2
0402 2082 std z+0,R2
0404 .dbline 199
0404 ; }
0404 3AC0 xjmp L42
0406 L41:
0406 .dbline 200
0406 ; else if(KeySt04==0) //确定退出
0406 46B3 in R20,0x16
0408 4870 andi R20,8
040A 46BB out 0x16,R20
040C 4423 tst R20
040E B1F4 brne L48
0410 X18:
0410 .dbline 201
0410 ; {//等待该键释放
0410 .dbline 202
0410 ; Delay(200);
0410 08EC ldi R16,200
0412 10E0 ldi R17,0
0414 0E940000 xcall _Delay
0418 04C0 xjmp L51
041A L50:
041A .dbline 203
041A ; while(KeySt04==0) Delay(200);
041A 08EC ldi R16,200
041C 10E0 ldi R17,0
041E 0E940000 xcall _Delay
0422 L51:
0422 .dbline 203
0422 46B3 in R20,0x16
0424 4870 andi R20,8
0426 46BB out 0x16,R20
0428 4423 tst R20
042A B9F3 breq L50
042C X19:
042C .dbline 205
042C ; //保存音量到E2PROM
042C ; E2PROM_Write(0,Vol,1);
042C 81E0 ldi R24,1
042E 8883 std y+0,R24
0430 9501 movw R18,R10
0432 0027 clr R16
0434 1127 clr R17
0436 0E940000 xcall _E2PROM_Write
043A .dbline 206
043A ; break;
043A 2EC0 xjmp L33
043C L48:
043C .dbline 208
043C ; }
043C ; else if(KeySt01==0) //取消退出
043C 46B3 in R20,0x16
043E 4170 andi R20,1
0440 46BB out 0x16,R20
0442 4423 tst R20
0444 D1F4 brne L53
0446 X20:
0446 .dbline 209
0446 ; {//等待该键释放
0446 .dbline 210
0446 ; Delay(200);
0446 08EC ldi R16,200
0448 10E0 ldi R17,0
044A 0E940000 xcall _Delay
044E 04C0 xjmp L56
0450 L55:
0450 .dbline 211
0450 ; while(KeySt01==0) Delay(200);
0450 08EC ldi R16,200
0452 10E0 ldi R17,0
0454 0E940000 xcall _Delay
0458 L56:
0458 .dbline 211
0458 46B3 in R20,0x16
045A 4170 andi R20,1
045C 46BB out 0x16,R20
045E 4423 tst R20
0460 B9F3 breq L55
0462 X21:
0462 .dbline 212
0462 ; *Vol=DefaultVolume; //恢复到默认值
0462 8EE1 ldi R24,7710
0464 9EE1 ldi R25,30
0466 F501 movw R30,R10
0468 8083 std z+0,R24
046A .dbline 214
046A ; //保存音量到E2PROM
046A ; E2PROM_Write(0,Vol,1);
046A 81E0 ldi R24,1
046C 8883 std y+0,R24
046E 9F01 movw R18,R30
0470 0027 clr R16
0472 1127 clr R17
0474 0E940000 xcall _E2PROM_Write
0478 .dbline 215
0478 ; break;
0478 0FC0 xjmp L33
047A L53:
047A L42:
047A L35:
047A .dbline 218
047A ; }
047A ; //显示当前音量:
047A ; DisplayNumChar(6,64,255-(*Vol),3);
047A 83E0 ldi R24,3
047C 8A83 std y+2,R24
047E F501 movw R30,R10
0480 2080 ldd R2,z+0
0482 3324 clr R3
0484 8FEF ldi R24,255
0486 90E0 ldi R25,0
0488 2C01 movw R4,R24
048A 4218 sub R4,R2
048C 5308 sbc R5,R3
048E 4882 std y+0,R4
0490 20E4 ldi R18,64
0492 06E0 ldi R16,6
0494 C2DD xcall _DisplayNumChar
0496 .dbline 219
0496 ; }
0496 L32:
0496 .dbline 182
0496 7BCF xjmp L31
0498 L33:
0498 .dbline 221
0498 ; //选中Vs1011
0498 ; SPI_CS_Deassert(); //PB2=1,释放MMC/SD卡
0498 C49A sbi 0x18,4
049A .dbline 223
049A ; //写入当前音量:
049A ; retry=0;Tmp=(*Vol)*256+(*Vol);
049A 4427 clr R20
049C .dbline 223
049C F501 movw R30,R10
049E A080 ldd R10,z+0
04A0 BB24 clr R11
04A2 00E0 ldi R16,256
04A4 11E0 ldi R17,1
04A6 9501 movw R18,R10
04A8 0E940000 xcall empy16s
04AC 1801 movw R2,R16
04AE 2A0C add R2,R10
04B0 3B1C adc R3,R11
04B2 5101 movw R10,R2
04B4 1DC0 xjmp L59
04B6 L58:
04B6 .dbline 225
04B6 ; while(VS1011B_ReadCMD(0x0b) != Tmp)//设音量 //set Volume
04B6 ; {
04B6 .dbline 226
04B6 ; VS1011B_WriteCMD(0x0b,Tmp);
04B6 9501 movw R18,R10
04B8 0BE0 ldi R16,11
04BA 0E940000 xcall _VS1011B_WriteCMD
04BE .dbline 227
04BE ; if(retry++ >10 )
04BE 642F mov R22,R20
04C0 7727 clr R23
04C2 4F5F subi R20,255 ; addi 1
04C4 8AE0 ldi R24,10
04C6 8617 cp R24,R22
04C8 98F4 brsh L61
04CA X22:
04CA .dbline 228
04CA ; {
04CA .dbline 229
04CA ; PrintConstAscStr(7,0,ScreenStr12[15],16); //显示"音量设置错误"
04CA 80E1 ldi R24,16
04CC 8A83 std y+2,R24
04CE 80E0 ldi R24,<_ScreenStr12+240
04D0 90E0 ldi R25,>_ScreenStr12+240
04D2 9983 std y+1,R25
04D4 8883 std y+0,R24
04D6 2227 clr R18
04D8 07E0 ldi R16,7
04DA 0E940000 xcall _PrintConstAscStr
04DE .dbline 230
04DE ; Delay(1000);
04DE 08EE ldi R16,1000
04E0 13E0 ldi R17,3
04E2 0E940000 xcall _Delay
04E6 .dbline 232
04E6 ; //释放Vs1011
04E6 ; VS1011B_DDR |= BIT(VS1011B_XCS)|BIT(VS1011B_XRESET); //XCS,XDCS=1
04E6 8AB3 in R24,0x1a
04E8 8264 ori R24,66
04EA 8ABB out 0x1a,R24
04EC .dbline 233
04EC ; SPI_CS_Assert();
04EC C498 cbi 0x18,4
04EE .dbline 234
04EE ; return ;
04EE 0BC0 xjmp L26
04F0 L61:
04F0 .dbline 236
04F0 ; }
04F0 ; }
04F0 L59:
04F0 .dbline 224
04F0 0BE0 ldi R16,11
04F2 0E940000 xcall _VS1011B_ReadCMD
04F6 6801 movw R12,R16
04F8 0A15 cp R16,R10
04FA 1B05 cpc R17,R11
04FC E1F6 brne L58
04FE X23:
04FE .dbline 238
04FE ; //释放Vs1011
04FE ; VS1011B_DDR |= BIT(VS1011B_XCS)|BIT(VS1011B_XRESET); //XCS,XDCS=1
04FE 8AB3 in R24,0x1a
0500 8264 ori R24,66
0502 8ABB out 0x1a,R24
0504 .dbline 239
0504 ; SPI_CS_Assert();
0504 C498 cbi 0x18,4
0506 .dbline -2
0506 L26:
0506 .dbline 0 ; func end
0506 2396 adiw R28,3
0508 0C940000 xjmp pop_xgsetF03C
050C .dbsym r retry 20 c
050C .dbsym r Tmp 10 i
050C .dbsym r Vol 10 pc
050C .dbend
050C .dbfunc e ChangeVS1011Bass _ChangeVS1011Bass fV
050C ; retry -> R22
050C ; SB_Amp -> R10
050C ; Tmp -> R20,R21
050C ; SB_Freq -> R22
050C ; hl -> R12
050C ; VBass -> y+13
.even
050C _ChangeVS1011Bass::
050C 1A93 st -y,r17
050E 0A93 st -y,r16
0510 0E940000 xcall push_xgsetF0FC
0514 2397 sbiw R28,3
0516 .dbline -1
0516 .dbline 243
0516 ; }
0516 ;
0516 ; void ChangeVS1011Bass(uchar *VBass) //调整播放音量
0516 ; {
0516 .dbline 244
0516 ; unsigned char retry,hl=0;
0516 CC24 clr R12
0518 .dbline 248
0518 ; unsigned char SB_Amp,SB_Freq;
0518 ; unsigned int Tmp;
0518 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -