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

📄 sd.lis

📁 mp3源码,是自己写的,关于vs1001与CD卡的读取歌曲,和播放.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 012E           L29:
 012E                   .dbline 58
 012E           ;     { dat=read_single();}
 012E                   .dbline 58
 012E 0E940000          xcall _read_single
 0132 602F              mov R22,R16
 0134                   .dbline 58
 0134           L30:
 0134                   .dbline 59
 0134           ;       while(dat!=0xff);
 0134 6F3F              cpi R22,255
 0136 D9F7              brne L29
 0138                   .dbline 60
 0138           ;       write_single(0xff);
 0138 0FEF              ldi R16,255
 013A 0E940000          xcall _write_single
 013E                   .dbline 61
 013E           ;   }
 013E           L27:
 013E                   .dbline 62
 013E           ;   select_vs;//释放SD
 013E C39A              sbi 0x18,3
 0140                   .dbline 63
 0140           ;   return 1;     
 0140 01E0              ldi R16,1
 0142                   .dbline -2
 0142           L10:
 0142 0E940000          xcall pop_gset5
 0146                   .dbline 0 ; func end
 0146 0895              ret
 0148                   .dbsym r response_length 14 c
 0148                   .dbsym r dat 22 c
 0148                   .dbsym r n 20 I
 0148                   .dbsym r response 10 pc
 0148                   .dbsym l arg 10 l
 0148                   .dbsym r response_type 12 c
 0148                   .dbsym r cmd 20 c
 0148                   .dbend
 0148                   .dbfunc e read_block _read_block fc
 0148           ;            dat -> R12
 0148           ;              n -> y+6
 0148           ;       mp3_data -> R10,R11
 0148           ;         length -> y+22
 0148           ;       blockadd -> y+18
                        .even
 0148           _read_block::
 0148 0E940000          xcall push_arg4
 014C 0E940000          xcall push_gset4
 0150 2A97              sbiw R28,10
 0152 AA8C              ldd R10,y+26
 0154 BB8C              ldd R11,y+27
 0156                   .dbline -1
 0156                   .dbline 67
 0156           ; }
 0156           ; 
 0156           ; uchar read_block(ulong blockadd,ulong length,uchar *mp3_data) 
 0156           ; { uchar dat;
 0156                   .dbline 69
 0156           ;   ulong n;  
 0156           ;   sd_wait_nobusy();
 0156 54DF              xcall _sd_wait_nobusy
 0158                   .dbline 70
 0158           ;   if(sd_write_command(CMD16,CMD16_R,length,response)==0)//设置读取数据的长度
 0158 80E0              ldi R24,<_response
 015A 90E0              ldi R25,>_response
 015C 9D83              std y+5,R25
 015E 8C83              std y+4,R24
 0160 FE01              movw R30,R28
 0162 2688              ldd R2,z+22
 0164 3788              ldd R3,z+23
 0166 408C              ldd R4,z+24
 0168 518C              ldd R5,z+25
 016A 2882              std y+0,R2
 016C 3982              std y+1,R3
 016E 4A82              std y+2,R4
 0170 5B82              std y+3,R5
 0172 21E0              ldi R18,1
 0174 00E1              ldi R16,16
 0176 5DDF              xcall _sd_write_command
 0178 0023              tst R16
 017A 11F4              brne L33
 017C                   .dbline 71
 017C           ;     return 0; 
 017C 0027              clr R16
 017E 89C0              xjmp L32
 0180           L33:
 0180                   .dbline 73
 0180           ;   //blockadd<<=9;//增加512B
 0180           ;   if(sd_write_command(CMD17,CMD17_R,blockadd,response)==0)
 0180 80E0              ldi R24,<_response
 0182 90E0              ldi R25,>_response
 0184 9D83              std y+5,R25
 0186 8C83              std y+4,R24
 0188 FE01              movw R30,R28
 018A 2288              ldd R2,z+18
 018C 3388              ldd R3,z+19
 018E 4488              ldd R4,z+20
 0190 5588              ldd R5,z+21
 0192 2882              std y+0,R2
 0194 3982              std y+1,R3
 0196 4A82              std y+2,R4
 0198 5B82              std y+3,R5
 019A 21E0              ldi R18,1
 019C 01E1              ldi R16,17
 019E 49DF              xcall _sd_write_command
 01A0 0023              tst R16
 01A2 11F4              brne L35
 01A4                   .dbline 74
 01A4           ;     return 0;
 01A4 0027              clr R16
 01A6 75C0              xjmp L32
 01A8           L35:
 01A8                   .dbline 75
 01A8           ;   if(response[0]!=0)//出现error
 01A8 20900000          lds R2,_response
 01AC 2220              tst R2
 01AE 11F0              breq L37
 01B0                   .dbline 76
 01B0           ;     return 0;
 01B0 0027              clr R16
 01B2 6FC0              xjmp L32
 01B4           L37:
 01B4                   .dbline 77
 01B4           ;   select_sd;
 01B4 C398              cbi 0x18,3
 01B6                   .dbline 78
 01B6           ;   n=0;
 01B6 40E0              ldi R20,0
 01B8 50E0              ldi R21,0
 01BA 60E0              ldi R22,0
 01BC 70E0              ldi R23,0
 01BE FE01              movw R30,R28
 01C0 4683              std z+6,R20
 01C2 5783              std z+7,R21
 01C4 6087              std z+8,R22
 01C6 7187              std z+9,R23
 01C8           L39:
 01C8                   .dbline 80
 01C8           ;   do
 01C8           ;   { dat=read_single();
 01C8                   .dbline 80
 01C8 0E940000          xcall _read_single
 01CC C02E              mov R12,R16
 01CE                   .dbline 81
 01CE           ;     n++;
 01CE 41E0              ldi R20,1
 01D0 50E0              ldi R21,0
 01D2 60E0              ldi R22,0
 01D4 70E0              ldi R23,0
 01D6 FE01              movw R30,R28
 01D8 2680              ldd R2,z+6
 01DA 3780              ldd R3,z+7
 01DC 4084              ldd R4,z+8
 01DE 5184              ldd R5,z+9
 01E0 240E              add R2,R20
 01E2 351E              adc R3,R21
 01E4 461E              adc R4,R22
 01E6 571E              adc R5,R23
 01E8 FE01              movw R30,R28
 01EA 2682              std z+6,R2
 01EC 3782              std z+7,R3
 01EE 4086              std z+8,R4
 01F0 5186              std z+9,R5
 01F2                   .dbline 82
 01F2           ;   }
 01F2           L40:
 01F2                   .dbline 83
 01F2           ;   while((dat==0xff)&&(n<TIMEOUT_READ));//读出数据的头0xfe     
 01F2 8C2D              mov R24,R12
 01F4 8F3F              cpi R24,255
 01F6 71F4              brne L42
 01F8 40E8              ldi R20,128
 01FA 5AE1              ldi R21,26
 01FC 66E0              ldi R22,6
 01FE 70E0              ldi R23,0
 0200 FE01              movw R30,R28
 0202 2680              ldd R2,z+6
 0204 3780              ldd R3,z+7
 0206 4084              ldd R4,z+8
 0208 5184              ldd R5,z+9
 020A 2416              cp R2,R20
 020C 3506              cpc R3,R21
 020E 4606              cpc R4,R22
 0210 5706              cpc R5,R23
 0212 D0F2              brlo L39
 0214           L42:
 0214                   .dbline 84
 0214           ;   for(n=0;n<length;n++)
 0214 40E0              ldi R20,0
 0216 50E0              ldi R21,0
 0218 60E0              ldi R22,0
 021A 70E0              ldi R23,0
 021C FE01              movw R30,R28
 021E 4683              std z+6,R20
 0220 5783              std z+7,R21
 0222 6087              std z+8,R22
 0224 7187              std z+9,R23
 0226 1FC0              xjmp L46
 0228           L43:
 0228                   .dbline 85
 0228                   .dbline 85
 0228 0E940000          xcall _read_single
 022C FE01              movw R30,R28
 022E AF93              push R26
 0230 BF93              push R27
 0232 A681              ldd R26,z+6
 0234 B781              ldd R27,z+7
 0236 FD01              movw R30,R26
 0238 BF91              pop R27
 023A AF91              pop R26
 023C EA0D              add R30,R10
 023E FB1D              adc R31,R11
 0240 0083              std z+0,R16
 0242                   .dbline 85
 0242           L44:
 0242                   .dbline 84
 0242 41E0              ldi R20,1
 0244 50E0              ldi R21,0
 0246 60E0              ldi R22,0
 0248 70E0              ldi R23,0
 024A FE01              movw R30,R28
 024C 2680              ldd R2,z+6
 024E 3780              ldd R3,z+7
 0250 4084              ldd R4,z+8
 0252 5184              ldd R5,z+9
 0254 240E              add R2,R20
 0256 351E              adc R3,R21
 0258 461E              adc R4,R22
 025A 571E              adc R5,R23
 025C FE01              movw R30,R28
 025E 2682              std z+6,R2
 0260 3782              std z+7,R3
 0262 4086              std z+8,R4
 0264 5186              std z+9,R5
 0266           L46:
 0266                   .dbline 84
 0266 FE01              movw R30,R28
 0268 2688              ldd R2,z+22
 026A 3788              ldd R3,z+23
 026C 408C              ldd R4,z+24
 026E 518C              ldd R5,z+25
 0270 FE01              movw R30,R28
 0272 6680              ldd R6,z+6
 0274 7780              ldd R7,z+7
 0276 8084              ldd R8,z+8
 0278 9184              ldd R9,z+9
 027A 6214              cp R6,R2
 027C 7304              cpc R7,R3
 027E 8404              cpc R8,R4
 0280 9504              cpc R9,R5
 0282 08F4              brsh X1
 0284 D1CF              xjmp L43
 0286           X1:
 0286                   .dbline 86
 0286           ;   { mp3_data[n]=read_single();}
 0286           ;   read_single();//CRC 16bit
 0286 0E940000          xcall _read_single
 028A                   .dbline 87
 028A           ;   read_single();
 028A 0E940000          xcall _read_single
 028E                   .dbline 88
 028E           ;   select_vs;
 028E C39A              sbi 0x18,3
 0290                   .dbline 89
 0290           ;   return 1;
 0290 01E0              ldi R16,1
 0292                   .dbline -2
 0292           L32:
 0292 2A96              adiw R28,10
 0294 0E940000          xcall pop_gset4
 0298 2496              adiw R28,4
 029A                   .dbline 0 ; func end
 029A 0895              ret
 029C                   .dbsym r dat 12 c
 029C                   .dbsym l n 6 l
 029C                   .dbsym r mp3_data 10 pc
 029C                   .dbsym l length 22 l
 029C                   .dbsym l blockadd 18 l
 029C                   .dbend
 029C                   .dbfunc e sd_read_block _sd_read_block fV
 029C           ;       mp3_data -> R20,R21
 029C           ;         length -> y+12
 029C           ;       blockadd -> y+8
                        .even
 029C           _sd_read_block::
 029C 0E940000          xcall push_arg4
 02A0 0E940000          xcall push_gset1
 02A4 2697              sbiw R28,6
 02A6 4889              ldd R20,y+16
 02A8 5989              ldd R21,y+17
 02AA                   .dbline -1
 02AA                   .dbline 93

⌨️ 快捷键说明

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