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

📄 task.lis

📁 基于ATmega64的MP3程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01CC 20920000          sts L2,R2
 01D0 50920300          sts L2+2+1,R5
 01D4 40920200          sts L2+2,R4
 01D8                   .dbline 73
 01D8           ;                                
 01D8           ;                   if(new_Sec>=0xfff8)
 01D8 48EF              ldi R20,248
 01DA 5FEF              ldi R21,255
 01DC 60E0              ldi R22,0
 01DE 70E0              ldi R23,0
 01E0 2416              cp R2,R20
 01E2 3506              cpc R3,R21
 01E4 4606              cpc R4,R22
 01E6 5706              cpc R5,R23
 01E8 20F0              brlo L31
 01EA                   .dbline 74
 01EA           ;                                SONG_state=song_over;    
 01EA 85E0              ldi R24,5
 01EC 80930000          sts _SONG_state,R24
 01F0 7BC1              xjmp L8
 01F2           L31:
 01F2                   .dbline 76
 01F2           ;                       else
 01F2           ;                               {new_Sec=(new_Sec-2)*(fat_info.BPB_SecPerClus)+fat_info.FirstDateSecter; //簇的头扇区号 
 01F2                   .dbline 76
 01F2 42E0              ldi R20,2
 01F4 50E0              ldi R21,0
 01F6 60E0              ldi R22,0
 01F8 70E0              ldi R23,0
 01FA 40900200          lds R4,L2+2
 01FE 50900300          lds R5,L2+2+1
 0202 20900000          lds R2,L2
 0206 30900100          lds R3,L2+1
 020A 241A              sub R2,R20
 020C 350A              sbc R3,R21
 020E 460A              sbc R4,R22
 0210 570A              sbc R5,R23
 0212 60900100          lds R6,_fat_info+1
 0216 7724              clr R7
 0218 8824              clr R8
 021A 9924              clr R9
 021C 9A92              st -y,R9
 021E 8A92              st -y,R8
 0220 7A92              st -y,R7
 0222 6A92              st -y,R6
 0224 8101              movw R16,R2
 0226 9201              movw R18,R4
 0228 0E940000          xcall empy32u
 022C 1801              movw R2,R16
 022E 2901              movw R4,R18
 0230 60900500          lds R6,_fat_info+5
 0234 70900600          lds R7,_fat_info+5+1
 0238 8824              clr R8
 023A 9924              clr R9
 023C 260C              add R2,R6
 023E 371C              adc R3,R7
 0240 481C              adc R4,R8
 0242 591C              adc R5,R9
 0244 30920100          sts L2+1,R3
 0248 20920000          sts L2,R2
 024C 50920300          sts L2+2+1,R5
 0250 40920200          sts L2+2,R4
 0254                   .dbline 78
 0254           ;                                
 0254           ;                                doing=((long)file_Clus_sendnumber*80)/file_Clus_allnumber;
 0254 20900800          lds R2,L5
 0258 30900900          lds R3,L5+1
 025C 4424              clr R4
 025E 5524              clr R5
 0260 40E5              ldi R20,80
 0262 50E0              ldi R21,0
 0264 60E0              ldi R22,0
 0266 70E0              ldi R23,0
 0268 5A92              st -y,R5
 026A 4A92              st -y,R4
 026C 3A92              st -y,R3
 026E 2A92              st -y,R2
 0270 8A01              movw R16,R20
 0272 9B01              movw R18,R22
 0274 0E940000          xcall empy32s
 0278 20900600          lds R2,L4
 027C 30900700          lds R3,L4+1
 0280 4424              clr R4
 0282 5524              clr R5
 0284 5A92              st -y,R5
 0286 4A92              st -y,R4
 0288 3A92              st -y,R3
 028A 2A92              st -y,R2
 028C 0E940000          xcall div32s
 0290 A02E              mov R10,R16
 0292                   .dbline 79
 0292           ;                  if(doing1!=doing)
 0292 20900A00          lds R2,L6
 0296 2016              cp R2,R16
 0298 51F0              breq L35
 029A                   .dbline 80
 029A           ;                  {
 029A                   .dbline 81
 029A           ;                                  LCD_set_XY(doing+1,4);
 029A 24E0              ldi R18,4
 029C 0F5F              subi R16,255    ; addi 1
 029E 0E940000          xcall _LCD_set_XY
 02A2                   .dbline 82
 02A2           ;                    LCD_write_byte(0x5d,1);
 02A2 21E0              ldi R18,1
 02A4 0DE5              ldi R16,93
 02A6 0E940000          xcall _LCD_write_byte
 02AA                   .dbline 83
 02AA           ;                                  doing1=doing;
 02AA A0920A00          sts L6,R10
 02AE                   .dbline 84
 02AE           ;                                }
 02AE           L35:
 02AE                   .dbline 85
 02AE           ;                                file_Clus_sendnumber++;        
 02AE 80910800          lds R24,L5
 02B2 90910900          lds R25,L5+1
 02B6 0196              adiw R24,1
 02B8 90930900          sts L5+1,R25
 02BC 80930800          sts L5,R24
 02C0                   .dbline 86
 02C0           ;                                SONG_state=song_read_sector;
 02C0 83E0              ldi R24,3
 02C2 80930000          sts _SONG_state,R24
 02C6                   .dbline 87
 02C6           ;                                secperclus=fat_info.BPB_SecPerClus;           //每簇多少扇区
 02C6 20900100          lds R2,_fat_info+1
 02CA 2092B900          sts _secperclus,R2
 02CE                   .dbline 88
 02CE           ;                   }
 02CE                   .dbline 89
 02CE           ;                                break;   
 02CE 0CC1              xjmp L8
 02D0           L38:
 02D0                   .dbline 92
 02D0           ;          }
 02D0           ;   case song_read_sector:
 02D0           ;        {
 02D0                   .dbline 93
 02D0           ;           if(secperclus--)
 02D0 2090B900          lds R2,_secperclus
 02D4 3324              clr R3
 02D6 822D              mov R24,R2
 02D8 8150              subi R24,1
 02DA 8093B900          sts _secperclus,R24
 02DE 2220              tst R2
 02E0 09F4              brne X9
 02E2 39C0              xjmp L39
 02E4           X9:
 02E4                   .dbline 94
 02E4           ;             {
 02E4                   .dbline 95
 02E4           ;                  SD_start_read(new_Sec++);
 02E4 40900200          lds R4,L2+2
 02E8 50900300          lds R5,L2+2+1
 02EC 20900000          lds R2,L2
 02F0 30900100          lds R3,L2+1
 02F4 FE01              movw R30,R28
 02F6 2186              std z+9,R2
 02F8 3286              std z+10,R3
 02FA 4386              std z+11,R4
 02FC 5486              std z+12,R5
 02FE 41E0              ldi R20,1
 0300 50E0              ldi R21,0
 0302 60E0              ldi R22,0
 0304 70E0              ldi R23,0
 0306 FE01              movw R30,R28
 0308 2184              ldd R2,z+9
 030A 3284              ldd R3,z+10
 030C 4384              ldd R4,z+11
 030E 5484              ldd R5,z+12
 0310 240E              add R2,R20
 0312 351E              adc R3,R21
 0314 461E              adc R4,R22
 0316 571E              adc R5,R23
 0318 30920100          sts L2+1,R3
 031C 20920000          sts L2,R2
 0320 50920300          sts L2+2+1,R5
 0324 40920200          sts L2+2,R4
 0328 FE01              movw R30,R28
 032A 0185              ldd R16,z+9
 032C 1285              ldd R17,z+10
 032E 2385              ldd R18,z+11
 0330 3485              ldd R19,z+12
 0332 0E940000          xcall _SD_start_read
 0336                   .dbline 96
 0336           ;            SD_get_date(buffer,512);              
 0336 20E0              ldi R18,512
 0338 32E0              ldi R19,2
 033A 00E0              ldi R16,<_buffer
 033C 10E0              ldi R17,>_buffer
 033E 0E940000          xcall _SD_get_date
 0342                   .dbline 97
 0342           ;                  SONG_state=song_send_frame;
 0342 84E0              ldi R24,4
 0344 80930000          sts _SONG_state,R24
 0348                   .dbline 98
 0348           ;                  bytepersec=0;
 0348 2224              clr R2
 034A 3324              clr R3
 034C 30920500          sts L3+1,R3
 0350 20920400          sts L3,R2
 0354                   .dbline 99
 0354           ;                 }
 0354 C9C0              xjmp L8
 0356           L39:
 0356                   .dbline 101
 0356           ;               else
 0356           ;                 SONG_state=song_find_newsec;
 0356 82E0              ldi R24,2
 0358 80930000          sts _SONG_state,R24
 035C                   .dbline 102
 035C           ;           break;
 035C C5C0              xjmp L8
 035E           L41:
 035E                   .dbline 105
 035E           ;          }
 035E           ;   case song_send_frame:
 035E           ;        {
 035E                   .dbline 106
 035E           ;           STA013_Enable();
 035E DB9A              sbi 0x1b,3
 0360                   .dbline 106
 0360 1EC0              xjmp L43
 0362           L42:
 0362                   .dbline 108
 0362           ;           while(sta_Demand())      //每次连续请求6ms,隔20ms才又来请求       
 0362           ;                 {
 0362                   .dbline 109
 0362           ;                  Write_Byte_SD(*(buffer+bytepersec++));
 0362 20900400          lds R2,L3
 0366 30900500          lds R3,L3+1
 036A C101              movw R24,R2
 036C 0196              adiw R24,1
 036E 90930500          sts L3+1,R25
 0372 80930400          sts L3,R24
 0376 80E0              ldi R24,<_buffer
 0378 90E0              ldi R25,>_buffer
 037A F101              movw R30,R2
 037C E80F              add R30,R24
 037E F91F              adc R31,R25
 0380 0081              ldd R16,z+0
 0382 0E940000          xcall _Write_Byte_SD
 0386                   .dbline 110
 0386           ;                  if(bytepersec==512)
 0386 80910400          lds R24,L3
 038A 90910500          lds R25,L3+1
 038E 8030              cpi R24,0
 0390 E2E0              ldi R30,2
 0392 9E07              cpc R25,R30
 0394 21F4              brne L45
 0396                   .dbline 111
 0396           ;                    {SONG_state=song_read_sector;
 0396                   .dbline 111
 0396 83E0              ldi R24,3
 0398 80930000          sts _SONG_state,R24
 039C                   .dbline 112
 039C           ;                         break;
 039C 04C0              xjmp L44
 039E           L45:
 039E                   .dbline 114
 039E           L43:
 039E                   .dbline 107
 039E 0E940000          xcall _sta_Demand
 03A2 0023              tst R16
 03A4 F1F6              brne L42
 03A6           L44:
 03A6                   .dbline 115
 03A6           ;                        }
 03A6           ;           }
 03A6           ;               STA013_Disable();
 03A6 DB98              cbi 0x1b,3
 03A8                   .dbline 115
 03A8                   .dbline 117
 03A8           ;               
 03A8           ;               break;
 03A8 9FC0              xjmp L8
 03AA           L47:
 03AA                   .dbline 120
 03AA           ;          }
 03AA           ;   case song_over:
 03AA           ;        {
 03AA                   .dbline 121
 03AA           ;           doing1=0;
 03AA 2224              clr R2
 03AC 20920A00          sts L6,R2
 03B0                   .dbline 122
 03B0           ;           MP3_current_number++;
 03B0 80910000          lds R24,_MP3_current_number
 03B4 8F5F              subi R24,255    ; addi 1
 03B6 80930000          sts _MP3_current_number,R24
 03BA                   .dbline 123
 03BA           ;               if(MP3_current_number>MP3_all_number)
 03BA 20900000          lds R2,_MP3_all_number
 03BE 2816              cp R2,R24
 03C0 18F4              brsh L48
 03C2                   .dbline 124
 03C2           ;                  MP3_current_number=1;
 03C2 81E0              ldi R24,1
 03C4 80930000          sts _MP3_current_number,R24
 03C8           L48:
 03C8                   .dbline 125
 03C8           ;               GEPAI();
 03C8 0E940000          xcall _GEPAI
 03CC                   .dbline 126
 03CC           ;               JINGDU(); 
 03CC 0E940000          xcall _JINGDU
 03D0                   .dbline 127
 03D0           ;           ASCII(buffer,MP3_current_number);
 03D0 20910000          lds R18,_MP3_current_number
 03D4 00E0              ldi R16,<_buffer
 03D6 10E0              ldi R17,>_buffer
 03D8 0E940000          xcall _ASCII
 03DC                   .dbline 128
 03DC           ;         LCD_write_String(8,5,2,buffer,0); 
 03DC 2224              clr R2
 03DE 2C82              std y+4,R2
 03E0 80E0              ldi R24,<_buffer
 03E2 90E0              ldi R25,>_buffer
 03E4 9B83              std y+3,R25
 03E6 8A83              std y+2,R24
 03E8 82E0              ldi R24,2
 03EA 8883              std y+0,R24
 03EC 25E0              ldi R18,5
 03EE 08E0              ldi R16,8
 03F0 0E940000          xcall _LCD_write_String
 03F4                   .dbline 130
 03F4           ;       
 03F4           ;               MP3_Directory(MP3_current_number);
 03F4 00910000          lds R16,_MP3_current_number
 03F8 0E940000          xcall _MP3_Directory
 03FC                   .dbline 131
 03FC           ;               if(mp3_info.Name_number==0)
 03FC 20903400          lds R2,_mp3_info+52
 0400 2220              tst R2
 0402 09F0              breq X10
 0404 41C0              xjmp L50
 0406           X10:
 0406                   .dbline 132

⌨️ 快捷键说明

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