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

📄 vs1011b.lis

📁 采用Mega16+VS1011B+SD卡制作的Mp3
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 009E 8ABB              out 0x1a,R24
 00A0                   .dbline 90
 00A0           ;       DDRA &=~BIT(VS1011B_DREQ); //DREQ为输入                 
 00A0 D298              cbi 0x1a,2
 00A2                   .dbline 91
 00A2           ;       PORTA|= BIT(VS1011B_DREQ); //DREQ=1
 00A2 DA9A              sbi 0x1b,2
 00A4                   .dbline 93
 00A4           ;       
 00A4           ;       VS1011B_XCS_H();
 00A4 D99A              sbi 0x1b,1
 00A6                   .dbline 94
 00A6           ;       VS1011B_XDCS_H();
 00A6 D89A              sbi 0x1b,0
 00A8                   .dbline 95
 00A8           ;       VS1011B_XRESET_L();
 00A8 DE98              cbi 0x1b,6
 00AA                   .dbline 96
 00AA           ;       Delay(2);
 00AA 02E0              ldi R16,2
 00AC 10E0              ldi R17,0
 00AE 0E940000          xcall _Delay
 00B2                   .dbline 97
 00B2           ;       VS1011B_XRESET_H();//使能芯片   //chip select
 00B2 DE9A              sbi 0x1b,6
 00B4                   .dbline 98
 00B4           ;       VS1011B_SPI_Low();//先以低频操作        //low speed
 00B4 A5DF              xcall _VS1011B_SPI_Low
 00B6                   .dbline 99
 00B6           ;       Delay(2);
 00B6 02E0              ldi R16,2
 00B8 10E0              ldi R17,0
 00BA 0E940000          xcall _Delay
 00BE                   .dbline 100
 00BE           ;       Delay(2);
 00BE 02E0              ldi R16,2
 00C0 10E0              ldi R17,0
 00C2 0E940000          xcall _Delay
 00C6                   .dbline 101
 00C6           ;       retry=0;
 00C6 4427              clr R20
 00C8                   .dbline 103
 00C8           ;       
 00C8           ;       VS1011B_ReadCMD(0x03);
 00C8 03E0              ldi R16,3
 00CA BFDF              xcall _VS1011B_ReadCMD
 00CC 0CC0              xjmp L16
 00CE           L15:
 00CE                   .dbline 105
 00CE           ;       while(VS1011B_ReadCMD(0x03)!=CLOCK_REG)//写时钟寄存器   //set PLL register
 00CE           ;       {
 00CE                   .dbline 106
 00CE           ;               VS1011B_WriteCMD(0x03,CLOCK_REG);
 00CE 20E0              ldi R18,12288
 00D0 30E3              ldi R19,48
 00D2 03E0              ldi R16,3
 00D4 A7DF              xcall _VS1011B_WriteCMD
 00D6                   .dbline 107
 00D6           ;               if(retry++ >10 )return 1;
 00D6 242E              mov R2,R20
 00D8 3324              clr R3
 00DA 4F5F              subi R20,255    ; addi 1
 00DC 8AE0              ldi R24,10
 00DE 8215              cp R24,R2
 00E0 10F4              brsh L18
 00E2           X2:
 00E2                   .dbline 107
 00E2 01E0              ldi R16,1
 00E4 65C0              xjmp L14
 00E6           L18:
 00E6                   .dbline 108
 00E6           ;       }
 00E6           L16:
 00E6                   .dbline 104
 00E6 03E0              ldi R16,3
 00E8 B0DF              xcall _VS1011B_ReadCMD
 00EA 0030              cpi R16,0
 00EC E0E3              ldi R30,48
 00EE 1E07              cpc R17,R30
 00F0 71F7              brne L15
 00F2           X3:
 00F2                   .dbline 110
 00F2           ; 
 00F2           ;       Delay(2);
 00F2 02E0              ldi R16,2
 00F4 10E0              ldi R17,0
 00F6 0E940000          xcall _Delay
 00FA                   .dbline 112
 00FA           ;       
 00FA           ;       VS1011B_WriteCMD(0x05,0xBB81);//0xBB81 AC45);
 00FA 21E8              ldi R18,48001
 00FC 3BEB              ldi R19,187
 00FE 05E0              ldi R16,5
 0100 91DF              xcall _VS1011B_WriteCMD
 0102                   .dbline 114
 0102           ;       
 0102           ;       retry=0;
 0102 4427              clr R20
 0104                   .dbline 115
 0104           ;       Tmp=CurVol*256+CurVol;
 0104 A0900000          lds R10,_CurVol
 0108 2A2D              mov R18,R10
 010A 3327              clr R19
 010C 00E0              ldi R16,256
 010E 11E0              ldi R17,1
 0110 0E940000          xcall empy16s
 0114 1801              movw R2,R16
 0116 4A2C              mov R4,R10
 0118 5524              clr R5
 011A 240C              add R2,R4
 011C 351C              adc R3,R5
 011E 5101              movw R10,R2
 0120 0BC0              xjmp L21
 0122           L20:
 0122                   .dbline 117
 0122           ;       while(VS1011B_ReadCMD(0x0b) != Tmp)//设音量     //set Volume
 0122           ;       {
 0122                   .dbline 118
 0122           ;               VS1011B_WriteCMD(0x0b,Tmp);
 0122 9501              movw R18,R10
 0124 0BE0              ldi R16,11
 0126 7EDF              xcall _VS1011B_WriteCMD
 0128                   .dbline 119
 0128           ;               if(retry++ >10 )return 2;
 0128 642F              mov R22,R20
 012A 7727              clr R23
 012C 4F5F              subi R20,255    ; addi 1
 012E 8AE0              ldi R24,10
 0130 8617              cp R24,R22
 0132 10F4              brsh L23
 0134           X4:
 0134                   .dbline 119
 0134 02E0              ldi R16,2
 0136 3CC0              xjmp L14
 0138           L23:
 0138                   .dbline 120
 0138           ;       }
 0138           L21:
 0138                   .dbline 116
 0138 0BE0              ldi R16,11
 013A 87DF              xcall _VS1011B_ReadCMD
 013C 6801              movw R12,R16
 013E 0A15              cp R16,R10
 0140 1B05              cpc R17,R11
 0142 79F7              brne L20
 0144           X5:
 0144                   .dbline 122
 0144           ; 
 0144           ;       retry=0;
 0144 4427              clr R20
 0146                   .dbline 123
 0146           ;       Tmp=CurBass;
 0146 A0900000          lds R10,_CurBass
 014A BB24              clr R11
 014C 0BC0              xjmp L26
 014E           L25:
 014E                   .dbline 125
 014E           ;       while(VS1011B_ReadCMD(0x02)!=Tmp)//写低音寄存器 
 014E           ;       {
 014E                   .dbline 126
 014E           ;               VS1011B_WriteCMD(0x02,Tmp);
 014E 9501              movw R18,R10
 0150 02E0              ldi R16,2
 0152 68DF              xcall _VS1011B_WriteCMD
 0154                   .dbline 127
 0154           ;               if(retry++ >10 )return 1;
 0154 642F              mov R22,R20
 0156 7727              clr R23
 0158 4F5F              subi R20,255    ; addi 1
 015A 8AE0              ldi R24,10
 015C 8617              cp R24,R22
 015E 10F4              brsh L28
 0160           X6:
 0160                   .dbline 127
 0160 01E0              ldi R16,1
 0162 26C0              xjmp L14
 0164           L28:
 0164                   .dbline 128
 0164           ;       }
 0164           L26:
 0164                   .dbline 124
 0164 02E0              ldi R16,2
 0166 71DF              xcall _VS1011B_ReadCMD
 0168 6801              movw R12,R16
 016A 0A15              cp R16,R10
 016C 1B05              cpc R17,R11
 016E 79F7              brne L25
 0170           X7:
 0170                   .dbline 129
 0170           ;       Delay(2);
 0170 02E0              ldi R16,2
 0172 10E0              ldi R17,0
 0174 0E940000          xcall _Delay
 0178                   .dbline 131
 0178           ;       
 0178           ;       retry=0;
 0178 4427              clr R20
 017A 0CC0              xjmp L31
 017C           L30:
 017C                   .dbline 133
 017C           ;       while(VS1011B_ReadCMD(0x00) != 0x0800)//0x0800)//写mode寄存器   //set mode register
 017C           ;       {
 017C                   .dbline 134
 017C           ;               VS1011B_WriteCMD(0x00,0x0800);//0x0800);
 017C 20E0              ldi R18,2048
 017E 38E0              ldi R19,8
 0180 0027              clr R16
 0182 50DF              xcall _VS1011B_WriteCMD
 0184                   .dbline 135
 0184           ;               if(retry++ >10 )return 3;//
 0184 642F              mov R22,R20
 0186 7727              clr R23
 0188 4F5F              subi R20,255    ; addi 1
 018A 8AE0              ldi R24,10
 018C 8617              cp R24,R22
 018E 10F4              brsh L33
 0190           X8:
 0190                   .dbline 135
 0190 03E0              ldi R16,3
 0192 0EC0              xjmp L14
 0194           L33:
 0194                   .dbline 136
 0194           ;       }
 0194           L31:
 0194                   .dbline 132
 0194 0027              clr R16
 0196 59DF              xcall _VS1011B_ReadCMD
 0198 B801              movw R22,R16
 019A 0030              cpi R16,0
 019C E8E0              ldi R30,8
 019E 1E07              cpc R17,R30
 01A0 69F7              brne L30
 01A2           X9:
 01A2                   .dbline 138
 01A2           ; 
 01A2           ;       Delay(2);
 01A2 02E0              ldi R16,2
 01A4 10E0              ldi R17,0
 01A6 0E940000          xcall _Delay
 01AA                   .dbline 140
 01AA           ; 
 01AA           ;       VS1011B_SoftReset();
 01AA 04D0              xcall _VS1011B_SoftReset
 01AC                   .dbline 141
 01AC           ;       VS1011B_SPI_High();
 01AC 2DDF              xcall _VS1011B_SPI_High
 01AE                   .dbline 142
 01AE           ;       return 0;
 01AE 0027              clr R16
 01B0                   .dbline -2
 01B0           L14:
 01B0                   .dbline 0 ; func end
 01B0 0C940000          xjmp pop_xgsetF03C
 01B4                   .dbsym r Tmp 10 i
 01B4                   .dbsym r retry 20 c
 01B4                   .dbend
 01B4                   .dbfunc e VS1011B_SoftReset _VS1011B_SoftReset fV
                        .even
 01B4           _VS1011B_SoftReset::
 01B4                   .dbline -1
 01B4                   .dbline 147
 01B4           ; }
 01B4           ; 
 01B4           ; //VS1003软件复位      //VS1003 soft reset
 01B4           ; void VS1011B_SoftReset(void)
 01B4           ; {
 01B4                   .dbline 148
 01B4           ;       VS1011B_WriteCMD(0x00,0x0804);//写复位          //reset
 01B4 24E0              ldi R18,2052
 01B6 38E0              ldi R19,8
 01B8 0027              clr R16
 01BA 34DF              xcall _VS1011B_WriteCMD
 01BC                   .dbline 149
 01BC           ;       Delay(2);//延时,至少1.35ms //wait at least 1.35ms
 01BC 02E0              ldi R16,2
 01BE 10E0              ldi R17,0
 01C0 0E940000          xcall _Delay
 01C4                   .dbline 150
 01C4           ;       DDRA &=~BIT(VS1011B_DREQ); //DREQ为输入                 
 01C4 D298              cbi 0x1a,2
 01C6                   .dbline 151
 01C6           ;       PORTA|= BIT(VS1011B_DREQ); //DREQ=1
 01C6 DA9A              sbi 0x1b,2
 01C8                   .dbline -2
 01C8           L35:
 01C8                   .dbline 0 ; func end
 01C8 0895              ret
 01CA                   .dbend
 01CA           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -