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

📄 chap9.lis

📁 Atmeag162-k9f5608-pdiusbd12-u usb接口 u盘源码 包括fat文件源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01C8                   .dbline 0 ; func end
 01C8 0895              ret
 01CA                   .dbsym r endp 20 c
 01CA                   .dbsym r bRecipient 20 c
 01CA                   .dbend
 01CA                   .dbfunc e set_address _set_address fV
                        .even
 01CA           _set_address::
 01CA                   .dbline -1
 01CA                   .dbline 191
 01CA           ; void set_address(void)
 01CA           ; {
 01CA                   .dbline 192
 01CA           ;   D12_SetAddressEnable((unsigned char)(ControlData.DeviceRequest.wValue&DEVICE_ADDRESS_MASK),1);
 01CA 21E0              ldi R18,1
 01CC 00910200          lds R16,_ControlData+2
 01D0 0F77              andi R16,127
 01D2 1070              andi R17,0
 01D4 0E940000          xcall _D12_SetAddressEnable
 01D8                   .dbline 193
 01D8           ;   single_transmit(0,0);
 01D8 2227              clr R18
 01DA 0027              clr R16
 01DC 1127              clr R17
 01DE                   .dbline -2
 01DE                   .dbline 194
 01DE           ; }
 01DE           L42:
 01DE                   .dbline 0 ; func end
 01DE 0C940000          xjmp _single_transmit
 01E2                   .dbend
 01E2                   .dbfunc e get_descriptor _get_descriptor fV
 01E2           ;    bDescriptor -> R20
                        .even
 01E2           _get_descriptor::
 01E2 0E940000          xcall push_gset1
 01E6                   .dbline -1
 01E6                   .dbline 196
 01E6           ; void get_descriptor(void)
 01E6           ; {
 01E6                   .dbline 197
 01E6           ;   unsigned char bDescriptor=MSB(ControlData.DeviceRequest.wValue);
 01E6 40910200          lds R20,_ControlData+2
 01EA 50910300          lds R21,_ControlData+2+1
 01EE 452F              mov R20,R21
 01F0 5527              clr R21
 01F2 5070              andi R21,0
 01F4                   .dbline 198
 01F4           ;   if(bDescriptor==USB_DEVICE_DESCRIPTOR_TYPE)
 01F4 4130              cpi R20,1
 01F6 39F4              brne L46
 01F8                   .dbline 199
 01F8           ;   {
 01F8                   .dbline 200
 01F8           ;      code_transmit((unsigned char*)&DeviceDescr,sizeof(USB_DEVICE_DESCRIPTOR));
 01F8 22E1              ldi R18,18
 01FA 30E0              ldi R19,0
 01FC 00E0              ldi R16,<_DeviceDescr
 01FE 10E0              ldi R17,>_DeviceDescr
 0200 0E940000          xcall _code_transmit
 0204                   .dbline 201
 0204           ;   }
 0204 0BC0              xjmp L47
 0206           L46:
 0206                   .dbline 202
 0206           ;   else if(bDescriptor==USB_CONFIGURATION_DESCRIPTOR_TYPE)
 0206 4230              cpi R20,2
 0208 39F4              brne L48
 020A                   .dbline 203
 020A           ;   {
 020A                   .dbline 204
 020A           ;      code_transmit((unsigned char *)&ConfigDescr,CONFIG_DESCRIPTOR_LENGTH);
 020A 2EE2              ldi R18,46
 020C 30E0              ldi R19,0
 020E 00E0              ldi R16,<_ConfigDescr
 0210 10E0              ldi R17,>_ConfigDescr
 0212 0E940000          xcall _code_transmit
 0216                   .dbline 205
 0216           ;   }
 0216 02C0              xjmp L49
 0218           L48:
 0218                   .dbline 206
 0218           ;   else  stall_ep0();
 0218 0E940000          xcall _stall_ep0
 021C           L49:
 021C           L47:
 021C                   .dbline -2
 021C                   .dbline 207
 021C           ; }
 021C           L44:
 021C 0E940000          xcall pop_gset1
 0220                   .dbline 0 ; func end
 0220 0895              ret
 0222                   .dbsym r bDescriptor 20 c
 0222                   .dbend
 0222                   .dbfunc e get_configuration _get_configuration fV
 0222           ;              c -> y+0
                        .even
 0222           _get_configuration::
 0222 2197              sbiw R28,1
 0224                   .dbline -1
 0224                   .dbline 209
 0224           ; void get_configuration(void)
 0224           ; {
 0224                   .dbline 210
 0224           ;   unsigned char c=bEPPflags.bits.configuration;
 0224 80910000          lds R24,_bEPPflags
 0228 8695              lsr R24
 022A 8695              lsr R24
 022C 8695              lsr R24
 022E 8695              lsr R24
 0230 8695              lsr R24
 0232 8695              lsr R24
 0234 8695              lsr R24
 0236 8170              andi R24,1
 0238 8883              std y+0,R24
 023A                   .dbline 211
 023A           ;   single_transmit(&c,1);
 023A 21E0              ldi R18,1
 023C 8E01              movw R16,R28
 023E 0E940000          xcall _single_transmit
 0242                   .dbline -2
 0242                   .dbline 212
 0242           ; }
 0242           L50:
 0242 2196              adiw R28,1
 0244                   .dbline 0 ; func end
 0244 0895              ret
 0246                   .dbsym l c 0 c
 0246                   .dbend
 0246                   .dbfunc e set_configuration _set_configuration fV
                        .even
 0246           _set_configuration::
 0246                   .dbline -1
 0246                   .dbline 214
 0246           ; void set_configuration(void)
 0246           ; {
 0246                   .dbline 215
 0246           ;   if(ControlData.DeviceRequest.wValue==0)
 0246 20900200          lds R2,_ControlData+2
 024A 30900300          lds R3,_ControlData+2+1
 024E 2220              tst R2
 0250 89F4              brne L52
 0252 3320              tst R3
 0254 79F4              brne L52
 0256           X2:
 0256                   .dbline 216
 0256           ;   {
 0256                   .dbline 217
 0256           ;      single_transmit(0,0);
 0256 2227              clr R18
 0258 0027              clr R16
 025A 1127              clr R17
 025C 0E940000          xcall _single_transmit
 0260                   .dbline 218
 0260           ;      DISABLE;
 0260 F894              cli
 0262                   .dbline 219
 0262           ;      bEPPflags.bits.configuration=0;
 0262 80910000          lds R24,_bEPPflags
 0266 8F77              andi R24,127
 0268 80930000          sts _bEPPflags,R24
 026C                   .dbline 220
 026C           ;      ENABLE;
 026C 7894              sei
 026E                   .dbline 221
 026E           ;      init_unconfig();
 026E 0E940000          xcall _init_unconfig
 0272                   .dbline 222
 0272           ;   }
 0272 1BC0              xjmp L53
 0274           L52:
 0274                   .dbline 223
 0274           ;   else if(ControlData.DeviceRequest.wValue==1)
 0274 80910200          lds R24,_ControlData+2
 0278 90910300          lds R25,_ControlData+2+1
 027C 8130              cpi R24,1
 027E E0E0              ldi R30,0
 0280 9E07              cpc R25,R30
 0282 89F4              brne L55
 0284                   .dbline 224
 0284           ;   {
 0284                   .dbline 225
 0284           ;      single_transmit(0,0);
 0284 2227              clr R18
 0286 0027              clr R16
 0288 1127              clr R17
 028A 0E940000          xcall _single_transmit
 028E                   .dbline 226
 028E           ;      init_unconfig();
 028E 0E940000          xcall _init_unconfig
 0292                   .dbline 227
 0292           ;      init_config();
 0292 0E940000          xcall _init_config
 0296                   .dbline 228
 0296           ;      DISABLE;
 0296 F894              cli
 0298                   .dbline 229
 0298           ;      bEPPflags.bits.configuration=1;
 0298 80910000          lds R24,_bEPPflags
 029C 8068              ori R24,128
 029E 80930000          sts _bEPPflags,R24
 02A2                   .dbline 230
 02A2           ;      ENABLE;
 02A2 7894              sei
 02A4                   .dbline 231
 02A4           ;   }
 02A4 02C0              xjmp L56
 02A6           L55:
 02A6                   .dbline 232
 02A6           ;   else stall_ep0();
 02A6 0E940000          xcall _stall_ep0
 02AA           L56:
 02AA           L53:
 02AA                   .dbline -2
 02AA                   .dbline 233
 02AA           ; }
 02AA           L51:
 02AA                   .dbline 0 ; func end
 02AA 0895              ret
 02AC                   .dbend
 02AC                   .dbfunc e get_interface _get_interface fV
 02AC           ;          txdat -> y+0
                        .even
 02AC           _get_interface::
 02AC 2197              sbiw R28,1
 02AE                   .dbline -1
 02AE                   .dbline 235
 02AE           ; void get_interface(void)
 02AE           ; {
 02AE                   .dbline 236
 02AE           ;   unsigned char txdat=0;
 02AE 2224              clr R2
 02B0 2882              std y+0,R2
 02B2                   .dbline 237
 02B2           ;   single_transmit(&txdat,1);
 02B2 21E0              ldi R18,1
 02B4 8E01              movw R16,R28
 02B6 0E940000          xcall _single_transmit
 02BA                   .dbline -2
 02BA                   .dbline 238
 02BA           ; }
 02BA           L58:
 02BA 2196              adiw R28,1
 02BC                   .dbline 0 ; func end
 02BC 0895              ret
 02BE                   .dbsym l txdat 0 c
 02BE                   .dbend
 02BE                   .dbfunc e set_interface _set_interface fV
                        .even
 02BE           _set_interface::
 02BE                   .dbline -1
 02BE                   .dbline 240
 02BE           ; void set_interface(void)
 02BE           ; {
 02BE                   .dbline 241
 02BE           ;    if(ControlData.DeviceRequest.wValue==0&&ControlData.DeviceRequest.wIndex==0)
 02BE 20900200          lds R2,_ControlData+2
 02C2 30900300          lds R3,_ControlData+2+1
 02C6 2220              tst R2
 02C8 81F4              brne L60
 02CA 3320              tst R3
 02CC 71F4              brne L60
 02CE           X3:
 02CE 20900400          lds R2,_ControlData+4
 02D2 30900500          lds R3,_ControlData+4+1
 02D6 2220              tst R2
 02D8 41F4              brne L60
 02DA 3320              tst R3
 02DC 31F4              brne L60
 02DE           X4:
 02DE                   .dbline 242
 02DE           ;       single_transmit(0,0);
 02DE 2227              clr R18
 02E0 0027              clr R16
 02E2 1127              clr R17
 02E4 0E940000          xcall _single_transmit
 02E8 02C0              xjmp L61
 02EA           L60:
 02EA                   .dbline 243
 02EA 0E940000          xcall _stall_ep0
 02EE           L61:
 02EE                   .dbline -2
 02EE                   .dbline 244
 02EE           ;    else stall_ep0();
 02EE           ; }
 02EE           L59:
 02EE                   .dbline 0 ; func end
 02EE 0895              ret
 02F0                   .dbend

⌨️ 快捷键说明

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