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

📄 usb.lis

📁 使用硬盘制作mp3的源程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 011E 4427              clr R20
 0120 5527              clr R21
 0122 09C0              xjmp L27
 0124           L24:
 0124                   .dbline 66
 0124 80E0              ldi R24,<_SectorBuffer
 0126 90E0              ldi R25,>_SectorBuffer
 0128 FA01              movw R30,R20
 012A E80F              add R30,R24
 012C F91F              adc R31,R25
 012E 0081              ldd R16,z+0
 0130 74D0              xcall _USBTxChar
 0132           L25:
 0132                   .dbline 66
 0132 4F5F              subi R20,255  ; offset = 1
 0134 5F4F              sbci R21,255
 0136           L27:
 0136                   .dbline 66
 0136           ; for (i=0;i<512;i++) USBTxChar(SectorBuffer[i]);
 0136 4030              cpi R20,0
 0138 E2E0              ldi R30,2
 013A 5E07              cpc R21,R30
 013C 98F3              brlo L24
 013E                   .dbline -2
 013E           L23:
 013E 2896              adiw R28,8
 0140 0E940000          xcall pop_gset1
 0144 2496              adiw R28,4
 0146                   .dbline 0 ; func end
 0146 0895              ret
 0148                   .dbsym r i 20 i
 0148                   .dbsym l Sector 10 l
 0148                   .dbend
 0148                   .dbfunc e USBWriteSector _USBWriteSector fV
 0148           ;              i -> R10,R11
 0148           ;        TimeOut -> y+4
 0148           ;         Sector -> y+14
                        .even
 0148           _USBWriteSector::
 0148 0E940000          xcall push_arg4
 014C 0E940000          xcall push_gset3
 0150 2897              sbiw R28,8
 0152                   .dbline -1
 0152                   .dbline 72
 0152           ; }
 0152           ; 
 0152           ; /*********************************************************/
 0152           ; 
 0152           ; void USBWriteSector(unsigned long Sector)
 0152           ; {
 0152                   .dbline 77
 0152           ; unsigned int i;
 0152           ; unsigned long TimeOut;
 0152           ; extern unsigned char SectorBuffer[512];
 0152           ; 
 0152           ; UCSR0B = 0x18;  // Rx enable Tx Enable RxInt Disable
 0152 88E1              ldi R24,24
 0154 8AB9              out 0xa,R24
 0156                   .dbline 78
 0156           ; for (i=0;i<512;i++) 
 0156 AA24              clr R10
 0158 BB24              clr R11
 015A 3BC0              xjmp L32
 015C           L29:
 015C                   .dbline 79
 015C           ;       {
 015C                   .dbline 80
 015C           ;       TimeOut = 0;
 015C 40E0              ldi R20,0
 015E 50E0              ldi R21,0
 0160 60E0              ldi R22,0
 0162 70E0              ldi R23,0
 0164 FE01              movw R30,R28
 0166 4483              std z+4,R20
 0168 5583              std z+5,R21
 016A 6683              std z+6,R22
 016C 7783              std z+7,R23
 016E 24C0              xjmp L34
 0170           L33:
 0170                   .dbline 82
 0170           ;       while (USBIsChar() == 0) 
 0170           ;                 {
 0170                   .dbline 83
 0170           ;                 WDR();
 0170 A895              wdr
 0172                   .dbline 84
 0172           ;                 TimeOut++;
 0172 41E0              ldi R20,1
 0174 50E0              ldi R21,0
 0176 60E0              ldi R22,0
 0178 70E0              ldi R23,0
 017A FE01              movw R30,R28
 017C 2480              ldd R2,z+4
 017E 3580              ldd R3,z+5
 0180 4680              ldd R4,z+6
 0182 5780              ldd R5,z+7
 0184 240E              add R2,R20
 0186 351E              adc R3,R21
 0188 461E              adc R4,R22
 018A 571E              adc R5,R23
 018C FE01              movw R30,R28
 018E 2482              std z+4,R2
 0190 3582              std z+5,R3
 0192 4682              std z+6,R4
 0194 5782              std z+7,R5
 0196                   .dbline 85
 0196           ;                 if (TimeOut == 1000000)  // Wait 3 second for each char,
 0196 40E4              ldi R20,64
 0198 52E4              ldi R21,66
 019A 6FE0              ldi R22,15
 019C 70E0              ldi R23,0
 019E FE01              movw R30,R28
 01A0 2480              ldd R2,z+4
 01A2 3580              ldd R3,z+5
 01A4 4680              ldd R4,z+6
 01A6 5780              ldd R5,z+7
 01A8 2416              cp R2,R20
 01AA 3506              cpc R3,R21
 01AC 4606              cpc R4,R22
 01AE 5706              cpc R5,R23
 01B0 19F4              brne L36
 01B2                   .dbline 86
 01B2           ;                        {
 01B2                   .dbline 87
 01B2           ;                        UCSR0B = 0x98;  // Rx enable Tx Enable RxInt Enable
 01B2 88E9              ldi R24,152
 01B4 8AB9              out 0xa,R24
 01B6                   .dbline 88
 01B6           ;                        return;
 01B6 26C0              xjmp L28
 01B8           L36:
 01B8                   .dbline 90
 01B8           L34:
 01B8                   .dbline 81
 01B8 2AD0              xcall _USBIsChar
 01BA 0023              tst R16
 01BC C9F2              breq L33
 01BE                   .dbline 91
 01BE 80E0              ldi R24,<_SectorBuffer
 01C0 90E0              ldi R25,>_SectorBuffer
 01C2 F501              movw R30,R10
 01C4 E80F              add R30,R24
 01C6 F91F              adc R31,R25
 01C8 2CB0              in R2,0xc
 01CA 2082              std z+0,R2
 01CC                   .dbline 92
 01CC           L30:
 01CC                   .dbline 78
 01CC C501              movw R24,R10
 01CE 0196              adiw R24,1
 01D0 5C01              movw R10,R24
 01D2           L32:
 01D2                   .dbline 78
 01D2 C501              movw R24,R10
 01D4 8030              cpi R24,0
 01D6 E2E0              ldi R30,2
 01D8 9E07              cpc R25,R30
 01DA 08F4              brsh X2
 01DC BFCF              xjmp L29
 01DE           X2:
 01DE                   .dbline 93
 01DE           ;                        }
 01DE           ;                 }
 01DE           ;       SectorBuffer[i] = UDR0;
 01DE           ;       }
 01DE           ; ata_write_sector(0, Sector, &SectorBuffer[0]);
 01DE 80E0              ldi R24,<_SectorBuffer
 01E0 90E0              ldi R25,>_SectorBuffer
 01E2 9B83              std y+3,R25
 01E4 8A83              std y+2,R24
 01E6 FE01              movw R30,R28
 01E8 2684              ldd R2,z+14
 01EA 3784              ldd R3,z+15
 01EC 4088              ldd R4,z+16
 01EE 5188              ldd R5,z+17
 01F0 4882              std y+0,R4
 01F2 5982              std y+1,R5
 01F4 9101              movw R18,R2
 01F6 0027              clr R16
 01F8 0E940000          xcall _ata_write_sector
 01FC                   .dbline 94
 01FC           ; USBTxChar('!');
 01FC 01E2              ldi R16,33
 01FE 0DD0              xcall _USBTxChar
 0200                   .dbline 95
 0200           ; UCSR0B = 0x98;  // Rx enable Tx Enable RxInt Enable
 0200 88E9              ldi R24,152
 0202 8AB9              out 0xa,R24
 0204                   .dbline -2
 0204           L28:
 0204 2896              adiw R28,8
 0206 0E940000          xcall pop_gset3
 020A 2496              adiw R28,4
 020C                   .dbline 0 ; func end
 020C 0895              ret
 020E                   .dbsym r i 10 i
 020E                   .dbsym l TimeOut 4 l
 020E                   .dbsym l Sector 14 l
 020E                   .dbend
 020E                   .dbfunc e USBIsChar _USBIsChar fc
                        .even
 020E           _USBIsChar::
 020E                   .dbline -1
 020E                   .dbline 101
 020E           ; }
 020E           ; 
 020E           ; /*********************************************************/
 020E           ; 
 020E           ; unsigned char USBIsChar(void)
 020E           ; {
 020E                   .dbline 102
 020E           ; if (UCSR0A & 0x80) return 1;
 020E 5F9B              sbis 0xb,7
 0210 02C0              rjmp L39
 0212                   .dbline 102
 0212 01E0              ldi R16,1
 0214 01C0              xjmp L38
 0216           L39:
 0216                   .dbline 103
 0216           ; return 0;
 0216 0027              clr R16
 0218                   .dbline -2
 0218           L38:
 0218                   .dbline 0 ; func end
 0218 0895              ret
 021A                   .dbend
 021A                   .dbfunc e USBTxChar _USBTxChar fV
 021A           ;             ch -> R16
                        .even
 021A           _USBTxChar::
 021A                   .dbline -1
 021A                   .dbline 109
 021A           ; }
 021A           ; 
 021A           ; /*********************************************************/
 021A           ; 
 021A           ; void USBTxChar(unsigned char ch)
 021A           ; {
 021A 01C0              xjmp L43
 021C           L42:
 021C                   .dbline 110
 021C A895              wdr
 021E           L43:
 021E                   .dbline 110
 021E           ; while (!(UCSR0A & 0x20)) WDR();     // Wait for empty transmit buffer
 021E 5D9B              sbis 0xb,5
 0220 FDCF              rjmp L42
 0222                   .dbline 111
 0222           ; UDR0 = ch;                                                    // Write char
 0222 0CB9              out 0xc,R16
 0224                   .dbline -2
 0224           L41:
 0224                   .dbline 0 ; func end
 0224 0895              ret
 0226                   .dbsym r ch 16 c
 0226                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile G:\IccPro\Mp3Ide\usb.c
 0000           L20:
 0000                   .blkb 5
                        .area idata
 0000 2B2B2B5700        .byte 43,43,43,'W,0
                        .area data(ram, con, rel)
 0005                   .dbfile G:\IccPro\Mp3Ide\usb.c
 0005           L15:
 0005                   .blkb 5
                        .area idata
 0005 2B2B2B5200        .byte 43,43,43,'R,0
                        .area data(ram, con, rel)
 000A                   .dbfile G:\IccPro\Mp3Ide\usb.c

⌨️ 快捷键说明

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