📄 main.lis
字号:
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 + -