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

📄 chap9.lis

📁 Atmeag162-k9f5608-pdiusbd12-u usb接口 u盘源码 包括fat文件源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 006A 002D              mov R16,R0
 006C 0F5F              subi R16,255    ; addi 1
 006E 0E940000          xcall _D12_SelectEndpoint
 0072 402F              mov R20,R16
 0074 06C0              xjmp L15
 0076           L14:
 0076                   .dbline 132
 0076           ;     else
 0076           ;        c=D12_SelectEndpoint(endp*2);
 0076 82E0              ldi R24,2
 0078 869F              mul R24,R22
 007A 002D              mov R16,R0
 007C 0E940000          xcall _D12_SelectEndpoint
 0080 402F              mov R20,R16
 0082           L15:
 0082                   .dbline 133
 0082           ;     if(c&D12_STALL)
 0082 41FF              sbrs R20,1
 0084 03C0              rjmp L17
 0086                   .dbline 134
 0086           ;        txdat[0]=1;
 0086 81E0              ldi R24,1
 0088 8883              std y+0,R24
 008A 02C0              xjmp L18
 008C           L17:
 008C                   .dbline 136
 008C           ;     else
 008C           ;        txdat[0]=0;
 008C 2224              clr R2
 008E 2882              std y+0,R2
 0090           L18:
 0090                   .dbline 137
 0090           ;     txdat[1]=0;
 0090 2224              clr R2
 0092 2982              std y+1,R2
 0094                   .dbline 138
 0094           ;     single_transmit(txdat,2);
 0094 22E0              ldi R18,2
 0096 8E01              movw R16,R28
 0098 0E940000          xcall _single_transmit
 009C                   .dbline 139
 009C           ;    }
 009C 02C0              xjmp L12
 009E           L11:
 009E                   .dbline 140
 009E           ;   else  stall_ep0();
 009E 0E940000          xcall _stall_ep0
 00A2           L12:
 00A2           L9:
 00A2           L4:
 00A2                   .dbline -2
 00A2                   .dbline 141
 00A2           ; }
 00A2           L2:
 00A2 2296              adiw R28,2
 00A4 0E940000          xcall pop_gset2
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbsym r c 20 c
 00AA                   .dbsym r endp 22 c
 00AA                   .dbsym l txdat 0 A[2:2]c
 00AA                   .dbsym r bRecipient 20 c
 00AA                   .dbend
 00AA                   .dbfunc e clear_feature _clear_feature fV
 00AA           ;           endp -> R20
 00AA           ;     bRecipient -> R20
                        .even
 00AA           _clear_feature::
 00AA 0E940000          xcall push_gset1
 00AE                   .dbline -1
 00AE                   .dbline 143
 00AE           ; void clear_feature(void)
 00AE           ; {
 00AE                   .dbline 145
 00AE           ;   unsigned char endp;
 00AE           ;   unsigned char bRecipient=ControlData.DeviceRequest.bmRequestType&USB_RECIPIENT;
 00AE 40910000          lds R20,_ControlData
 00B2 4F71              andi R20,31
 00B4                   .dbline 146
 00B4           ;   if(bRecipient==USB_RECIPIENT_DEVICE
 00B4 A9F4              brne L21
 00B6 80910200          lds R24,_ControlData+2
 00BA 90910300          lds R25,_ControlData+2+1
 00BE 8130              cpi R24,1
 00C0 E0E0              ldi R30,0
 00C2 9E07              cpc R25,R30
 00C4 69F4              brne L21
 00C6                   .dbline 148
 00C6           ;         &&ControlData.DeviceRequest.wValue==USB_FEATURE_REMOTE_WAKEUP)
 00C6           ;   {
 00C6                   .dbline 149
 00C6           ;      DISABLE;
 00C6 F894              cli
 00C8                   .dbline 150
 00C8           ;      bEPPflags.bits.remote_wakeup=0;
 00C8 80910000          lds R24,_bEPPflags
 00CC 877F              andi R24,247
 00CE 80930000          sts _bEPPflags,R24
 00D2                   .dbline 151
 00D2           ;      ENABLE;
 00D2 7894              sei
 00D4                   .dbline 152
 00D4           ;      single_transmit(0,0);
 00D4 2227              clr R18
 00D6 0027              clr R16
 00D8 1127              clr R17
 00DA 0E940000          xcall _single_transmit
 00DE                   .dbline 153
 00DE           ;   }
 00DE 2AC0              xjmp L22
 00E0           L21:
 00E0                   .dbline 154
 00E0           ;   else if(bRecipient==USB_RECIPIENT_ENDPOINT
 00E0 4230              cpi R20,2
 00E2 31F5              brne L24
 00E4 20900200          lds R2,_ControlData+2
 00E8 30900300          lds R3,_ControlData+2+1
 00EC 2220              tst R2
 00EE 01F5              brne L24
 00F0 3320              tst R3
 00F2 F1F4              brne L24
 00F4           X0:
 00F4                   .dbline 156
 00F4           ;        &&ControlData.DeviceRequest.wValue==USB_FEATURE_ENDPOINT_STALL)
 00F4           ;   {
 00F4                   .dbline 157
 00F4           ;         endp=(unsigned char)(ControlData.DeviceRequest.wIndex&MAX_ENDPOINTS);
 00F4 40910400          lds R20,_ControlData+4
 00F8 4370              andi R20,3
 00FA 5070              andi R21,0
 00FC                   .dbline 158
 00FC           ;         if(ControlData.DeviceRequest.wIndex&(unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 00FC 20900400          lds R2,_ControlData+4
 0100 30900500          lds R3,_ControlData+4+1
 0104 27FE              sbrs R2,7
 0106 08C0              rjmp L28
 0108                   .dbline 159
 0108           ;             D12_SetEndpointStatus(endp*2+1,0);
 0108 2227              clr R18
 010A 82E0              ldi R24,2
 010C 849F              mul R24,R20
 010E 002D              mov R16,R0
 0110 0F5F              subi R16,255    ; addi 1
 0112 0E940000          xcall _D12_SetEndpointStatus
 0116 06C0              xjmp L29
 0118           L28:
 0118                   .dbline 161
 0118           ;         else
 0118           ;             D12_SetEndpointStatus(endp*2,0);
 0118 2227              clr R18
 011A 82E0              ldi R24,2
 011C 849F              mul R24,R20
 011E 002D              mov R16,R0
 0120 0E940000          xcall _D12_SetEndpointStatus
 0124           L29:
 0124                   .dbline 162
 0124           ;         single_transmit(0,0);
 0124 2227              clr R18
 0126 0027              clr R16
 0128 1127              clr R17
 012A 0E940000          xcall _single_transmit
 012E                   .dbline 163
 012E           ;   }
 012E 02C0              xjmp L25
 0130           L24:
 0130                   .dbline 164
 0130           ;   else  stall_ep0();
 0130 0E940000          xcall _stall_ep0
 0134           L25:
 0134           L22:
 0134                   .dbline -2
 0134                   .dbline 165
 0134           ; }
 0134           L20:
 0134 0E940000          xcall pop_gset1
 0138                   .dbline 0 ; func end
 0138 0895              ret
 013A                   .dbsym r endp 20 c
 013A                   .dbsym r bRecipient 20 c
 013A                   .dbend
 013A                   .dbfunc e set_feature _set_feature fV
 013A           ;           endp -> R20
 013A           ;     bRecipient -> R20
                        .even
 013A           _set_feature::
 013A 0E940000          xcall push_gset1
 013E                   .dbline -1
 013E                   .dbline 167
 013E           ; void set_feature(void)
 013E           ; {
 013E                   .dbline 169
 013E           ;   unsigned char endp;
 013E           ;   unsigned char bRecipient=ControlData.DeviceRequest.bmRequestType&USB_RECIPIENT;
 013E 40910000          lds R20,_ControlData
 0142 4F71              andi R20,31
 0144                   .dbline 170
 0144           ;   if(bRecipient==USB_RECIPIENT_DEVICE
 0144 A9F4              brne L32
 0146 80910200          lds R24,_ControlData+2
 014A 90910300          lds R25,_ControlData+2+1
 014E 8130              cpi R24,1
 0150 E0E0              ldi R30,0
 0152 9E07              cpc R25,R30
 0154 69F4              brne L32
 0156                   .dbline 172
 0156           ;         &&ControlData.DeviceRequest.wValue==USB_FEATURE_REMOTE_WAKEUP)
 0156           ;   {
 0156                   .dbline 173
 0156           ;      DISABLE;
 0156 F894              cli
 0158                   .dbline 174
 0158           ;      bEPPflags.bits.remote_wakeup=1;
 0158 80910000          lds R24,_bEPPflags
 015C 8860              ori R24,8
 015E 80930000          sts _bEPPflags,R24
 0162                   .dbline 175
 0162           ;      ENABLE;
 0162 7894              sei
 0164                   .dbline 176
 0164           ;      single_transmit(0,0);
 0164 2227              clr R18
 0166 0027              clr R16
 0168 1127              clr R17
 016A 0E940000          xcall _single_transmit
 016E                   .dbline 177
 016E           ;   }
 016E 2AC0              xjmp L33
 0170           L32:
 0170                   .dbline 178
 0170           ;   else if(bRecipient==USB_RECIPIENT_ENDPOINT
 0170 4230              cpi R20,2
 0172 31F5              brne L35
 0174 20900200          lds R2,_ControlData+2
 0178 30900300          lds R3,_ControlData+2+1
 017C 2220              tst R2
 017E 01F5              brne L35
 0180 3320              tst R3
 0182 F1F4              brne L35
 0184           X1:
 0184                   .dbline 180
 0184           ;        &&ControlData.DeviceRequest.wValue==USB_FEATURE_ENDPOINT_STALL)
 0184           ;   {
 0184                   .dbline 181
 0184           ;         endp=(unsigned char)(ControlData.DeviceRequest.wIndex&MAX_ENDPOINTS);
 0184 40910400          lds R20,_ControlData+4
 0188 4370              andi R20,3
 018A 5070              andi R21,0
 018C                   .dbline 182
 018C           ;         if(ControlData.DeviceRequest.wIndex&(unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 018C 20900400          lds R2,_ControlData+4
 0190 30900500          lds R3,_ControlData+4+1
 0194 27FE              sbrs R2,7
 0196 08C0              rjmp L39
 0198                   .dbline 183
 0198           ;             D12_SetEndpointStatus(endp*2+1,1);
 0198 21E0              ldi R18,1
 019A 82E0              ldi R24,2
 019C 849F              mul R24,R20
 019E 002D              mov R16,R0
 01A0 0F5F              subi R16,255    ; addi 1
 01A2 0E940000          xcall _D12_SetEndpointStatus
 01A6 06C0              xjmp L40
 01A8           L39:
 01A8                   .dbline 185
 01A8           ;         else
 01A8           ;             D12_SetEndpointStatus(endp*2,1);
 01A8 21E0              ldi R18,1
 01AA 82E0              ldi R24,2
 01AC 849F              mul R24,R20
 01AE 002D              mov R16,R0
 01B0 0E940000          xcall _D12_SetEndpointStatus
 01B4           L40:
 01B4                   .dbline 186
 01B4           ;         single_transmit(0,0);
 01B4 2227              clr R18
 01B6 0027              clr R16
 01B8 1127              clr R17
 01BA 0E940000          xcall _single_transmit
 01BE                   .dbline 187
 01BE           ;   }
 01BE 02C0              xjmp L36
 01C0           L35:
 01C0                   .dbline 188
 01C0           ;   else  stall_ep0();
 01C0 0E940000          xcall _stall_ep0
 01C4           L36:
 01C4           L33:
 01C4                   .dbline -2
 01C4                   .dbline 189
 01C4           ; }
 01C4           L31:
 01C4 0E940000          xcall pop_gset1

⌨️ 快捷键说明

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