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

📄 vs1001.lis

📁 使用硬盘制作mp3的源程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00F2                   .dbend
 00F2                   .dbfunc e VS1001Init _VS1001Init fV
 00F2           ;            buf -> y+34
 00F2           ;           null -> y+2
 00F2           ;              i -> R20,R21
 00F2           ;      HardReset -> R20
                        .even
 00F2           _VS1001Init::
 00F2 0E940000          xcall push_gset1
 00F6 402F              mov R20,R16
 00F8 A697              sbiw R28,38
 00FA                   .dbline -1
 00FA                   .dbline 72
 00FA           ;                       while(!(SPSR & (1<<SPIF)));    // Wait Queue off
 00FA           ;                       }
 00FA           ; }
 00FA           ; 
 00FA           ; //*************************************
 00FA           ; // void VS1001Init(void)
 00FA           ; //*************************************
 00FA           ; void VS1001Init(unsigned char HardReset)
 00FA           ; {
 00FA                   .dbline 77
 00FA           ; unsigned int buf[2];
 00FA           ; unsigned char null[32];
 00FA           ; int i;
 00FA           ; 
 00FA           ; if (HardReset == TRUE)
 00FA 4130              cpi R20,1
 00FC A1F4              brne L21
 00FE                   .dbline 78
 00FE           ;    {
 00FE                   .dbline 79
 00FE           ;    PORT_MP3_DDR = XRES | BSYNC | XCS | MOSI | SCK | SS;
 00FE 87E7              ldi R24,119
 0100 87BB              out 0x17,R24
 0102                   .dbline 80
 0102           ;    SPCR = 0x51;                                               // SPI ENABLE, MSB FIRST, MASTER, 
 0102 81E5              ldi R24,81
 0104 8DB9              out 0xd,R24
 0106                   .dbline 84
 0106           ;                                                                       // CPOL=0, CPHA=0, CLK/16
 0106           ;                                                 
 0106           ; 
 0106           ;    PORT_MP3_OUT = XRES + XCS;                                            // XCS 1 - RESET 1 - BSYNC 0
 0106 80E5              ldi R24,80
 0108 88BB              out 0x18,R24
 010A                   .dbline 85
 010A           ;    delay_ms(5);       
 010A 05E0              ldi R16,5
 010C 10E0              ldi R17,0
 010E 0E940000          xcall _delay_ms
 0112                   .dbline 87
 0112           ; 
 0112           ;    PORT_MP3_OUT &= ~XRES;                                                     // Reset is 0
 0112 C698              cbi 0x18,6
 0114                   .dbline 88
 0114           ;    delay_ms(5);
 0114 05E0              ldi R16,5
 0116 10E0              ldi R17,0
 0118 0E940000          xcall _delay_ms
 011C                   .dbline 89
 011C           ;    PORT_MP3_OUT |= XRES;;                                                     // Reset is 1
 011C C69A              sbi 0x18,6
 011E                   .dbline 89
 011E                   .dbline 90
 011E           ;    delay_ms(5);
 011E 05E0              ldi R16,5
 0120 10E0              ldi R17,0
 0122 0E940000          xcall _delay_ms
 0126                   .dbline 91
 0126           ;    }
 0126           L21:
 0126                   .dbline 93
 0126 4427              clr R20
 0128 5527              clr R21
 012A           L23:
 012A                   .dbline 93
 012A CE01              movw R24,R28
 012C 0296              adiw R24,2
 012E FA01              movw R30,R20
 0130 E80F              add R30,R24
 0132 F91F              adc R31,R25
 0134 2224              clr R2
 0136 2082              std z+0,R2
 0138           L24:
 0138                   .dbline 93
 0138           ; 
 0138           ; for (i=0;i<32;i++) null[i] = 0;
 0138 4F5F              subi R20,255  ; offset = 1
 013A 5F4F              sbci R21,255
 013C                   .dbline 93
 013C 4032              cpi R20,32
 013E E0E0              ldi R30,0
 0140 5E07              cpc R21,R30
 0142 9CF3              brlt L23
 0144                   .dbline 95
 0144           ; 
 0144           ; delay_ms(5);
 0144 05E0              ldi R16,5
 0146 10E0              ldi R17,0
 0148 0E940000          xcall _delay_ms
 014C                   .dbline 96
 014C           ; VS1001_Stream(&null[0],32);                                           // 32 null's
 014C 20E2              ldi R18,32
 014E 8E01              movw R16,R28
 0150 0E5F              subi R16,254  ; offset = 2
 0152 1F4F              sbci R17,255
 0154 B3DF              xcall _VS1001_Stream
 0156                   .dbline 97
 0156           ; delay_ms(200);
 0156 08EC              ldi R16,200
 0158 10E0              ldi R17,0
 015A 0E940000          xcall _delay_ms
 015E                   .dbline 99
 015E           ; 
 015E           ; buf[0] = 0x0004;
 015E 84E0              ldi R24,4
 0160 90E0              ldi R25,0
 0162 9BA3              std y+35,R25
 0164 8AA3              std y+34,R24
 0166                   .dbline 100
 0166           ; VS1001_Write(0,1,buf);
 0166 CE01              movw R24,R28
 0168 8296              adiw R24,34
 016A 9983              std y+1,R25
 016C 8883              std y+0,R24
 016E 21E0              ldi R18,1
 0170 30E0              ldi R19,0
 0172 0027              clr R16
 0174 7FDF              xcall _VS1001_Write
 0176                   .dbline 101
 0176           ; delay_ms(2);
 0176 02E0              ldi R16,2
 0178 10E0              ldi R17,0
 017A 0E940000          xcall _delay_ms
 017E           L27:
 017E                   .dbline 102
 017E           L28:
 017E                   .dbline 102
 017E           ; while(!(PORT_MP3_IN & DREQ));                                 // wait for DREQ
 017E B79B              sbis 0x16,7
 0180 FECF              rjmp L27
 0182                   .dbline 104
 0182           ; 
 0182           ; buf[0] = 0x0000;
 0182 2224              clr R2
 0184 3324              clr R3
 0186 3BA2              std y+35,R3
 0188 2AA2              std y+34,R2
 018A                   .dbline 105
 018A           ; VS1001_Write(0,1,buf);
 018A CE01              movw R24,R28
 018C 8296              adiw R24,34
 018E 9983              std y+1,R25
 0190 8883              std y+0,R24
 0192 21E0              ldi R18,1
 0194 30E0              ldi R19,0
 0196 0027              clr R16
 0198 6DDF              xcall _VS1001_Write
 019A                   .dbline 106
 019A           ; delay_ms(2);
 019A 02E0              ldi R16,2
 019C 10E0              ldi R17,0
 019E 0E940000          xcall _delay_ms
 01A2           L30:
 01A2                   .dbline 107
 01A2           L31:
 01A2                   .dbline 107
 01A2           ; while(!(PORT_MP3_IN & DREQ));                                 // wait for DREQ
 01A2 B79B              sbis 0x16,7
 01A4 FECF              rjmp L30
 01A6                   .dbline 109
 01A6           ; 
 01A6           ; buf[0] = 0x9800;                                                              // Clock 12.288Mhz
 01A6 80E0              ldi R24,38912
 01A8 98E9              ldi R25,152
 01AA 9BA3              std y+35,R25
 01AC 8AA3              std y+34,R24
 01AE                   .dbline 110
 01AE           ; VS1001_Write(3,1,buf);
 01AE CE01              movw R24,R28
 01B0 8296              adiw R24,34
 01B2 9983              std y+1,R25
 01B4 8883              std y+0,R24
 01B6 21E0              ldi R18,1
 01B8 30E0              ldi R19,0
 01BA 03E0              ldi R16,3
 01BC 5BDF              xcall _VS1001_Write
 01BE                   .dbline 111
 01BE           ; VS1001_Stream(&null[0],16);                                           // 16 null's
 01BE 20E1              ldi R18,16
 01C0 8E01              movw R16,R28
 01C2 0E5F              subi R16,254  ; offset = 2
 01C4 1F4F              sbci R17,255
 01C6 7ADF              xcall _VS1001_Stream
 01C8                   .dbline 112
 01C8           ; VS1001_SetVolume(10,10);
 01C8 2AE0              ldi R18,10
 01CA 0AE0              ldi R16,10
 01CC 84D0              xcall _VS1001_SetVolume
 01CE                   .dbline -2
 01CE           L20:
 01CE A696              adiw R28,38
 01D0 0E940000          xcall pop_gset1
 01D4                   .dbline 0 ; func end
 01D4 0895              ret
 01D6                   .dbsym l buf 34 A[4:2]i
 01D6                   .dbsym l null 2 A[32:32]c
 01D6                   .dbsym r i 20 I
 01D6                   .dbsym r HardReset 20 c
 01D6                   .dbend
 01D6                   .dbfunc e Reg_Test _Reg_Test fc
 01D6           ;            buf -> y+2
 01D6           ;              j -> R20,R21
                        .even
 01D6           _Reg_Test::
 01D6 0E940000          xcall push_gset1
 01DA AA97              sbiw R28,42
 01DC                   .dbline -1
 01DC                   .dbline 119
 01DC           ; }
 01DC           ; 
 01DC           ; //*************************************
 01DC           ; // void Reg_Test(void)
 01DC           ; //*************************************
 01DC           ; unsigned char Reg_Test()
 01DC           ; {
 01DC                   .dbline 123
 01DC           ; unsigned int buf[20];
 01DC           ; unsigned int j;
 01DC           ; 
 01DC           ; for (j=0;j<20;j++)
 01DC 4427              clr R20
 01DE 5527              clr R21
 01E0 2FC0              xjmp L37
 01E2           L34:
 01E2                   .dbline 124
 01E2           ;       {
 01E2                   .dbline 125
 01E2           ;       buf[0] = j*256+j;
 01E2 00E0              ldi R16,256
 01E4 11E0              ldi R17,1
 01E6 9A01              movw R18,R20
 01E8 0E940000          xcall empy16s
 01EC 1801              movw R2,R16
 01EE 240E              add R2,R20
 01F0 351E              adc R3,R21
 01F2 3B82              std y+3,R3
 01F4 2A82              std y+2,R2
 01F6                   .dbline 126
 01F6           ;       VS1001_Write(3,1,buf);
 01F6 CE01              movw R24,R28
 01F8 0296              adiw R24,2
 01FA 9983              std y+1,R25
 01FC 8883              std y+0,R24
 01FE 21E0              ldi R18,1
 0200 30E0              ldi R19,0
 0202 03E0              ldi R16,3
 0204 37DF              xcall _VS1001_Write
 0206                   .dbline 127
 0206           ;       buf[0] = 0xffff;
 0206 8FEF              ldi R24,65535
 0208 9FEF              ldi R25,255
 020A 9B83              std y+3,R25
 020C 8A83              std y+2,R24
 020E                   .dbline 128
 020E           ;       VS1001_Read(3,1,buf);
 020E CE01              movw R24,R28
 0210 0296              adiw R24,2
 0212 9983              std y+1,R25
 0214 8883              std y+0,R24
 0216 21E0              ldi R18,1
 0218 30E0              ldi R19,0
 021A 03E0              ldi R16,3
 021C F6DE              xcall _VS1001_Read
 021E                   .dbline 129
 021E           ;       if (buf[0] != j*256+j) return 0;

⌨️ 快捷键说明

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