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

📄 chap9.lis

📁 基于D12
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0044                   .dbline 123
 0044           ;     txdat[1]=0;
 0044 2982              std y+1,R2
 0046                   .dbline 124
 0046           ;     single_transmit(txdat,2);
 0046 22E0              ldi R18,2
 0048 8E01              movw R16,R28
 004A 0E940000          xcall _single_transmit
 004E                   .dbline 125
 004E           ;   }
 004E 2AC0              xjmp L9
 0050           L8:
 0050                   .dbline 126
 0050           ;   else if(bRecipient==USB_RECIPIENT_ENDPOINT)
 0050 4230              cpi R20,2
 0052 31F5              brne L11
 0054                   .dbline 127
 0054           ;   {
 0054                   .dbline 128
 0054           ;     endp=(unsigned char)(ControlData.DeviceRequest.wIndex&MAX_ENDPOINTS);
 0054 60910400          lds R22,_ControlData+4
 0058 6370              andi R22,3
 005A 7070              andi R23,0
 005C                   .dbline 129
 005C           ;     if(ControlData.DeviceRequest.wIndex&(unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 005C 20900400          lds R2,_ControlData+4
 0060 30900500          lds R3,_ControlData+4+1
 0064 27FE              sbrs R2,7
 0066 08C0              rjmp L14
 0068                   .dbline 130
 0068           ;        c=D12_SelectEndpoint(endp*2+1);
 0068 82E0              ldi R24,2
 006A 869F              mul R24,R22
 006C 002D              mov R16,R0
 006E 0F5F              subi R16,255    ; addi 1
 0070 0E940000          xcall _D12_SelectEndpoint
 0074 402F              mov R20,R16
 0076 06C0              xjmp L15
 0078           L14:
 0078                   .dbline 132
 0078           ;     else
 0078           ;        c=D12_SelectEndpoint(endp*2);
 0078 82E0              ldi R24,2
 007A 869F              mul R24,R22
 007C 002D              mov R16,R0
 007E 0E940000          xcall _D12_SelectEndpoint
 0082 402F              mov R20,R16
 0084           L15:
 0084                   .dbline 133
 0084           ;     if(c&D12_STALL)
 0084 41FF              sbrs R20,1
 0086 03C0              rjmp L17
 0088                   .dbline 134
 0088           ;        txdat[0]=1;
 0088 81E0              ldi R24,1
 008A 8883              std y+0,R24
 008C 02C0              xjmp L18
 008E           L17:
 008E                   .dbline 136
 008E           ;     else
 008E           ;        txdat[0]=0;
 008E 2224              clr R2
 0090 2882              std y+0,R2
 0092           L18:
 0092                   .dbline 137
 0092           ;     txdat[1]=0;
 0092 2224              clr R2
 0094 2982              std y+1,R2
 0096                   .dbline 138
 0096           ;     single_transmit(txdat,2);
 0096 22E0              ldi R18,2
 0098 8E01              movw R16,R28
 009A 0E940000          xcall _single_transmit
 009E                   .dbline 139
 009E           ;    }
 009E 02C0              xjmp L12
 00A0           L11:
 00A0                   .dbline 140
 00A0           ;   else  stall_ep0();
 00A0 0E940000          xcall _stall_ep0
 00A4           L12:
 00A4           L9:
 00A4           L4:
 00A4                   .dbline -2
 00A4           L2:
 00A4 2296              adiw R28,2
 00A6 0E940000          xcall pop_gset2
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC                   .dbsym r c 20 c
 00AC                   .dbsym r endp 22 c
 00AC                   .dbsym l txdat 0 A[2:2]c
 00AC                   .dbsym r bRecipient 20 c
 00AC                   .dbend
 00AC                   .dbfunc e clear_feature _clear_feature fV
 00AC           ;           endp -> R20
 00AC           ;     bRecipient -> R20
                        .even
 00AC           _clear_feature::
 00AC 0E940000          xcall push_gset1
 00B0                   .dbline -1
 00B0                   .dbline 143
 00B0           ; }
 00B0           ; void clear_feature(void)
 00B0           ; {
 00B0                   .dbline 145
 00B0           ;   unsigned char endp;
 00B0           ;   unsigned char bRecipient=ControlData.DeviceRequest.bmRequestType&USB_RECIPIENT;
 00B0 40910000          lds R20,_ControlData
 00B4 4F71              andi R20,31
 00B6                   .dbline 146
 00B6           ;   if(bRecipient==USB_RECIPIENT_DEVICE
 00B6 A9F4              brne L21
 00B8 80910200          lds R24,_ControlData+2
 00BC 90910300          lds R25,_ControlData+2+1
 00C0 8130              cpi R24,1
 00C2 E0E0              ldi R30,0
 00C4 9E07              cpc R25,R30
 00C6 69F4              brne L21
 00C8                   .dbline 148
 00C8           ;         &&ControlData.DeviceRequest.wValue==USB_FEATURE_REMOTE_WAKEUP)
 00C8           ;   {
 00C8                   .dbline 149
 00C8           ;      DISABLE;
 00C8 F894              cli
 00CA                   .dbline 150
 00CA           ;      bEPPflags.bits.remote_wakeup=0;
 00CA 80910000          lds R24,_bEPPflags
 00CE 877F              andi R24,247
 00D0 80930000          sts _bEPPflags,R24
 00D4                   .dbline 151
 00D4           ;      ENABLE;
 00D4 7894              sei
 00D6                   .dbline 152
 00D6           ;      single_transmit(0,0);
 00D6 2227              clr R18
 00D8 0027              clr R16
 00DA 1127              clr R17
 00DC 0E940000          xcall _single_transmit
 00E0                   .dbline 153
 00E0           ;   }
 00E0 2AC0              xjmp L22
 00E2           L21:
 00E2                   .dbline 154
 00E2           ;   else if(bRecipient==USB_RECIPIENT_ENDPOINT
 00E2 4230              cpi R20,2
 00E4 31F5              brne L24
 00E6 20900200          lds R2,_ControlData+2
 00EA 30900300          lds R3,_ControlData+2+1
 00EE 2220              tst R2
 00F0 01F5              brne L24
 00F2 3320              tst R3
 00F4 F1F4              brne L24
 00F6           X0:
 00F6                   .dbline 156
 00F6           ;        &&ControlData.DeviceRequest.wValue==USB_FEATURE_ENDPOINT_STALL)
 00F6           ;   {
 00F6                   .dbline 157
 00F6           ;         endp=(unsigned char)(ControlData.DeviceRequest.wIndex&MAX_ENDPOINTS);
 00F6 40910400          lds R20,_ControlData+4
 00FA 4370              andi R20,3
 00FC 5070              andi R21,0
 00FE                   .dbline 158
 00FE           ;         if(ControlData.DeviceRequest.wIndex&(unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 00FE 20900400          lds R2,_ControlData+4
 0102 30900500          lds R3,_ControlData+4+1
 0106 27FE              sbrs R2,7
 0108 08C0              rjmp L28
 010A                   .dbline 159
 010A           ;             D12_SetEndpointStatus(endp*2+1,0);
 010A 2227              clr R18
 010C 82E0              ldi R24,2
 010E 849F              mul R24,R20
 0110 002D              mov R16,R0
 0112 0F5F              subi R16,255    ; addi 1
 0114 0E940000          xcall _D12_SetEndpointStatus
 0118 06C0              xjmp L29
 011A           L28:
 011A                   .dbline 161
 011A           ;         else
 011A           ;             D12_SetEndpointStatus(endp*2,0);
 011A 2227              clr R18
 011C 82E0              ldi R24,2
 011E 849F              mul R24,R20
 0120 002D              mov R16,R0
 0122 0E940000          xcall _D12_SetEndpointStatus
 0126           L29:
 0126                   .dbline 162
 0126           ;         single_transmit(0,0);
 0126 2227              clr R18
 0128 0027              clr R16
 012A 1127              clr R17
 012C 0E940000          xcall _single_transmit
 0130                   .dbline 163
 0130           ;   }
 0130 02C0              xjmp L25
 0132           L24:
 0132                   .dbline 164
 0132           ;   else  stall_ep0();
 0132 0E940000          xcall _stall_ep0
 0136           L25:
 0136           L22:
 0136                   .dbline -2
 0136           L20:
 0136 0E940000          xcall pop_gset1
 013A                   .dbline 0 ; func end
 013A 0895              ret
 013C                   .dbsym r endp 20 c
 013C                   .dbsym r bRecipient 20 c
 013C                   .dbend
 013C                   .dbfunc e set_feature _set_feature fV
 013C           ;           endp -> R20
 013C           ;     bRecipient -> R20
                        .even
 013C           _set_feature::
 013C 0E940000          xcall push_gset1
 0140                   .dbline -1
 0140                   .dbline 167
 0140           ; }
 0140           ; void set_feature(void)
 0140           ; {
 0140                   .dbline 169
 0140           ;   unsigned char endp;
 0140           ;   unsigned char bRecipient=ControlData.DeviceRequest.bmRequestType&USB_RECIPIENT;
 0140 40910000          lds R20,_ControlData
 0144 4F71              andi R20,31
 0146                   .dbline 170
 0146           ;   if(bRecipient==USB_RECIPIENT_DEVICE
 0146 A9F4              brne L32
 0148 80910200          lds R24,_ControlData+2
 014C 90910300          lds R25,_ControlData+2+1
 0150 8130              cpi R24,1
 0152 E0E0              ldi R30,0
 0154 9E07              cpc R25,R30
 0156 69F4              brne L32
 0158                   .dbline 172
 0158           ;         &&ControlData.DeviceRequest.wValue==USB_FEATURE_REMOTE_WAKEUP)
 0158           ;   {
 0158                   .dbline 173
 0158           ;      DISABLE;
 0158 F894              cli
 015A                   .dbline 174
 015A           ;      bEPPflags.bits.remote_wakeup=1;
 015A 80910000          lds R24,_bEPPflags
 015E 8860              ori R24,8
 0160 80930000          sts _bEPPflags,R24
 0164                   .dbline 175
 0164           ;      ENABLE;
 0164 7894              sei
 0166                   .dbline 176
 0166           ;      single_transmit(0,0);
 0166 2227              clr R18
 0168 0027              clr R16
 016A 1127              clr R17
 016C 0E940000          xcall _single_transmit
 0170                   .dbline 177
 0170           ;   }
 0170 2AC0              xjmp L33
 0172           L32:
 0172                   .dbline 178
 0172           ;   else if(bRecipient==USB_RECIPIENT_ENDPOINT
 0172 4230              cpi R20,2
 0174 31F5              brne L35
 0176 20900200          lds R2,_ControlData+2
 017A 30900300          lds R3,_ControlData+2+1
 017E 2220              tst R2
 0180 01F5              brne L35
 0182 3320              tst R3
 0184 F1F4              brne L35
 0186           X1:
 0186                   .dbline 180
 0186           ;        &&ControlData.DeviceRequest.wValue==USB_FEATURE_ENDPOINT_STALL)
 0186           ;   {
 0186                   .dbline 181
 0186           ;         endp=(unsigned char)(ControlData.DeviceRequest.wIndex&MAX_ENDPOINTS);
 0186 40910400          lds R20,_ControlData+4
 018A 4370              andi R20,3
 018C 5070              andi R21,0
 018E                   .dbline 182
 018E           ;         if(ControlData.DeviceRequest.wIndex&(unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 018E 20900400          lds R2,_ControlData+4
 0192 30900500          lds R3,_ControlData+4+1
 0196 27FE              sbrs R2,7
 0198 08C0              rjmp L39
 019A                   .dbline 183
 019A           ;             D12_SetEndpointStatus(endp*2+1,1);
 019A 21E0              ldi R18,1
 019C 82E0              ldi R24,2
 019E 849F              mul R24,R20
 01A0 002D              mov R16,R0
 01A2 0F5F              subi R16,255    ; addi 1
 01A4 0E940000          xcall _D12_SetEndpointStatus
 01A8 06C0              xjmp L40
 01AA           L39:
 01AA                   .dbline 185
 01AA           ;         else
 01AA           ;             D12_SetEndpointStatus(endp*2,1);
 01AA 21E0              ldi R18,1
 01AC 82E0              ldi R24,2
 01AE 849F              mul R24,R20
 01B0 002D              mov R16,R0
 01B2 0E940000          xcall _D12_SetEndpointStatus
 01B6           L40:
 01B6                   .dbline 186

⌨️ 快捷键说明

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