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

📄 mp3.lst

📁 使用硬盘制作mp3的源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0374 8819      LDD	R1,Y+17
    0375 0C20      ADD	R2,R0
    0376 1C31      ADC	R3,R1
    0377 14E2      CP	R14,R2
    0378 04F3      CPC	R15,R3
    0379 F428      BCC	0x037F
    037A 89EA      LDD	R30,Y+18
    037B 89FB      LDD	R31,Y+19
    037C 92A1      ST	R10,Z+
    037D 8BFB      STD	Y+19,R31
    037E 8BEA      STD	Y+18,R30
(0263) 	j++;
    037F 01C7      MOVW	R24,R14
    0380 9601      ADIW	R24,1
    0381 017C      MOVW	R14,R24
(0264)     if ((j >= from) && (j < (from + qte))) *ptr++ = (unsigned char)(word >> 8);
    0382 840E      LDD	R0,Y+14
    0383 841F      LDD	R1,Y+15
    0384 1580      CP	R24,R0
    0385 0591      CPC	R25,R1
    0386 F080      BCS	0x0397
    0387 0110      MOVW	R2,R0
    0388 8808      LDD	R0,Y+16
    0389 8819      LDD	R1,Y+17
    038A 0C20      ADD	R2,R0
    038B 1C31      ADC	R3,R1
    038C 1582      CP	R24,R2
    038D 0593      CPC	R25,R3
    038E F440      BCC	0x0397
    038F 0115      MOVW	R2,R10
    0390 2C23      MOV	R2,R3
    0391 2433      CLR	R3
    0392 89EA      LDD	R30,Y+18
    0393 89FB      LDD	R31,Y+19
    0394 9221      ST	R2,Z+
    0395 8BFB      STD	Y+19,R31
    0396 8BEA      STD	Y+18,R30
(0265) 	j++;
    0397 01C7      MOVW	R24,R14
    0398 9601      ADIW	R24,1
    0399 017C      MOVW	R14,R24
(0266)     while(busy);
    039A DF06      RCALL	_ata_bsy
    039B 2300      TST	R16
    039C F7E9      BNE	0x039A
    039D 01C6      MOVW	R24,R12
    039E 9601      ADIW	R24,1
    039F 016C      MOVW	R12,R24
    03A0 01C6      MOVW	R24,R12
    03A1 3080      CPI	R24,0
    03A2 E0E1      LDI	R30,1
    03A3 079E      CPC	R25,R30
    03A4 F408      BCC	0x03A6
    03A5 CFC4      RJMP	0x036A
    03A6 940E15CE  CALL	pop_gset5
    03A8 9622      ADIW	R28,2
    03A9 9508      RET
_ata_write_sector:
  i                    --> R10
  ptr                  --> R12
  lbasector            --> Y+8
  device               --> R10
    03AA 933A      ST	R19,-Y
    03AB 932A      ST	R18,-Y
    03AC 940E15D3  CALL	push_gset4
    03AE 2EA0      MOV	R10,R16
    03AF 84CC      LDD	R12,Y+12
    03B0 84DD      LDD	R13,Y+13
(0267)     }
(0268) }			
(0269) 
(0270) //******************************************************************
(0271) //*	WRITE A SECTOR 
(0272) //*   device = 0x00 or 0x01  
(0273) //*   
(0274) //******************************************************************  	
(0275) void ata_write_sector(unsigned char device, unsigned long lbasector, unsigned char *ptr)
(0276) {
(0277) unsigned int i;
(0278) 
(0279) lbasector &= 0x0FFFFFFF;
    03B1 EF4F      LDI	R20,0xFF
    03B2 EF5F      LDI	R21,0xFF
    03B3 EF6F      LDI	R22,0xFF
    03B4 E07F      LDI	R23,0xF
    03B5 01FE      MOVW	R30,R28
    03B6 8420      LDD	R2,Z+8
    03B7 8431      LDD	R3,Z+9
    03B8 8442      LDD	R4,Z+10
    03B9 8453      LDD	R5,Z+11
    03BA 2224      AND	R2,R20
    03BB 2235      AND	R3,R21
    03BC 2246      AND	R4,R22
    03BD 2257      AND	R5,R23
    03BE 01FE      MOVW	R30,R28
    03BF 8620      STD	Z+8,R2
    03C0 8631      STD	Z+9,R3
    03C1 8642      STD	Z+10,R4
    03C2 8653      STD	Z+11,R5
(0280) 
(0281) switch (device)
    03C3 24BB      CLR	R11
    03C4 20AA      TST	R10
    03C5 F411      BNE	0x03C8
    03C6 20BB      TST	R11
    03C7 F031      BEQ	0x03CE
    03C8 01C5      MOVW	R24,R10
    03C9 3081      CPI	R24,1
    03CA E0E0      LDI	R30,0
    03CB 079E      CPC	R25,R30
    03CC F0D9      BEQ	0x03E8
    03CD C034      RJMP	0x0402
(0282)  	{
(0283) 	case 0x00:
(0284)   	   ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xE0);
    03CE E188      LDI	R24,0x18
    03CF E090      LDI	R25,0
    03D0 01FE      MOVW	R30,R28
    03D1 8420      LDD	R2,Z+8
    03D2 8431      LDD	R3,Z+9
    03D3 8442      LDD	R4,Z+10
    03D4 8453      LDD	R5,Z+11
    03D5 938A      ST	R24,-Y
    03D6 0181      MOVW	R16,R2
    03D7 0192      MOVW	R18,R4
    03D8 940E1655  CALL	lsr32
    03DA 0118      MOVW	R2,R16
    03DB 0129      MOVW	R4,R18
    03DC EE40      LDI	R20,0xE0
    03DD E050      LDI	R21,0
    03DE E060      LDI	R22,0
    03DF E070      LDI	R23,0
    03E0 2A24      OR	R2,R20
    03E1 2A35      OR	R3,R21
    03E2 2A46      OR	R4,R22
    03E3 2A57      OR	R5,R23
    03E4 2D22      MOV	R18,R2
    03E5 EF05      LDI	R16,0xF5
    03E6 DE51      RCALL	_ata_write_byte
(0285) 	   break;
    03E7 C033      RJMP	0x041B
(0286)   	case 0x01:
(0287)   	   ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xF0);
    03E8 E188      LDI	R24,0x18
    03E9 E090      LDI	R25,0
    03EA 01FE      MOVW	R30,R28
    03EB 8420      LDD	R2,Z+8
    03EC 8431      LDD	R3,Z+9
    03ED 8442      LDD	R4,Z+10
    03EE 8453      LDD	R5,Z+11
    03EF 938A      ST	R24,-Y
    03F0 0181      MOVW	R16,R2
    03F1 0192      MOVW	R18,R4
    03F2 940E1655  CALL	lsr32
    03F4 0118      MOVW	R2,R16
    03F5 0129      MOVW	R4,R18
    03F6 EF40      LDI	R20,0xF0
    03F7 E050      LDI	R21,0
    03F8 E060      LDI	R22,0
    03F9 E070      LDI	R23,0
    03FA 2A24      OR	R2,R20
    03FB 2A35      OR	R3,R21
    03FC 2A46      OR	R4,R22
    03FD 2A57      OR	R5,R23
    03FE 2D22      MOV	R18,R2
    03FF EF05      LDI	R16,0xF5
    0400 DE37      RCALL	_ata_write_byte
(0288) 	   break;
    0401 C019      RJMP	0x041B
(0289)   	default:
(0290)   	   ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xE0);
    0402 E188      LDI	R24,0x18
    0403 E090      LDI	R25,0
    0404 01FE      MOVW	R30,R28
    0405 8420      LDD	R2,Z+8
    0406 8431      LDD	R3,Z+9
    0407 8442      LDD	R4,Z+10
    0408 8453      LDD	R5,Z+11
    0409 938A      ST	R24,-Y
    040A 0181      MOVW	R16,R2
    040B 0192      MOVW	R18,R4
    040C 940E1655  CALL	lsr32
    040E 0118      MOVW	R2,R16
    040F 0129      MOVW	R4,R18
    0410 EE40      LDI	R20,0xE0
    0411 E050      LDI	R21,0
    0412 E060      LDI	R22,0
    0413 E070      LDI	R23,0
    0414 2A24      OR	R2,R20
    0415 2A35      OR	R3,R21
    0416 2A46      OR	R4,R22
    0417 2A57      OR	R5,R23
    0418 2D22      MOV	R18,R2
    0419 EF05      LDI	R16,0xF5
    041A DE1D      RCALL	_ata_write_byte
(0291) 	   break; 
(0292)  	} 
(0293) while(busy);
    041B DE85      RCALL	_ata_bsy
    041C 2300      TST	R16
    041D F7E9      BNE	0x041B
(0294) ata_write_byte(ATA_IO_CYL_H,lbasector >> 16);
    041E 01FE      MOVW	R30,R28
    041F 8420      LDD	R2,Z+8
    0420 8431      LDD	R3,Z+9
    0421 8442      LDD	R4,Z+10
    0422 8453      LDD	R5,Z+11
    0423 0112      MOVW	R2,R4
    0424 2444      CLR	R4
    0425 2455      CLR	R5
    0426 2D22      MOV	R18,R2
    0427 ED0D      LDI	R16,0xDD
    0428 DE0F      RCALL	_ata_write_byte
(0295) while(busy);
    0429 DE77      RCALL	_ata_bsy
    042A 2300      TST	R16
    042B F7E9      BNE	0x0429
(0296) ata_write_byte(ATA_IO_CYL_L,lbasector >> 8);
    042C E088      LDI	R24,0x8
    042D E090      LDI	R25,0
    042E 01FE      MOVW	R30,R28
    042F 8420      LDD	R2,Z+8
    0430 8431      LDD	R3,Z+9
    0431 8442      LDD	R4,Z+10
    0432 8453      LDD	R5,Z+11
    0433 938A      ST	R24,-Y
    0434 0181      MOVW	R16,R2
    0435 0192      MOVW	R18,R4
    0436 940E1655  CALL	lsr32
    0438 2F20      MOV	R18,R16
    0439 ED05      LDI	R16,0xD5
    043A DDFD      RCALL	_ata_write_byte
(0297) while(busy);
    043B DE65      RCALL	_ata_bsy
    043C 2300      TST	R16
    043D F7E9      BNE	0x043B
(0298) ata_write_byte(ATA_IO_SECTORNUM,lbasector);
    043E 01FE      MOVW	R30,R28
    043F 8420      LDD	R2,Z+8
    0440 8431      LDD	R3,Z+9
    0441 8442      LDD	R4,Z+10
    0442 8453      LDD	R5,Z+11
    0443 2D22      MOV	R18,R2
    0444 EE0D      LDI	R16,0xED
    0445 DDF2      RCALL	_ata_write_byte
(0299) while(busy);
    0446 DE5A      RCALL	_ata_bsy
    0447 2300      TST	R16
    0448 F7E9      BNE	0x0446
(0300) ata_write_byte(ATA_IO_SECTORCNT,0x01);
    0449 E021      LDI	R18,1
    044A EE05      LDI	R16,0xE5
    044B DDEC      RCALL	_ata_write_byte
(0301) while(busy);
    044C DE54      RCALL	_ata_bsy
    044D 2300      TST	R16
    044E F7E9      BNE	0x044C
(0302) ata_write_byte(ATA_IO_CMD,CMD_WRITE_SECTORS);
    044F E320      LDI	R18,0x30
    0450 EF0D      LDI	R16,0xFD
    0451 DDE6      RCALL	_ata_write_byte
(0303) while(busy);
    0452 DE4E      RCALL	_ata_bsy
    0453 2300      TST	R16
    0454 F7E9      BNE	0x0452
(0304) while(!drq);
    0455 DE53      RCALL	_ata_drq
    0456 2300      TST	R16
    0457 F3E9      BEQ	0x0455
(0305) 
(0306) for (i=0;i<256;i++)
    0458 24AA      CLR	R10
    0459 24BB      CLR	R11
    045A C014      RJMP	0x046F
(0307)     {
(0308)     ata_write_word(ATA_IO_DATA,(unsigned int)(*(ptr+1)<<8)+*ptr);
    045B 01F6      MOVW	R30,R12
    045C 8020      LDD	R2,Z+0
    045D 2433      CLR	R3
    045E 8121      LDD	R18,Z+1
    045F 2733      CLR	R19
    0460 2F32      MOV	R19,R18
    0461 2722      CLR	R18
    0462 0D22      ADD	R18,R2
    0463 1D33      ADC	R19,R3
    0464 EC05      LDI	R16,0xC5
    0465 DD91      RCALL	_ata_write_word
(0309) 	ptr += 2;
    0466 01C6      MOVW	R24,R12
    0467 9602      ADIW	R24,2
    0468 016C      MOVW	R12,R24
(0310)     while(busy);
    0469 DE37      RCALL	_ata_bsy
    046A 2300      TST	R16
    046B F7E9      BNE	0x0469
    046C 01C5      MOVW	R24,R10
    046D 9601      ADIW	R24,1
    046E 015C      MOVW	R10,R24
    046F 01C5      MOVW	R24,R10
    0470 3080      CPI	R24,0
    0471 E0E1      LDI	R30,1
    0472 079E      CPC	R25,R30
    0473 F338      BCS	0x045B
    0474 940E15CB  CALL	pop_gset4
    0476 9622      ADIW	R28,2
    0477 9508      RET
_InitFat:
    0478 940E15D7  CALL	push_gset2
    047A 9728      SBIW	R28,0x8
FILE: G:\IccPro\Mp3Ide\fat.c
(0001) #include <iom128v.h>
(0002) #include <macros.h>
(0003) #include <string.h>
(0004) #include <stdio.h>
(0005) #include "vs1001.h"
(0006) #include "generic.h"
(0007) #include "remote.h"
(0008) #include "fat.h"
(0009) #include "ata.h"
(0010) 
(0011) //******************************************************************
(0012) //*	FAT Global Variable
(0013) //******************************************************************
(0014) struct PartRecord Part;
(0015) struct BootRecord Boot;
(0016) struct FileInfo File;
(0017) unsigned long FirstDataSector;
(0018) 
(0019) //*************************************
(0020) // void init_fat(void)
(0021) //*************************************
(0022) void InitFat(void)
(0023) {
(0024) ata_read_sector_byte(0, 0, 446, sizeof(Part) , (unsigned char*)&Part); 
    047B E684      LDI	R24,0x64
    047C E093      LDI	R25,3
    047D 839F      STD	Y+7,R25
    047E 838E      STD	Y+6,R24
    047F E180      LDI	R24,0x10
    0480 E090      LDI	R25,0
    0481 839D      STD	Y+5,R25
    0482 838C      STD	Y+4,R24
    0483 EB8E      LDI	R24,0xBE
    0484 E091      LDI	R25,1
    0485 839B      STD	Y+3,R25
    0486 838A      STD	Y+2,R24
    0487 E040      LDI	R20,0
    0488 E050      LDI	R21,0
    0489 E060      LDI	R22,0
    048A E070      LDI	R23,0
    048B 8368      STD	Y+0,R22
    048C 8379      STD	Y+1,R23
    048D 019A      MOVW	R18,R20
    048E 2700      CLR	R16
    048F 940E02B9  CALL	_ata_read_sector_byte
(0025) ata_read_sector_byte(0, Part.StartLBA, 0, sizeof(Boot) , (unsigned char*)&Boot); 
    0491 E380      LDI	R24,0x30
    0492 E093      LDI	R25,3
    0493 839F      STD	Y+7,R25
    0494 838E      STD	Y+6,R24
    0495 E384      LDI	R24,0x34
    0496 E090      LDI	R25,0
    0497 839D      STD	Y+5,R25
    0498 838C      STD	Y+4,R24
    0499 2422      CLR	R2
    049A 2433      CLR	R3
    049B 823B      STD	Y+3,R3
    049C 822A      STD	Y+2,R2
    049D 9040036E  LDS	R4,0x36E
    049F 9050036F  LDS	R5,0x36F
    04A1 9020036C  LDS	R2,0x36C
    04A3 9030036D  LDS	R3,0x36D
    04A5 8248      STD	Y+0,R4
    04A6 8259      STD	Y+1,R5
    04A7 0191      MOVW	R18,R2
    04A8 2700      CLR	R16
    04A9 940E02B9  CALL	_ata_read_sector_byte
(0026) FirstDataSector = Part.StartLBA + Boot.ResSectors + (Boot.FATs * Boot.FATSize);
    04AB 90400356  LDS	R4,0x356
    04AD 90500357  LDS	R5,0x357
    04AF 90200354  LDS	R2,0x354
    04B1 90300355  LDS	R3,0x355
    04B3 90600340  LDS	R6,0x340
    04B5 2477      CLR	R7
    04B6 2488      CLR	R8
    04B7 2499      CLR	R9
    04B8 925A      ST	R5,-Y
    04B9 924A      ST	R4,-Y
    04BA 923A      ST	R3,-Y
    04BB 922A      ST	R2,-Y
    04BC 0183      MOVW	R16,R6
    04BD 0194      MOVW	R18,R8
    04BE 940E1595  CALL	empy32s
    04C0 9020033E  LDS	R2,0x33E
    04C2 9030033F  LDS	R3,0x33F
    04C4 2444      CLR	R4
    04C5 2455      CLR	R5
    04C6 9080036E  LDS	R8,0x36E
    04C8 9090036F  LDS	R9,0x36F

⌨️ 快捷键说明

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