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

📄 main.lis

📁 优盘程序,符合USB1.1规范。硬件平台:ATmega162+PDIUSBD12+K9F5608。软件平台:ICCAVR。协议:Bulk-Only Transport,Reduced block co
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0158           ;   }
 0158 1FC0              xjmp L24
 015A           L23:
 015A                   .dbline 133
 015A                   .dbline 134
 015A 5983              std y+1,R21
 015C 4883              std y+0,R20
 015E 20910800          lds R18,_ControlData+8
 0162 30910900          lds R19,_ControlData+8+1
 0166 01E0              ldi R16,1
 0168 10E0              ldi R17,0
 016A 0E940000          xcall _D12_CWriteEndpoint
 016E                   .dbline 135
 016E 20900800          lds R2,_ControlData+8
 0172 30900900          lds R3,_ControlData+8+1
 0176 40900A00          lds R4,_ControlData+10
 017A 50900B00          lds R5,_ControlData+10+1
 017E 420C              add R4,R2
 0180 531C              adc R5,R3
 0182 50920B00          sts _ControlData+10+1,R5
 0186 40920A00          sts _ControlData+10,R4
 018A                   .dbline 136
 018A F894              cli
 018C                   .dbline 137
 018C 80910000          lds R24,_bEPPflags
 0190 8F79              andi R24,159
 0192 80930000          sts _bEPPflags,R24
 0196                   .dbline 138
 0196 7894              sei
 0198                   .dbline 139
 0198           L24:
 0198                   .dbline -2
 0198                   .dbline 140
 0198           ;   else
 0198           ;   {
 0198           ;      D12_CWriteEndpoint(1,ControlData.wLength,pRomData);
 0198           ;      ControlData.wCount+=ControlData.wLength;
 0198           ;      DISABLE;
 0198           ;      bEPPflags.bits.control_state=USB_IDLE;
 0198           ;      ENABLE;
 0198           ;   }
 0198           ; }
 0198           L16:
 0198 2296              adiw R28,2
 019A 0E940000          xcall pop_gset2
 019E                   .dbline 0 ; func end
 019E 0895              ret
 01A0                   .dbsym r len 22 s
 01A0                   .dbsym r pRomData 20 pkc
 01A0                   .dbend
 01A0                   .dbfunc e control_handler _control_handler fV
 01A0           ;            req -> R20
 01A0           ;           type -> R22
                        .even
 01A0           _control_handler::
 01A0 0E940000          xcall push_gset2
 01A4                   .dbline -1
 01A4                   .dbline 142
 01A4           ; void control_handler()
 01A4           ; {
 01A4                   .dbline 144
 01A4           ;   unsigned char type,req;
 01A4           ;   type=ControlData.DeviceRequest.bmRequestType&USB_REQUEST_TYPE_MASK;
 01A4 60910000          lds R22,_ControlData
 01A8 6076              andi R22,96
 01AA                   .dbline 145
 01AA           ;   req=ControlData.DeviceRequest.bRequest&USB_REQUEST_MASK;
 01AA 40910100          lds R20,_ControlData+1
 01AE 4F70              andi R20,15
 01B0                   .dbline 146
 01B0           ;   if(type==USB_STANDARD_REQUEST)
 01B0 6623              tst R22
 01B2 69F4              brne L33
 01B4                   .dbline 147
 01B4           ;      (*StandardDeviceRequest[req])();
 01B4 82E0              ldi R24,2
 01B6 849F              mul R24,R20
 01B8 F001              movw R30,R0
 01BA 80E0              ldi R24,<_StandardDeviceRequest
 01BC 90E0              ldi R25,>_StandardDeviceRequest
 01BE E80F              add R30,R24
 01C0 F91F              adc R31,R25
 01C2 A081              ldd R26,z+0
 01C4 B181              ldd R27,z+1
 01C6 FD01              movw R30,R26
 01C8 0E940000          xcall xicall
 01CC 10C0              xjmp L34
 01CE           L33:
 01CE                   .dbline 148
 01CE           ;   else if(type==USB_VENDOR_REQUEST)
 01CE 6034              cpi R22,64
 01D0 69F4              brne L35
 01D2                   .dbline 149
 01D2           ;      (*VendorDeviceRequest[req])();
 01D2 82E0              ldi R24,2
 01D4 849F              mul R24,R20
 01D6 F001              movw R30,R0
 01D8 80E0              ldi R24,<_VendorDeviceRequest
 01DA 90E0              ldi R25,>_VendorDeviceRequest
 01DC E80F              add R30,R24
 01DE F91F              adc R31,R25
 01E0 A081              ldd R26,z+0
 01E2 B181              ldd R27,z+1
 01E4 FD01              movw R30,R26
 01E6 0E940000          xcall xicall
 01EA 01C0              xjmp L36
 01EC           L35:
 01EC                   .dbline 150
 01EC           ;   else stall_ep0();
 01EC 50DF              xcall _stall_ep0
 01EE           L36:
 01EE           L34:
 01EE                   .dbline -2
 01EE                   .dbline 151
 01EE           ; }
 01EE           L31:
 01EE 0E940000          xcall pop_gset2
 01F2                   .dbline 0 ; func end
 01F2 0895              ret
 01F4                   .dbsym r req 20 c
 01F4                   .dbsym r type 22 c
 01F4                   .dbend
 01F4                   .dbfunc e main _main fV
                        .even
 01F4           _main::
 01F4                   .dbline -1
 01F4                   .dbline 153
 01F4           ; void main(void)
 01F4           ; {
 01F4                   .dbline 154
 01F4           ;   NOP();NOP();
 01F4 0000              nop
 01F6                   .dbline 154
 01F6 0000              nop
 01F8                   .dbline 155
 01F8           ;   NOP();NOP();
 01F8 0000              nop
 01FA                   .dbline 155
 01FA 0000              nop
 01FC                   .dbline 156
 01FC           ;   DISABLE;
 01FC F894              cli
 01FE                   .dbline 157
 01FE           ;   init_port();
 01FE 00DF              xcall _init_port
 0200                   .dbline 158
 0200           ;   init_serial();
 0200 10DF              xcall _init_serial
 0202                   .dbline 160
 0202           ;  // Format_Fat16Media();
 0202           ;   D12_ReadInterruptRegister();
 0202 0E940000          xcall _D12_ReadInterruptRegister
 0206                   .dbline 161
 0206           ;   D12_ReadLastTransactionStatus(0);
 0206 0027              clr R16
 0208 0E940000          xcall _D12_ReadLastTransactionStatus
 020C                   .dbline 162
 020C           ;   D12_ReadLastTransactionStatus(1);
 020C 01E0              ldi R16,1
 020E 0E940000          xcall _D12_ReadLastTransactionStatus
 0212                   .dbline 163
 0212           ;   D12_ReadLastTransactionStatus(2);
 0212 02E0              ldi R16,2
 0214 0E940000          xcall _D12_ReadLastTransactionStatus
 0218                   .dbline 164
 0218           ;   D12_ReadLastTransactionStatus(3);
 0218 03E0              ldi R16,3
 021A 0E940000          xcall _D12_ReadLastTransactionStatus
 021E                   .dbline 165
 021E           ;   D12_ReadLastTransactionStatus(4);
 021E 04E0              ldi R16,4
 0220 0E940000          xcall _D12_ReadLastTransactionStatus
 0224                   .dbline 166
 0224           ;   D12_ReadLastTransactionStatus(5);
 0224 05E0              ldi R16,5
 0226 0E940000          xcall _D12_ReadLastTransactionStatus
 022A                   .dbline 167
 022A           ;   reconnect_USB();
 022A 1FDF              xcall _reconnect_USB
 022C                   .dbline 168
 022C           ;   ENABLE;
 022C 7894              sei
 022E 25C0              xjmp L39
 0230           L38:
 0230                   .dbline 170
 0230           ;   while(TRUE)    
 0230           ;   {
 0230                   .dbline 171
 0230           ;      if(bEPPflags.bits.bus_reset)
 0230 80910000          lds R24,_bEPPflags
 0234 8170              andi R24,1
 0236 39F0              breq L41
 0238                   .dbline 172
 0238           ;      {
 0238                   .dbline 173
 0238           ;          DISABLE;
 0238 F894              cli
 023A                   .dbline 174
 023A           ;          bEPPflags.bits.bus_reset=0;
 023A 80910000          lds R24,_bEPPflags
 023E 8E7F              andi R24,254
 0240 80930000          sts _bEPPflags,R24
 0244                   .dbline 175
 0244           ;          ENABLE;
 0244 7894              sei
 0246                   .dbline 176
 0246           ;      }
 0246           L41:
 0246                   .dbline 177
 0246           ;      if(bEPPflags.bits.suspend)
 0246 80910000          lds R24,_bEPPflags
 024A 8695              lsr R24
 024C 8170              andi R24,1
 024E 39F0              breq L43
 0250                   .dbline 178
 0250           ;      {
 0250                   .dbline 179
 0250           ;         DISABLE;
 0250 F894              cli
 0252                   .dbline 180
 0252           ;         bEPPflags.bits.suspend=0;
 0252 80910000          lds R24,_bEPPflags
 0256 8D7F              andi R24,253
 0258 80930000          sts _bEPPflags,R24
 025C                   .dbline 181
 025C           ;         ENABLE;
 025C 7894              sei
 025E                   .dbline 182
 025E           ;      }
 025E           L43:
 025E                   .dbline 183
 025E           ;      if(bEPPflags.bits.setup_packet)
 025E 80910000          lds R24,_bEPPflags
 0262 8695              lsr R24
 0264 8695              lsr R24
 0266 8170              andi R24,1
 0268 41F0              breq L45
 026A                   .dbline 184
 026A           ;      {
 026A                   .dbline 185
 026A           ;         DISABLE;
 026A F894              cli
 026C                   .dbline 186
 026C           ;         bEPPflags.bits.setup_packet=0;
 026C 80910000          lds R24,_bEPPflags
 0270 8B7F              andi R24,251
 0272 80930000          sts _bEPPflags,R24
 0276                   .dbline 187
 0276           ;         ENABLE;
 0276 7894              sei
 0278                   .dbline 188
 0278           ;         control_handler();
 0278 93DF              xcall _control_handler
 027A                   .dbline 189
 027A           ;      }        
 027A           L45:
 027A                   .dbline 190
 027A           L39:
 027A                   .dbline 169
 027A DACF              xjmp L38
 027C           X0:
 027C                   .dbline -2
 027C                   .dbline 191
 027C           ;   }   
 027C           ; }
 027C           L37:
 027C                   .dbline 0 ; func end
 027C 0895              ret
 027E                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\USB资料\优盘5.0\MAIN.C
 0000           _ControlData::
 0000                   .blkb 24
 0018                   .dbsym e ControlData _ControlData X
                        .area func_lit
 0000 0000      PL_set_interface:       .word `_set_interface
 0002 0000      PL_get_interface:       .word `_get_interface
 0004 0000      PL_set_configuration:   .word `_set_configuration
 0006 0000      PL_get_configuration:   .word `_get_configuration
 0008 0000      PL_get_descriptor:      .word `_get_descriptor
 000A 0000      PL_set_address: .word `_set_address
 000C 0000      PL_set_feature: .word `_set_feature
 000E 0000      PL_reserved:    .word `_reserved
 0010 0000      PL_clear_feature:       .word `_clear_feature
 0012 0000      PL_get_status:  .word `_get_status

⌨️ 快捷键说明

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