📄 isr.lis
字号:
0320 2882 std y+0,R2
0322 2227 clr R18
0324 01E0 ldi R16,1
0326 0E940000 xcall _D12_WriteEndpoint
032A .dbline 153
032A ; bEPPflags.bits.control_state=USB_IDLE;
032A 80910600 lds R24,_bEPPflags
032E 8F79 andi R24,159
0330 80930600 sts _bEPPflags,R24
0334 .dbline 154
0334 ; }
0334 L72:
0334 L64:
0334 L55:
0334 .dbline -2
0334 L49:
0334 2296 adiw R28,2
0336 0E940000 xcall pop_gset1
033A .dbline 0 ; func end
033A 0895 ret
033C .dbsym r i 20 S
033C .dbend
033C .dbfunc e ep1_txdone _ep1_txdone fV
.even
033C _ep1_txdone::
033C .dbline -1
033C .dbline 157
033C ; }
033C ; void ep1_txdone(void)
033C ; {
033C .dbline 158
033C ; D12_ReadLastTransactionStatus(3);
033C 03E0 ldi R16,3
033E 0E940000 xcall _D12_ReadLastTransactionStatus
0342 .dbline -2
0342 L74:
0342 .dbline 0 ; func end
0342 0895 ret
0344 .dbend
0344 .dbfunc e ep1_rxdone _ep1_rxdone fV
.even
0344 _ep1_rxdone::
0344 .dbline -1
0344 .dbline 161
0344 ; }
0344 ; void ep1_rxdone(void)
0344 ; {
0344 .dbline 162
0344 ; D12_ReadLastTransactionStatus(2);
0344 02E0 ldi R16,2
0346 0E940000 xcall _D12_ReadLastTransactionStatus
034A .dbline -2
034A L75:
034A .dbline 0 ; func end
034A 0895 ret
034C .dbend
034C .dbfunc e main_txdone _main_txdone fV
034C ; i -> R20,R21
.even
034C _main_txdone::
034C 0E940000 xcall push_gset1
0350 2297 sbiw R28,2
0352 .dbline -1
0352 .dbline 165
0352 ; }
0352 ; void main_txdone(void)
0352 ; {
0352 .dbline 167
0352 ; unsigned int i;
0352 ; D12_ReadLastTransactionStatus(5);
0352 05E0 ldi R16,5
0354 0E940000 xcall _D12_ReadLastTransactionStatus
0358 .dbline 168
0358 ; if(bEPPflags.bits.bulk_state==BULK_REQEST_TRANS)
0358 80910800 lds R24,_bEPPflags+2
035C 8770 andi R24,7
035E 8330 cpi R24,3
0360 09F0 breq X5
0362 53C0 xjmp L77
0364 X5:
0364 .dbline 169
0364 ; {
0364 .dbline 170
0364 ; i=ControlData.wLength-ControlData.wCount;
0364 20900A00 lds R2,_ControlData+10
0368 30900B00 lds R3,_ControlData+10+1
036C 40910800 lds R20,_ControlData+8
0370 50910900 lds R21,_ControlData+8+1
0374 4219 sub R20,R2
0376 5309 sbc R21,R3
0378 .dbline 171
0378 ; if(i>=EP2_PACKET_SIZE)
0378 4034 cpi R20,64
037A E0E0 ldi R30,0
037C 5E07 cpc R21,R30
037E 18F1 brlo L82
0380 .dbline 172
0380 ; {
0380 .dbline 173
0380 ; D12_CWriteEndpoint(5,EP2_PACKET_SIZE,ControlData.pCData+ControlData.wCount);
0380 20900E00 lds R2,_ControlData+14
0384 30900F00 lds R3,_ControlData+14+1
0388 40900A00 lds R4,_ControlData+10
038C 50900B00 lds R5,_ControlData+10+1
0390 420C add R4,R2
0392 531C adc R5,R3
0394 5982 std y+1,R5
0396 4882 std y+0,R4
0398 20E4 ldi R18,64
039A 30E0 ldi R19,0
039C 05E0 ldi R16,5
039E 10E0 ldi R17,0
03A0 0E940000 xcall _D12_CWriteEndpoint
03A4 .dbline 174
03A4 ; ControlData.wCount+=EP2_PACKET_SIZE;
03A4 80910A00 lds R24,_ControlData+10
03A8 90910B00 lds R25,_ControlData+10+1
03AC 805C subi R24,192 ; offset = 64
03AE 9F4F sbci R25,255
03B0 90930B00 sts _ControlData+10+1,R25
03B4 80930A00 sts _ControlData+10,R24
03B8 .dbline 175
03B8 ; bEPPflags.bits.bulk_state=BULK_REQEST_TRANS;
03B8 80910800 lds R24,_bEPPflags+2
03BC 887F andi R24,248
03BE 8360 ori R24,3
03C0 80930800 sts _bEPPflags+2,R24
03C4 .dbline 176
03C4 ; }
03C4 9AC0 xjmp L78
03C6 L82:
03C6 .dbline 178
03C6 ; else
03C6 ; {
03C6 .dbline 179
03C6 ; D12_CWriteEndpoint(5,i,ControlData.pCData+ControlData.wCount);
03C6 20900E00 lds R2,_ControlData+14
03CA 30900F00 lds R3,_ControlData+14+1
03CE 40900A00 lds R4,_ControlData+10
03D2 50900B00 lds R5,_ControlData+10+1
03D6 420C add R4,R2
03D8 531C adc R5,R3
03DA 5982 std y+1,R5
03DC 4882 std y+0,R4
03DE 9A01 movw R18,R20
03E0 05E0 ldi R16,5
03E2 10E0 ldi R17,0
03E4 0E940000 xcall _D12_CWriteEndpoint
03E8 .dbline 180
03E8 ; ControlData.wCount+=i;
03E8 20900A00 lds R2,_ControlData+10
03EC 30900B00 lds R3,_ControlData+10+1
03F0 240E add R2,R20
03F2 351E adc R3,R21
03F4 30920B00 sts _ControlData+10+1,R3
03F8 20920A00 sts _ControlData+10,R2
03FC .dbline 181
03FC ; bEPPflags.bits.bulk_state=BULK_DATA_END;
03FC 80910800 lds R24,_bEPPflags+2
0400 887F andi R24,248
0402 8260 ori R24,2
0404 80930800 sts _bEPPflags+2,R24
0408 .dbline 182
0408 ; }
0408 .dbline 183
0408 ; }
0408 78C0 xjmp L78
040A L77:
040A .dbline 184
040A ; else if(bEPPflags.bits.bulk_state==BULK_DATA_END)
040A 80910800 lds R24,_bEPPflags+2
040E 8770 andi R24,7
0410 8230 cpi R24,2
0412 19F4 brne L92
0414 .dbline 185
0414 ; {
0414 .dbline 186
0414 ; Bulk_CSWHandler();
0414 0E940000 xcall _Bulk_CSWHandler
0418 .dbline 187
0418 ; }
0418 70C0 xjmp L93
041A L92:
041A .dbline 188
041A ; else if(bEPPflags.bits.bulk_state==BULK_DATA_TRANS)
041A 80910800 lds R24,_bEPPflags+2
041E 8770 andi R24,7
0420 8130 cpi R24,1
0422 09F0 breq X6
0424 6AC0 xjmp L95
0426 X6:
0426 .dbline 189
0426 ; {
0426 .dbline 190
0426 ; if(Bulk_Control_r.BufCount<448)//512-64=448
0426 80910600 lds R24,_Bulk_Control_r+6
042A 90910700 lds R25,_Bulk_Control_r+6+1
042E 803C cpi R24,192
0430 E1E0 ldi R30,1
0432 9E07 cpc R25,R30
0434 A8F4 brsh L98
0436 .dbline 191
0436 ; {
0436 .dbline 192
0436 ; Bulk_Control_r.BufCount+=64;
0436 805C subi R24,192 ; offset = 64
0438 9F4F sbci R25,255
043A 90930700 sts _Bulk_Control_r+6+1,R25
043E 80930600 sts _Bulk_Control_r+6,R24
0442 .dbline 193
0442 ; D12_WriteEndpoint(5,64,PageBuf+Bulk_Control_r.BufCount);
0442 80E0 ldi R24,<_PageBuf
0444 90E0 ldi R25,>_PageBuf
0446 20900600 lds R2,_Bulk_Control_r+6
044A 30900700 lds R3,_Bulk_Control_r+6+1
044E 280E add R2,R24
0450 391E adc R3,R25
0452 3982 std y+1,R3
0454 2882 std y+0,R2
0456 20E4 ldi R18,64
0458 05E0 ldi R16,5
045A 0E940000 xcall _D12_WriteEndpoint
045E .dbline 194
045E ; }
045E 4DC0 xjmp L99
0460 L98:
0460 .dbline 195
0460 ; else if(Bulk_Control_r.Transfer_Length>0)
0460 20900000 lds R2,_Bulk_Control_r
0464 30900100 lds R3,_Bulk_Control_r+1
0468 2220 tst R2
046A 19F4 brne X4
046C 3320 tst R3
046E 09F4 brne X7
0470 42C0 xjmp L103
0472 X7:
0472 X4:
0472 .dbline 196
0472 ; {
0472 .dbline 197
0472 ; if(Bulk_Control_r.CurrentPage==32)
0472 80910400 lds R24,_Bulk_Control_r+4
0476 8032 cpi R24,32
0478 61F4 brne L105
047A .dbline 198
047A ; {
047A .dbline 199
047A ; Bulk_Control_r.CurrentBlock++;
047A 80910200 lds R24,_Bulk_Control_r+2
047E 90910300 lds R25,_Bulk_Control_r+2+1
0482 0196 adiw R24,1
0484 90930300 sts _Bulk_Control_r+2+1,R25
0488 80930200 sts _Bulk_Control_r+2,R24
048C .dbline 200
048C ; Bulk_Control_r.CurrentPage=0;
048C 2224 clr R2
048E 20920400 sts _Bulk_Control_r+4,R2
0492 .dbline 201
0492 ; }
0492 L105:
0492 .dbline 202
0492 ; ReadPage(Bulk_Control_r.CurrentBlock,Bulk_Control_r.CurrentPage,PageBuf);
0492 80E0 ldi R24,<_PageBuf
0494 90E0 ldi R25,>_PageBuf
0496 9983 std y+1,R25
0498 8883 std y+0,R24
049A 20910400 lds R18,_Bulk_Control_r+4
049E 3327 clr R19
04A0 00910200 lds R16,_Bulk_Control_r+2
04A4 10910300 lds R17,_Bulk_Control_r+2+1
04A8 0E940000 xcall _ReadPage
04AC .dbline 203
04AC ; Bulk_Control_r.CurrentPage++;
04AC 80910400 lds R24,_Bulk_Control_r+4
04B0 8F5F subi R24,255 ; addi 1
04B2 80930400 sts _Bulk_Control_r+4,R24
04B6 .dbline 204
04B6 ; Bulk_Control_r.Transfer_Length--;
04B6 80910000 lds R24,_Bulk_Control_r
04BA 90910100 lds R25,_Bulk_Control_r+1
04BE 0197 sbiw R24,1
04C0 90930100 sts _Bulk_Control_r+1,R25
04C4 80930000 sts _Bulk_Control_r,R24
04C8 .dbline 205
04C8 ; Bulk_Control_r.BufCount=0;
04C8 2224 clr R2
04CA 3324 clr R3
04CC 30920700 sts _Bulk_Control_r+6+1,R3
04D0 20920600 sts _Bulk_Control_r+6,R2
04D4 .dbline 206
04D4 ; bEPPflags.bits.bulk_state=BULK_DATA_TRANS;
04D4 80910800 lds R24,_bEPPflags+2
04D8 887F andi R24,248
04DA 8160 ori R24,1
04DC 80930800 sts _bEPPflags+2,R24
04E0 .dbline 207
04E0 ; D12_WriteEndpoint(5,64,PageBuf+Bulk_Control_r.BufCount);
04E0 80E0 ldi R24,<_PageBuf
04E2 90E0 ldi R25,>_PageBuf
04E4 280E add R2,R24
04E6 391E adc R3,R25
04E8 3982 std y+1,R3
04EA 2882 std y+0,R2
04EC 20E4 ldi R18,64
04EE 05E0 ldi R16,5
04F0 0E940000 xcall _D12_WriteEndpoint
04F4 .dbline 208
04F4 ; }
04F4 02C0 xjmp L104
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -