📄 vs1001.lis
字号:
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 + -