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

📄 isr.lis

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0130                   .dbline 95
 0130           ;       }
 0130 5AC0              xjmp L23
 0132           L33:
 0132                   .dbline 97
 0132           ;       else
 0132           ;       {
 0132                   .dbline 98
 0132           ;         if(ControlData.DeviceRequest.wLength>MAX_CONTROLDATA_SIZE)
 0132 88E0              ldi R24,8
 0134 90E0              ldi R25,0
 0136 20900600          lds R2,_ControlData+6
 013A 30900700          lds R3,_ControlData+6+1
 013E 8215              cp R24,R2
 0140 9305              cpc R25,R3
 0142 70F4              brsh L36
 0144                   .dbline 99
 0144           ;         {
 0144                   .dbline 100
 0144           ;           bEPPflags.bits.control_state=USB_IDLE;
 0144 80910600          lds R24,_bEPPflags
 0148 8F79              andi R24,159
 014A 80930600          sts _bEPPflags,R24
 014E                   .dbline 101
 014E           ;           D12_SetEndpointStatus(0,1);
 014E 21E0              ldi R18,1
 0150 0027              clr R16
 0152 0E940000          xcall _D12_SetEndpointStatus
 0156                   .dbline 102
 0156           ;           D12_SetEndpointStatus(1,1);
 0156 21E0              ldi R18,1
 0158 01E0              ldi R16,1
 015A 0E940000          xcall _D12_SetEndpointStatus
 015E                   .dbline 103
 015E           ;         }
 015E 43C0              xjmp L23
 0160           L36:
 0160                   .dbline 105
 0160           ;         else
 0160           ;         {
 0160                   .dbline 106
 0160           ;           bEPPflags.bits.control_state=USB_RECEIVE;
 0160 80910600          lds R24,_bEPPflags
 0164 8F79              andi R24,159
 0166 8064              ori R24,64
 0168 80930600          sts _bEPPflags,R24
 016C                   .dbline 107
 016C           ;         }
 016C                   .dbline 108
 016C           ;       }
 016C                   .dbline 109
 016C           ;     }
 016C                   .dbline 110
 016C           ;   }
 016C 3CC0              xjmp L23
 016E           L22:
 016E                   .dbline 111
 016E           ;   else if(bEPPflags.bits.control_state==USB_RECEIVE)
 016E 80910600          lds R24,_bEPPflags
 0172 8695              lsr R24
 0174 8695              lsr R24
 0176 8695              lsr R24
 0178 8695              lsr R24
 017A 8695              lsr R24
 017C 8370              andi R24,3
 017E 8230              cpi R24,2
 0180 69F5              brne L39
 0182                   .dbline 112
 0182           ;   {
 0182                   .dbline 113
 0182           ;     i=D12_ReadEndpoint(0,EP0_PACKET_SIZE,ControlData.dataBuffer+ControlData.wCount);
 0182 80E0              ldi R24,<_ControlData+16
 0184 90E0              ldi R25,>_ControlData+16
 0186 20900A00          lds R2,_ControlData+10
 018A 30900B00          lds R3,_ControlData+10+1
 018E 280E              add R2,R24
 0190 391E              adc R3,R25
 0192 3982              std y+1,R3
 0194 2882              std y+0,R2
 0196 20E1              ldi R18,16
 0198 0027              clr R16
 019A 0E940000          xcall _D12_ReadEndpoint
 019E 402F              mov R20,R16
 01A0                   .dbline 114
 01A0           ;     ControlData.wCount+=i;
 01A0 242E              mov R2,R20
 01A2 3324              clr R3
 01A4 40900A00          lds R4,_ControlData+10
 01A8 50900B00          lds R5,_ControlData+10+1
 01AC 420C              add R4,R2
 01AE 531C              adc R5,R3
 01B0 50920B00          sts _ControlData+10+1,R5
 01B4 40920A00          sts _ControlData+10,R4
 01B8                   .dbline 115
 01B8           ;     if(i!=EP0_PACKET_SIZE||ControlData.wCount>=ControlData.wLength)
 01B8 0031              cpi R16,16
 01BA 39F4              brne L48
 01BC 20900800          lds R2,_ControlData+8
 01C0 30900900          lds R3,_ControlData+8+1
 01C4 4214              cp R4,R2
 01C6 5304              cpc R5,R3
 01C8 70F0              brlo L40
 01CA           L48:
 01CA                   .dbline 116
 01CA           ;     {
 01CA                   .dbline 117
 01CA           ;        bEPPflags.bits.setup_packet=1;
 01CA 80910600          lds R24,_bEPPflags
 01CE 8460              ori R24,4
 01D0 80930600          sts _bEPPflags,R24
 01D4                   .dbline 118
 01D4           ;        bEPPflags.bits.control_state=USB_IDLE;
 01D4 8F79              andi R24,159
 01D6 80930600          sts _bEPPflags,R24
 01DA                   .dbline 119
 01DA           ;     }
 01DA                   .dbline 120
 01DA           ;   }
 01DA 05C0              xjmp L40
 01DC           L39:
 01DC                   .dbline 122
 01DC           ;   else
 01DC           ;   {
 01DC                   .dbline 123
 01DC           ;     bEPPflags.bits.control_state=USB_IDLE;
 01DC 80910600          lds R24,_bEPPflags
 01E0 8F79              andi R24,159
 01E2 80930600          sts _bEPPflags,R24
 01E6                   .dbline 124
 01E6           ;   }
 01E6           L40:
 01E6           L23:
 01E6                   .dbline -2
 01E6                   .dbline 125
 01E6           ; }
 01E6           L21:
 01E6 2296              adiw R28,2
 01E8 0E940000          xcall pop_gset1
 01EC                   .dbline 0 ; func end
 01EC 0895              ret
 01EE                   .dbsym r i 20 c
 01EE                   .dbsym r ep_last 20 c
 01EE                   .dbend
 01EE                   .dbfunc e ep0_txdone _ep0_txdone fV
 01EE           ;              i -> R20,R21
                        .even
 01EE           _ep0_txdone::
 01EE 0E940000          xcall push_gset1
 01F2 2297              sbiw R28,2
 01F4                   .dbline -1
 01F4                   .dbline 127
 01F4           ; void ep0_txdone(void)
 01F4           ; {
 01F4                   .dbline 128
 01F4           ;   short i=ControlData.wLength-ControlData.wCount;
 01F4 20900A00          lds R2,_ControlData+10
 01F8 30900B00          lds R3,_ControlData+10+1
 01FC 40910800          lds R20,_ControlData+8
 0200 50910900          lds R21,_ControlData+8+1
 0204 4219              sub R20,R2
 0206 5309              sbc R21,R3
 0208                   .dbline 129
 0208           ;   D12_ReadLastTransactionStatus(1);
 0208 01E0              ldi R16,1
 020A 0E940000          xcall _D12_ReadLastTransactionStatus
 020E                   .dbline 130
 020E           ;   if(bEPPflags.bits.control_state!=USB_TRANSMIT)
 020E 80910600          lds R24,_bEPPflags
 0212 8695              lsr R24
 0214 8695              lsr R24
 0216 8695              lsr R24
 0218 8695              lsr R24
 021A 8695              lsr R24
 021C 8370              andi R24,3
 021E 8130              cpi R24,1
 0220 09F0              breq L52
 0222                   .dbline 131
 0222           ;      return;
 0222 88C0              xjmp L49
 0224           L52:
 0224                   .dbline 132
 0224           ;   if(i>=EP0_PACKET_SIZE)
 0224 4031              cpi R20,16
 0226 E0E0              ldi R30,0
 0228 5E07              cpc R21,R30
 022A CCF1              brlt L54
 022C                   .dbline 133
 022C           ;   {
 022C                   .dbline 134
 022C           ;      if(bEPPflags.bits.rom_state)
 022C 20900600          lds R2,_bEPPflags
 0230 30900700          lds R3,_bEPPflags+1
 0234 33FE              sbrs R3,3
 0236 13C0              rjmp L56
 0238                   .dbline 135
 0238           ;           D12_CWriteEndpoint(1,EP0_PACKET_SIZE,ControlData.pCData+ControlData.wCount);
 0238 20900E00          lds R2,_ControlData+14
 023C 30900F00          lds R3,_ControlData+14+1
 0240 40900A00          lds R4,_ControlData+10
 0244 50900B00          lds R5,_ControlData+10+1
 0248 420C              add R4,R2
 024A 531C              adc R5,R3
 024C 5982              std y+1,R5
 024E 4882              std y+0,R4
 0250 20E1              ldi R18,16
 0252 30E0              ldi R19,0
 0254 01E0              ldi R16,1
 0256 10E0              ldi R17,0
 0258 0E940000          xcall _D12_CWriteEndpoint
 025C 10C0              xjmp L57
 025E           L56:
 025E                   .dbline 137
 025E           ;      else             
 025E           ;         D12_WriteEndpoint(1,EP0_PACKET_SIZE,ControlData.pData+ControlData.wCount);
 025E 20900C00          lds R2,_ControlData+12
 0262 30900D00          lds R3,_ControlData+12+1
 0266 40900A00          lds R4,_ControlData+10
 026A 50900B00          lds R5,_ControlData+10+1
 026E 420C              add R4,R2
 0270 531C              adc R5,R3
 0272 5982              std y+1,R5
 0274 4882              std y+0,R4
 0276 20E1              ldi R18,16
 0278 01E0              ldi R16,1
 027A 0E940000          xcall _D12_WriteEndpoint
 027E           L57:
 027E                   .dbline 138
 027E           ;      ControlData.wCount+=EP0_PACKET_SIZE;
 027E 80910A00          lds R24,_ControlData+10
 0282 90910B00          lds R25,_ControlData+10+1
 0286 4096              adiw R24,16
 0288 90930B00          sts _ControlData+10+1,R25
 028C 80930A00          sts _ControlData+10,R24
 0290                   .dbline 139
 0290           ;      bEPPflags.bits.control_state=USB_TRANSMIT;
 0290 80910600          lds R24,_bEPPflags
 0294 8F79              andi R24,159
 0296 8062              ori R24,32
 0298 80930600          sts _bEPPflags,R24
 029C                   .dbline 140
 029C           ;   }
 029C 4BC0              xjmp L55
 029E           L54:
 029E                   .dbline 141
 029E           ;   else if(i!=0)
 029E 4030              cpi R20,0
 02A0 4507              cpc R20,R21
 02A2 C1F1              breq L63
 02A4           X2:
 02A4                   .dbline 142
 02A4           ;   {
 02A4                   .dbline 143
 02A4           ;      if(bEPPflags.bits.rom_state)
 02A4 20900600          lds R2,_bEPPflags
 02A8 30900700          lds R3,_bEPPflags+1
 02AC 33FE              sbrs R3,3
 02AE 12C0              rjmp L65
 02B0                   .dbline 144
 02B0           ;           D12_CWriteEndpoint(1,i,ControlData.pCData+ControlData.wCount);
 02B0 20900E00          lds R2,_ControlData+14
 02B4 30900F00          lds R3,_ControlData+14+1
 02B8 40900A00          lds R4,_ControlData+10
 02BC 50900B00          lds R5,_ControlData+10+1
 02C0 420C              add R4,R2
 02C2 531C              adc R5,R3
 02C4 5982              std y+1,R5
 02C6 4882              std y+0,R4
 02C8 9A01              movw R18,R20
 02CA 01E0              ldi R16,1
 02CC 10E0              ldi R17,0
 02CE 0E940000          xcall _D12_CWriteEndpoint
 02D2 10C0              xjmp L66
 02D4           L65:
 02D4                   .dbline 146
 02D4           ;        else
 02D4           ;         D12_WriteEndpoint(1,i,ControlData.pData+ControlData.wCount);
 02D4 20900C00          lds R2,_ControlData+12
 02D8 30900D00          lds R3,_ControlData+12+1
 02DC 40900A00          lds R4,_ControlData+10
 02E0 50900B00          lds R5,_ControlData+10+1
 02E4 420C              add R4,R2
 02E6 531C              adc R5,R3
 02E8 5982              std y+1,R5
 02EA 4882              std y+0,R4
 02EC 242F              mov R18,R20
 02EE 01E0              ldi R16,1
 02F0 0E940000          xcall _D12_WriteEndpoint
 02F4           L66:
 02F4                   .dbline 147
 02F4           ;      ControlData.wCount+=i;
 02F4 20900A00          lds R2,_ControlData+10
 02F8 30900B00          lds R3,_ControlData+10+1
 02FC 240E              add R2,R20
 02FE 351E              adc R3,R21
 0300 30920B00          sts _ControlData+10+1,R3
 0304 20920A00          sts _ControlData+10,R2
 0308                   .dbline 148
 0308           ;      bEPPflags.bits.control_state=USB_IDLE;
 0308 80910600          lds R24,_bEPPflags
 030C 8F79              andi R24,159
 030E 80930600          sts _bEPPflags,R24
 0312                   .dbline 149
 0312           ;   }

⌨️ 快捷键说明

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