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

📄 chap9.lis

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

⌨️ 快捷键说明

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