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

📄 usb.lis

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

⌨️ 快捷键说明

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