⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 采用Mega16+VS1011B+SD卡制作的Mp3
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -