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

📄 ata.lis

📁 用ATmega128做的mp3播放器
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0424 9305              cpc R25,R3
 0426 40F4              brsh L141
 0428                   .dbline 264
 0428 1701              movw R2,R14
 042A 232C              mov R2,R3
 042C 3324              clr R3
 042E EA89              ldd R30,y+18
 0430 FB89              ldd R31,y+19
 0432 2192              st Z+,R2
 0434 FB8B              std y+19,R31
 0436 EA8B              std y+18,R30
 0438           L141:
 0438                   .dbline 265
 0438           ;       j++;
 0438 C601              movw R24,R12
 043A 0196              adiw R24,1
 043C 6C01              movw R12,R24
 043E           L143:
 043E                   .dbline 266
 043E           L144:
 043E                   .dbline 266
 043E 07DF              xcall _ata_bsy
 0440 0023              tst R16
 0442 E9F7              brne L143
 0444                   .dbline 267
 0444           L136:
 0444                   .dbline 259
 0444 C501              movw R24,R10
 0446 0196              adiw R24,1
 0448 5C01              movw R10,R24
 044A           L138:
 044A                   .dbline 259
 044A C501              movw R24,R10
 044C 8030              cpi R24,0
 044E E1E0              ldi R30,1
 0450 9E07              cpc R25,R30
 0452 08F4              brsh X6
 0454 C4CF              xjmp L135
 0456           X6:
 0456                   .dbline -2
 0456                   .dbline 268
 0456           ;     while(busy);
 0456           ;     }
 0456           ; }                     
 0456           L108:
 0456 0E940000          xcall pop_gset5
 045A 2296              adiw R28,2
 045C                   .dbline 0 ; func end
 045C 0895              ret
 045E                   .dbsym r word 14 i
 045E                   .dbsym r i 10 i
 045E                   .dbsym r j 12 i
 045E                   .dbsym l ptr 18 pc
 045E                   .dbsym l qte 16 i
 045E                   .dbsym l from 14 i
 045E                   .dbsym l lbasector 10 l
 045E                   .dbsym r device 10 c
 045E                   .dbend
 045E                   .dbfunc e ata_write_sector _ata_write_sector fV
 045E           ;              i -> R12,R13
 045E           ;            ptr -> R10,R11
 045E           ;      lbasector -> y+8
 045E           ;         device -> R12
                        .even
 045E           _ata_write_sector::
 045E 3A93              st -y,r19
 0460 2A93              st -y,r18
 0462 0E940000          xcall push_gset4
 0466 C02E              mov R12,R16
 0468 AC84              ldd R10,y+12
 046A BD84              ldd R11,y+13
 046C                   .dbline -1
 046C                   .dbline 276
 046C           ; 
 046C           ; //******************************************************************
 046C           ; //*   WRITE A SECTOR 
 046C           ; //*   device = 0x00 or 0x01  
 046C           ; //*   
 046C           ; //******************************************************************          
 046C           ; void ata_write_sector(unsigned char device, unsigned long lbasector, unsigned char *ptr)
 046C           ; {
 046C                   .dbline 279
 046C           ; unsigned int i;
 046C           ; 
 046C           ; lbasector &= 0x0FFFFFFF;
 046C 4FEF              ldi R20,255
 046E 5FEF              ldi R21,255
 0470 6FEF              ldi R22,255
 0472 7FE0              ldi R23,15
 0474 FE01              movw R30,R28
 0476 2084              ldd R2,z+8
 0478 3184              ldd R3,z+9
 047A 4284              ldd R4,z+10
 047C 5384              ldd R5,z+11
 047E 2422              and R2,R20
 0480 3522              and R3,R21
 0482 4622              and R4,R22
 0484 5722              and R5,R23
 0486 2086              std z+8,R2
 0488 3186              std z+9,R3
 048A 4286              std z+10,R4
 048C 5386              std z+11,R5
 048E                   .dbline 281
 048E           ; 
 048E           ; switch (device)
 048E DD24              clr R13
 0490 CC20              tst R12
 0492 11F4              brne X7
 0494 DD20              tst R13
 0496 31F0              breq L150
 0498           X7:
 0498 C601              movw R24,R12
 049A 8130              cpi R24,1
 049C E0E0              ldi R30,0
 049E 9E07              cpc R25,R30
 04A0 D9F0              breq L151
 04A2 34C0              xjmp L147
 04A4           X8:
 04A4                   .dbline 282
 04A4           ;       {
 04A4           L150:
 04A4                   .dbline 284
 04A4           ;       case 0x00:
 04A4           ;          ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xE0);
 04A4 88E1              ldi R24,24
 04A6 90E0              ldi R25,0
 04A8 FE01              movw R30,R28
 04AA 2084              ldd R2,z+8
 04AC 3184              ldd R3,z+9
 04AE 4284              ldd R4,z+10
 04B0 5384              ldd R5,z+11
 04B2 8A93              st -y,R24
 04B4 8101              movw R16,R2
 04B6 9201              movw R18,R4
 04B8 0E940000          xcall lsr32
 04BC 1801              movw R2,R16
 04BE 2901              movw R4,R18
 04C0 40EE              ldi R20,224
 04C2 50E0              ldi R21,0
 04C4 60E0              ldi R22,0
 04C6 70E0              ldi R23,0
 04C8 242A              or R2,R20
 04CA 352A              or R3,R21
 04CC 462A              or R4,R22
 04CE 572A              or R5,R23
 04D0 222D              mov R18,R2
 04D2 05EF              ldi R16,245
 04D4 53DE              xcall _ata_write_byte
 04D6                   .dbline 285
 04D6           ;          break;
 04D6 33C0              xjmp L153
 04D8           L151:
 04D8                   .dbline 287
 04D8           ;       case 0x01:
 04D8           ;          ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xF0);
 04D8 88E1              ldi R24,24
 04DA 90E0              ldi R25,0
 04DC FE01              movw R30,R28
 04DE 2084              ldd R2,z+8
 04E0 3184              ldd R3,z+9
 04E2 4284              ldd R4,z+10
 04E4 5384              ldd R5,z+11
 04E6 8A93              st -y,R24
 04E8 8101              movw R16,R2
 04EA 9201              movw R18,R4
 04EC 0E940000          xcall lsr32
 04F0 1801              movw R2,R16
 04F2 2901              movw R4,R18
 04F4 40EF              ldi R20,240
 04F6 50E0              ldi R21,0
 04F8 60E0              ldi R22,0
 04FA 70E0              ldi R23,0
 04FC 242A              or R2,R20
 04FE 352A              or R3,R21
 0500 462A              or R4,R22
 0502 572A              or R5,R23
 0504 222D              mov R18,R2
 0506 05EF              ldi R16,245
 0508 39DE              xcall _ata_write_byte
 050A                   .dbline 288
 050A           ;          break;
 050A 19C0              xjmp L153
 050C           L147:
 050C                   .dbline 290
 050C           ;       default:
 050C           ;          ata_write_byte(ATA_IO_DEVICE_HEAD,lbasector >> 24 | 0xE0);
 050C 88E1              ldi R24,24
 050E 90E0              ldi R25,0
 0510 FE01              movw R30,R28
 0512 2084              ldd R2,z+8
 0514 3184              ldd R3,z+9
 0516 4284              ldd R4,z+10
 0518 5384              ldd R5,z+11
 051A 8A93              st -y,R24
 051C 8101              movw R16,R2
 051E 9201              movw R18,R4
 0520 0E940000          xcall lsr32
 0524 1801              movw R2,R16
 0526 2901              movw R4,R18
 0528 40EE              ldi R20,224
 052A 50E0              ldi R21,0
 052C 60E0              ldi R22,0
 052E 70E0              ldi R23,0
 0530 242A              or R2,R20
 0532 352A              or R3,R21
 0534 462A              or R4,R22
 0536 572A              or R5,R23
 0538 222D              mov R18,R2
 053A 05EF              ldi R16,245
 053C 1FDE              xcall _ata_write_byte
 053E                   .dbline 291
 053E           ;          break; 
 053E           L152:
 053E                   .dbline 293
 053E           L153:
 053E                   .dbline 293
 053E           ;       } 
 053E           ; while(busy);
 053E 87DE              xcall _ata_bsy
 0540 0023              tst R16
 0542 E9F7              brne L152
 0544                   .dbline 294
 0544           ; ata_write_byte(ATA_IO_CYL_H,lbasector >> 16);
 0544 FE01              movw R30,R28
 0546 2084              ldd R2,z+8
 0548 3184              ldd R3,z+9
 054A 4284              ldd R4,z+10
 054C 5384              ldd R5,z+11
 054E 1201              movw R2,R4
 0550 4424              clr R4
 0552 5524              clr R5
 0554 222D              mov R18,R2
 0556 0DED              ldi R16,221
 0558 11DE              xcall _ata_write_byte
 055A           L155:
 055A                   .dbline 295
 055A           L156:
 055A                   .dbline 295
 055A           ; while(busy);
 055A 79DE              xcall _ata_bsy
 055C 0023              tst R16
 055E E9F7              brne L155
 0560                   .dbline 296
 0560           ; ata_write_byte(ATA_IO_CYL_L,lbasector >> 8);
 0560 88E0              ldi R24,8
 0562 90E0              ldi R25,0
 0564 FE01              movw R30,R28
 0566 2084              ldd R2,z+8
 0568 3184              ldd R3,z+9
 056A 4284              ldd R4,z+10
 056C 5384              ldd R5,z+11
 056E 8A93              st -y,R24
 0570 8101              movw R16,R2
 0572 9201              movw R18,R4
 0574 0E940000          xcall lsr32
 0578 202F              mov R18,R16
 057A 05ED              ldi R16,213
 057C FFDD              xcall _ata_write_byte
 057E           L158:
 057E                   .dbline 297
 057E           L159:
 057E                   .dbline 297
 057E           ; while(busy);
 057E 67DE              xcall _ata_bsy
 0580 0023              tst R16
 0582 E9F7              brne L158
 0584                   .dbline 298
 0584           ; ata_write_byte(ATA_IO_SECTORNUM,lbasector);
 0584 FE01              movw R30,R28
 0586 2084              ldd R2,z+8
 0588 3184              ldd R3,z+9
 058A 4284              ldd R4,z+10
 058C 5384              ldd R5,z+11
 058E 222D              mov R18,R2
 0590 0DEE              ldi R16,237
 0592 F4DD              xcall _ata_write_byte
 0594           L161:
 0594                   .dbline 299
 0594           L162:
 0594                   .dbline 299
 0594           ; while(busy);
 0594 5CDE              xcall _ata_bsy
 0596 0023              tst R16
 0598 E9F7              brne L161
 059A                   .dbline 300
 059A           ; ata_write_byte(ATA_IO_SECTORCNT,0x01);
 059A 21E0              ldi R18,1
 059C 05EE              ldi R16,229
 059E EEDD              xcall _ata_write_byte
 05A0           L164:
 05A0                   .dbline 301
 05A0           L165:
 05A0                   .dbline 301
 05A0           ; while(busy);
 05A0 56DE              xcall _ata_bsy
 05A2 0023              tst R16
 05A4 E9F7              brne L164
 05A6                   .dbline 302
 05A6           ; ata_write_byte(ATA_IO_CMD,CMD_WRITE_SECTORS);
 05A6 20E3              ldi R18,48
 05A8 0DEF              ldi R16,253
 05AA E8DD              xcall _ata_write_byte
 05AC           L167:
 05AC                   .dbline 303
 05AC           L168:
 05AC                   .dbline 303
 05AC           ; while(busy);
 05AC 50DE              xcall _ata_bsy
 05AE 0023              tst R16
 05B0 E9F7              brne L167
 05B2           L170:
 05B2                   .dbline 304
 05B2           L171:
 05B2                   .dbline 304
 05B2           ; while(!drq);
 05B2 55DE              xcall _ata_drq
 05B4 0023              tst R16
 05B6 E9F3              breq L170
 05B8                   .dbline 306
 05B8           ; 
 05B8           ; for (i=0;i<256;i++)
 05B8 CC24              clr R12
 05BA DD24              clr R13
 05BC 14C0              xjmp L176
 05BE           L173:
 05BE                   .dbline 307
 05BE           ;     {
 05BE                   .dbline 308
 05BE           ;     ata_write_word(ATA_IO_DATA,(unsigned int)(*(ptr+1)<<8)+*ptr);
 05BE F501              movw R30,R10
 05C0 2080              ldd R2,z+0
 05C2 3324              clr R3
 05C4 2181              ldd R18,z+1
 05C6 3327              clr R19
 05C8 322F              mov R19,R18
 05CA 2227              clr R18
 05CC 220D              add R18,R2
 05CE 331D              adc R19,R3
 05D0 05EC              ldi R16,197
 05D2 93DD              xcall _ata_write_word
 05D4                   .dbline 309
 05D4           ;       ptr += 2;
 05D4 C501              movw R24,R10
 05D6 0296              adiw R24,2
 05D8 5C01              movw R10,R24
 05DA           L177:
 05DA                   .dbline 310
 05DA           L178:
 05DA                   .dbline 310
 05DA 39DE              xcall _ata_bsy
 05DC 0023              tst R16
 05DE E9F7              brne L177
 05E0                   .dbline 311
 05E0           L174:
 05E0                   .dbline 306
 05E0 C601              movw R24,R12
 05E2 0196              adiw R24,1
 05E4 6C01              movw R12,R24
 05E6           L176:
 05E6                   .dbline 306
 05E6 C601              movw R24,R12
 05E8 8030              cpi R24,0
 05EA E1E0              ldi R30,1
 05EC 9E07              cpc R25,R30
 05EE 38F3              brlo L173
 05F0                   .dbline -2
 05F0                   .dbline 312
 05F0           ;     while(busy);
 05F0           ;     }
 05F0           ; }                     
 05F0           L146:
 05F0 0E940000          xcall pop_gset4
 05F4 2296              adiw R28,2
 05F6                   .dbline 0 ; func end
 05F6 0895              ret
 05F8                   .dbsym r i 12 i
 05F8                   .dbsym r ptr 10 pc
 05F8                   .dbsym l lbasector 8 l
 05F8                   .dbsym r device 12 c
 05F8                   .dbend

⌨️ 快捷键说明

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