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

📄 usb.lis

📁 使用硬盘制作mp3的源程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module usb.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\IccPro\Mp3Ide\usb.c
 0000                   .dbfunc e InitUSB _InitUSB fV
                        .even
 0000           _InitUSB::
 0000                   .dbline -1
 0000                   .dbline 16
 0000           ; #include <iom128v.h>
 0000           ; #include "usb.h"
 0000           ; #include "ata.h"
 0000           ; #include "generic.h"
 0000           ; #include <macros.h>
 0000           ; #include <string.h>
 0000           ; #include <stdio.h>
 0000           ; #include <stdlib.h>
 0000           ; 
 0000           ; //******************************************************************
 0000           ; //*   Init USB Serial Port 
 0000           ; //*   
 0000           ; //*   
 0000           ; //******************************************************************
 0000           ; void InitUSB(void)
 0000           ; {
 0000                   .dbline 17
 0000           ; UCSR0C = 0x86;  // Asyn,NoParity,1StopBit,8Bit,
 0000 86E8              ldi R24,134
 0002 80939500          sts 149,R24
 0006                   .dbline 18
 0006           ; UBRR0L = 16;    // 8->115200 at 16Mhz // 16->57600 at 16Mhz // 25->38400bps at 16Mhz
 0006 80E1              ldi R24,16
 0008 89B9              out 0x9,R24
 000A                   .dbline 19
 000A           ; UCSR0B = 0x98;  // Rx enable Tx Enable RxInt Enable
 000A 88E9              ldi R24,152
 000C 8AB9              out 0xa,R24
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbend
                        .area vector(rom, abs)
                        .org 72
 0048 0C940800          jmp _USBRxChar
                        .area text(rom, con, rel)
 0010                   .dbfile G:\IccPro\Mp3Ide\usb.c
                        .area bss(ram, con, rel)
 0000                   .dbfile G:\IccPro\Mp3Ide\usb.c
 0000           L3:
 0000                   .blkb 1
 0001           L4:
 0001                   .blkb 15
                        .area text(rom, con, rel)
 0010                   .dbfile G:\IccPro\Mp3Ide\usb.c
 0010                   .dbfunc e USBRxChar _USBRxChar fV
 0010                   .dbsym s USBCommand L4 A[15:15]c
 0010                   .dbsym s InChar L3 c
 0010           ;         Sector -> y+2
 0010           ;              i -> R20
                        .even
 0010           _USBRxChar::
 0010 0E940000          xcall push_lset
 0014 0E940000          xcall push_gset1
 0018 2697              sbiw R28,6
 001A                   .dbline -1
 001A                   .dbline 25
 001A           ; }
 001A           ; 
 001A           ; /*********************************************************/
 001A           ; #pragma interrupt_handler USBRxChar:19
 001A           ; void USBRxChar(void)
 001A           ; {
 001A                   .dbline 32
 001A           ; extern volatile unsigned char IsPlaying;
 001A           ; static unsigned char InChar;
 001A           ; static unsigned char USBCommand[15];
 001A           ; unsigned long Sector;
 001A           ; unsigned char i;
 001A           ; 
 001A           ; if (IsPlaying == TRUE) 
 001A 80910000          lds R24,_IsPlaying
 001E 8130              cpi R24,1
 0020 21F4              brne L5
 0022                   .dbline 33
 0022           ;    {
 0022                   .dbline 34
 0022           ;    InChar = UDR0;
 0022 2CB0              in R2,0xc
 0024 20920000          sts L3,R2
 0028                   .dbline 35
 0028           ;    return;
 0028 58C0              xjmp L2
 002A           L5:
 002A                   .dbline 38
 002A           ;    }
 002A           ;    
 002A           ; InChar = UDR0;
 002A 2CB0              in R2,0xc
 002C 20920000          sts L3,R2
 0030                   .dbline 40
 0030 41E0              ldi R20,1
 0032 0FC0              xjmp L10
 0034           L7:
 0034                   .dbline 40
 0034 80E0              ldi R24,<L4
 0036 90E0              ldi R25,>L4
 0038 E42F              mov R30,R20
 003A FF27              clr R31
 003C E80F              add R30,R24
 003E F91F              adc R31,R25
 0040 2080              ldd R2,z+0
 0042 80E0              ldi R24,<L4-1
 0044 90E0              ldi R25,>L4-1
 0046 E42F              mov R30,R20
 0048 FF27              clr R31
 004A E80F              add R30,R24
 004C F91F              adc R31,R25
 004E 2082              std z+0,R2
 0050           L8:
 0050                   .dbline 40
 0050 4395              inc R20
 0052           L10:
 0052                   .dbline 40
 0052           ; 
 0052           ; for (i=1;i<12;i++) USBCommand[i-1] = USBCommand[i]; // Shift buffer
 0052 4C30              cpi R20,12
 0054 78F3              brlo L7
 0056                   .dbline 41
 0056           ; USBCommand[11] = InChar;
 0056 20900000          lds R2,L3
 005A 20920C00          sts L4+11,R2
 005E                   .dbline 43
 005E           ; 
 005E           ; if (strncmp(&USBCommand[0],"+++R",4) == 0)
 005E 84E0              ldi R24,4
 0060 90E0              ldi R25,0
 0062 9983              std y+1,R25
 0064 8883              std y+0,R24
 0066 20E0              ldi R18,<L15
 0068 30E0              ldi R19,>L15
 006A 00E0              ldi R16,<L4
 006C 10E0              ldi R17,>L4
 006E 0E940000          xcall _strncmp
 0072 0030              cpi R16,0
 0074 0107              cpc R16,R17
 0076 91F4              brne L13
 0078           X0:
 0078                   .dbline 44
 0078           ;    {
 0078                   .dbline 45
 0078           ;    USBCommand[12] = 0x00;
 0078 2224              clr R2
 007A 20920D00          sts L4+12,R2
 007E                   .dbline 46
 007E           ;    Sector = atol(&USBCommand[4]);
 007E 00E0              ldi R16,<L4+4
 0080 10E0              ldi R17,>L4+4
 0082 0E940000          xcall _atol
 0086 FE01              movw R30,R28
 0088 0283              std z+2,R16
 008A 1383              std z+3,R17
 008C 2483              std z+4,R18
 008E 3583              std z+5,R19
 0090                   .dbline 47
 0090           ;    USBReadSector(Sector);
 0090 FE01              movw R30,R28
 0092 0281              ldd R16,z+2
 0094 1381              ldd R17,z+3
 0096 2481              ldd R18,z+4
 0098 3581              ldd R19,z+5
 009A 25D0              xcall _USBReadSector
 009C                   .dbline 48
 009C           ;    }
 009C           L13:
 009C                   .dbline 50
 009C 84E0              ldi R24,4
 009E 90E0              ldi R25,0
 00A0 9983              std y+1,R25
 00A2 8883              std y+0,R24
 00A4 20E0              ldi R18,<L20
 00A6 30E0              ldi R19,>L20
 00A8 00E0              ldi R16,<L4
 00AA 10E0              ldi R17,>L4
 00AC 0E940000          xcall _strncmp
 00B0 0030              cpi R16,0
 00B2 0107              cpc R16,R17
 00B4 91F4              brne L18
 00B6           X1:
 00B6                   .dbline 51
 00B6                   .dbline 52
 00B6 2224              clr R2
 00B8 20920D00          sts L4+12,R2
 00BC                   .dbline 53
 00BC 00E0              ldi R16,<L4+4
 00BE 10E0              ldi R17,>L4+4
 00C0 0E940000          xcall _atol
 00C4 FE01              movw R30,R28
 00C6 0283              std z+2,R16
 00C8 1383              std z+3,R17
 00CA 2483              std z+4,R18
 00CC 3583              std z+5,R19
 00CE                   .dbline 54
 00CE FE01              movw R30,R28
 00D0 0281              ldd R16,z+2
 00D2 1381              ldd R17,z+3
 00D4 2481              ldd R18,z+4
 00D6 3581              ldd R19,z+5
 00D8 37D0              xcall _USBWriteSector
 00DA                   .dbline 55
 00DA           L18:
 00DA                   .dbline -2
 00DA           L2:
 00DA 2696              adiw R28,6
 00DC 0E940000          xcall pop_gset1
 00E0 0E940000          xcall pop_lset
 00E4                   .dbline 0 ; func end
 00E4 1895              reti
 00E6                   .dbsym l Sector 2 l
 00E6                   .dbsym r i 20 c
 00E6                   .dbend
 00E6                   .dbfunc e USBReadSector _USBReadSector fV
 00E6           ;              i -> R20,R21
 00E6           ;         Sector -> y+10
                        .even
 00E6           _USBReadSector::
 00E6 0E940000          xcall push_arg4
 00EA 0E940000          xcall push_gset1
 00EE 2897              sbiw R28,8
 00F0                   .dbline -1
 00F0                   .dbline 61
 00F0           ;    
 00F0           ; if (strncmp(&USBCommand[0],"+++W",4) == 0)
 00F0           ;    {
 00F0           ;    USBCommand[12] = 0x00;
 00F0           ;    Sector = atol(&USBCommand[4]);
 00F0           ;    USBWriteSector(Sector);
 00F0           ;    }   
 00F0           ; }
 00F0           ; 
 00F0           ; /*********************************************************/
 00F0           ; 
 00F0           ; void USBReadSector(unsigned long Sector)
 00F0           ; {
 00F0                   .dbline 65
 00F0           ; unsigned int i;
 00F0           ; extern unsigned char SectorBuffer[512];
 00F0           ; 
 00F0           ; ata_read_sector_byte(0, Sector, 0, 512, (unsigned char*)&SectorBuffer);
 00F0 80E0              ldi R24,<_SectorBuffer
 00F2 90E0              ldi R25,>_SectorBuffer
 00F4 9F83              std y+7,R25
 00F6 8E83              std y+6,R24
 00F8 80E0              ldi R24,512
 00FA 92E0              ldi R25,2
 00FC 9D83              std y+5,R25
 00FE 8C83              std y+4,R24
 0100 2224              clr R2
 0102 3324              clr R3
 0104 3B82              std y+3,R3
 0106 2A82              std y+2,R2
 0108 FE01              movw R30,R28
 010A 2284              ldd R2,z+10
 010C 3384              ldd R3,z+11
 010E 4484              ldd R4,z+12
 0110 5584              ldd R5,z+13
 0112 4882              std y+0,R4
 0114 5982              std y+1,R5
 0116 9101              movw R18,R2
 0118 0027              clr R16
 011A 0E940000          xcall _ata_read_sector_byte
 011E                   .dbline 66

⌨️ 快捷键说明

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