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

📄 main.lis

📁 优盘程序,符合USB1.1规范。硬件平台:ATmega162+PDIUSBD12+K9F5608。软件平台:ICCAVR。协议:Bulk-Only Transport,Reduced block co
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0034                   .dbline -1
 0034                   .dbline 75
 0034           ; void disconnect_USB(void)
 0034           ; {
 0034                   .dbline 76
 0034           ;   D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING,D12_SETTOONE|D12_CLOCK_8M);
 0034 25E4              ldi R18,69
 0036 06E0              ldi R16,6
 0038                   .dbline -2
 0038                   .dbline 77
 0038           ; }
 0038           L3:
 0038                   .dbline 0 ; func end
 0038 0C940000          xjmp _D12_SetMode
 003C                   .dbend
 003C                   .dbfunc e connect_USB _connect_USB fV
                        .even
 003C           _connect_USB::
 003C                   .dbline -1
 003C                   .dbline 79
 003C           ; void connect_USB(void)
 003C           ; {
 003C                   .dbline 80
 003C           ;   DISABLE;
 003C F894              cli
 003E                   .dbline 81
 003E           ;   bEPPflags.value=0;
 003E 2224              clr R2
 0040 3324              clr R3
 0042 30920100          sts _bEPPflags+1,R3
 0046 20920000          sts _bEPPflags,R2
 004A                   .dbline 82
 004A           ;   ENABLE;
 004A 7894              sei
 004C                   .dbline 83
 004C           ;   D12_SetEndpointStatus(4,0);
 004C 2227              clr R18
 004E 04E0              ldi R16,4
 0050 0E940000          xcall _D12_SetEndpointStatus
 0054                   .dbline 84
 0054           ;   D12_SetEndpointStatus(5,0);
 0054 2227              clr R18
 0056 05E0              ldi R16,5
 0058 0E940000          xcall _D12_SetEndpointStatus
 005C                   .dbline 85
 005C           ;   D12_SetDMA(0);
 005C 0027              clr R16
 005E 0E940000          xcall _D12_SetDMA
 0062                   .dbline 86
 0062           ;   D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING|D12_SOFTCONNECT,D12_SETTOONE|D12_CLOCK_8M);
 0062 25E4              ldi R18,69
 0064 06E1              ldi R16,22
 0066                   .dbline -2
 0066                   .dbline 87
 0066           ; }
 0066           L4:
 0066                   .dbline 0 ; func end
 0066 0C940000          xjmp _D12_SetMode
 006A                   .dbend
 006A                   .dbfunc e reconnect_USB _reconnect_USB fV
 006A           ;              i -> R20,R21
                        .even
 006A           _reconnect_USB::
 006A 0E940000          xcall push_gset1
 006E                   .dbline -1
 006E                   .dbline 89
 006E           ; void reconnect_USB(void)
 006E           ; {
 006E                   .dbline 91
 006E           ;   unsigned int i;
 006E           ;   disconnect_USB();
 006E E2DF              xcall _disconnect_USB
 0070                   .dbline 92
 0070           ;   ENABLE;
 0070 7894              sei
 0072                   .dbline 93
 0072 4427              clr R20
 0074 5527              clr R21
 0076 02C0              xjmp L9
 0078           L6:
 0078                   .dbline 93
 0078           L7:
 0078                   .dbline 93
 0078 4F5F              subi R20,255  ; offset = 1
 007A 5F4F              sbci R21,255
 007C           L9:
 007C                   .dbline 93
 007C           ;   for(i=0;i<50000;i++);
 007C 4035              cpi R20,80
 007E E3EC              ldi R30,195
 0080 5E07              cpc R21,R30
 0082 D0F3              brlo L6
 0084                   .dbline 94
 0084           ;   DISABLE;
 0084 F894              cli
 0086                   .dbline 95
 0086           ;   connect_USB(); 
 0086 DADF              xcall _connect_USB
 0088                   .dbline -2
 0088                   .dbline 96
 0088           ; }
 0088           L5:
 0088 0E940000          xcall pop_gset1
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbsym r i 20 i
 008E                   .dbend
 008E                   .dbfunc e stall_ep0 _stall_ep0 fV
                        .even
 008E           _stall_ep0::
 008E                   .dbline -1
 008E                   .dbline 98
 008E           ; void stall_ep0()
 008E           ; {
 008E                   .dbline 99
 008E           ;   D12_SetEndpointStatus(0,1);
 008E 21E0              ldi R18,1
 0090 0027              clr R16
 0092 0E940000          xcall _D12_SetEndpointStatus
 0096                   .dbline 100
 0096           ;   D12_SetEndpointStatus(1,1);
 0096 21E0              ldi R18,1
 0098 01E0              ldi R16,1
 009A                   .dbline -2
 009A                   .dbline 101
 009A           ; }
 009A           L10:
 009A                   .dbline 0 ; func end
 009A 0C940000          xjmp _D12_SetEndpointStatus
 009E                   .dbend
 009E                   .dbfunc e init_unconfig _init_unconfig fV
                        .even
 009E           _init_unconfig::
 009E                   .dbline -1
 009E                   .dbline 103
 009E           ; void init_unconfig(void)
 009E           ; {
 009E                   .dbline 104
 009E           ;   D12_SetEndpointEnable(0);
 009E 0027              clr R16
 00A0                   .dbline -2
 00A0                   .dbline 105
 00A0           ; }
 00A0           L11:
 00A0                   .dbline 0 ; func end
 00A0 0C940000          xjmp _D12_SetEndpointEnable
 00A4                   .dbend
 00A4                   .dbfunc e init_config _init_config fV
                        .even
 00A4           _init_config::
 00A4                   .dbline -1
 00A4                   .dbline 107
 00A4           ; void init_config(void)
 00A4           ; {
 00A4                   .dbline 108
 00A4           ;   D12_SetEndpointEnable(1);
 00A4 01E0              ldi R16,1
 00A6                   .dbline -2
 00A6                   .dbline 109
 00A6           ; }
 00A6           L12:
 00A6                   .dbline 0 ; func end
 00A6 0C940000          xjmp _D12_SetEndpointEnable
 00AA                   .dbend
 00AA                   .dbfunc e single_transmit _single_transmit fV
 00AA           ;            len -> R20
 00AA           ;            buf -> R22,R23
                        .even
 00AA           _single_transmit::
 00AA 0E940000          xcall push_gset2
 00AE 422F              mov R20,R18
 00B0 B801              movw R22,R16
 00B2 2297              sbiw R28,2
 00B4                   .dbline -1
 00B4                   .dbline 111
 00B4                   .dbline 112
 00B4 80E1              ldi R24,16
 00B6 8417              cp R24,R20
 00B8 30F0              brlo L14
 00BA                   .dbline 113
 00BA                   .dbline 114
 00BA 7983              std y+1,R23
 00BC 6883              std y+0,R22
 00BE 242F              mov R18,R20
 00C0 01E0              ldi R16,1
 00C2 0E940000          xcall _D12_WriteEndpoint
 00C6                   .dbline 115
 00C6           L14:
 00C6                   .dbline -2
 00C6                   .dbline 116
 00C6           ; void single_transmit(unsigned char * buf,unsigned char len)
 00C6           ; {
 00C6           ;   if(len<=EP0_PACKET_SIZE)
 00C6           ;   {
 00C6           ;      D12_WriteEndpoint(1,len,buf);
 00C6           ;   }
 00C6           ; }
 00C6           L13:
 00C6 2296              adiw R28,2
 00C8 0E940000          xcall pop_gset2
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbsym r len 20 c
 00CE                   .dbsym r buf 22 pc
 00CE                   .dbend
 00CE                   .dbfunc e code_transmit _code_transmit fV
 00CE           ;            len -> R22,R23
 00CE           ;       pRomData -> R20,R21
                        .even
 00CE           _code_transmit::
 00CE 0E940000          xcall push_gset2
 00D2 B901              movw R22,R18
 00D4 A801              movw R20,R16
 00D6 2297              sbiw R28,2
 00D8                   .dbline -1
 00D8                   .dbline 118
 00D8           ; void code_transmit(const unsigned char * pRomData,unsigned short len)
 00D8           ; {
 00D8                   .dbline 119
 00D8           ;   ControlData.wCount=0;
 00D8 2224              clr R2
 00DA 3324              clr R3
 00DC 30920B00          sts _ControlData+10+1,R3
 00E0 20920A00          sts _ControlData+10,R2
 00E4                   .dbline 120
 00E4           ;   if(ControlData.wLength>len)
 00E4 20900800          lds R2,_ControlData+8
 00E8 30900900          lds R3,_ControlData+8+1
 00EC 6215              cp R22,R2
 00EE 7305              cpc R23,R3
 00F0 20F4              brsh L18
 00F2                   .dbline 121
 00F2           ;      ControlData.wLength=len;
 00F2 70930900          sts _ControlData+8+1,R23
 00F6 60930800          sts _ControlData+8,R22
 00FA           L18:
 00FA                   .dbline 122
 00FA           ;   ControlData.pCData=pRomData;  
 00FA 50930F00          sts _ControlData+14+1,R21
 00FE 40930E00          sts _ControlData+14,R20
 0102                   .dbline 123
 0102           ;   if(ControlData.wLength>=EP0_PACKET_SIZE)
 0102 80910800          lds R24,_ControlData+8
 0106 90910900          lds R25,_ControlData+8+1
 010A 8031              cpi R24,16
 010C E0E0              ldi R30,0
 010E 9E07              cpc R25,R30
 0110 20F1              brlo L23
 0112                   .dbline 124
 0112           ;   {
 0112                   .dbline 125
 0112           ;      bEPPflags.bits.rom_state=1;
 0112 80910000          lds R24,_bEPPflags
 0116 90910100          lds R25,_bEPPflags+1
 011A 9860              ori R25,8
 011C 90930100          sts _bEPPflags+1,R25
 0120 80930000          sts _bEPPflags,R24
 0124                   .dbline 126
 0124           ;      D12_CWriteEndpoint(1,EP0_PACKET_SIZE,ControlData.pCData);
 0124 1A01              movw R2,R20
 0126 3982              std y+1,R3
 0128 2882              std y+0,R2
 012A 20E1              ldi R18,16
 012C 30E0              ldi R19,0
 012E 01E0              ldi R16,1
 0130 10E0              ldi R17,0
 0132 0E940000          xcall _D12_CWriteEndpoint
 0136                   .dbline 127
 0136           ;      ControlData.wCount+=EP0_PACKET_SIZE;
 0136 80910A00          lds R24,_ControlData+10
 013A 90910B00          lds R25,_ControlData+10+1
 013E 4096              adiw R24,16
 0140 90930B00          sts _ControlData+10+1,R25
 0144 80930A00          sts _ControlData+10,R24
 0148                   .dbline 128
 0148           ;      DISABLE;
 0148 F894              cli
 014A                   .dbline 129
 014A           ;      bEPPflags.bits.control_state=USB_TRANSMIT;
 014A 80910000          lds R24,_bEPPflags
 014E 8F79              andi R24,159
 0150 8062              ori R24,32
 0152 80930000          sts _bEPPflags,R24
 0156                   .dbline 130
 0156           ;      ENABLE;
 0156 7894              sei
 0158                   .dbline 131

⌨️ 快捷键说明

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