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

📄 ata.lis

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

⌨️ 快捷键说明

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