📄 isr.s
字号:
xjmp L64
L63:
.dbline 150
; else if(i==0)
cpi R20,0
cpc R20,R21
brne L72
X3:
.dbline 151
; {
.dbline 152
; D12_WriteEndpoint(1,0,0);
clr R2
clr R3
std y+1,R3
std y+0,R2
clr R18
ldi R16,1
xcall _D12_WriteEndpoint
.dbline 153
; bEPPflags.bits.control_state=USB_IDLE;
lds R24,_bEPPflags
andi R24,159
sts _bEPPflags,R24
.dbline 154
; }
L72:
L64:
L55:
.dbline -2
.dbline 155
; }
L49:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 S
.dbend
.dbfunc e ep1_txdone _ep1_txdone fV
.even
_ep1_txdone::
.dbline -1
.dbline 157
; void ep1_txdone(void)
; {
.dbline 158
; D12_ReadLastTransactionStatus(3);
ldi R16,3
.dbline -2
.dbline 159
; }
L74:
.dbline 0 ; func end
xjmp _D12_ReadLastTransactionStatus
.dbend
.dbfunc e ep1_rxdone _ep1_rxdone fV
.even
_ep1_rxdone::
.dbline -1
.dbline 161
; void ep1_rxdone(void)
; {
.dbline 162
; D12_ReadLastTransactionStatus(2);
ldi R16,2
.dbline -2
.dbline 163
; }
L75:
.dbline 0 ; func end
xjmp _D12_ReadLastTransactionStatus
.dbend
.dbfunc e main_txdone _main_txdone fV
; i -> R20,R21
.even
_main_txdone::
xcall push_gset1
sbiw R28,2
.dbline -1
.dbline 165
; void main_txdone(void)
; {
.dbline 167
; unsigned int i;
; D12_ReadLastTransactionStatus(5);
ldi R16,5
xcall _D12_ReadLastTransactionStatus
.dbline 168
; if(bEPPflags.bits.bulk_state==BULK_REQEST_TRANS)
lds R24,_bEPPflags+2
andi R24,7
cpi R24,3
breq X5
xjmp L77
X5:
.dbline 169
; {
.dbline 170
; i=ControlData.wLength-ControlData.wCount;
lds R2,_ControlData+10
lds R3,_ControlData+10+1
lds R20,_ControlData+8
lds R21,_ControlData+8+1
sub R20,R2
sbc R21,R3
.dbline 171
; if(i>=EP2_PACKET_SIZE)
cpi R20,64
ldi R30,0
cpc R21,R30
brlo L82
.dbline 172
; {
.dbline 173
; D12_CWriteEndpoint(5,EP2_PACKET_SIZE,ControlData.pCData+ControlData.wCount);
lds R2,_ControlData+14
lds R3,_ControlData+14+1
lds R4,_ControlData+10
lds R5,_ControlData+10+1
add R4,R2
adc R5,R3
std y+1,R5
std y+0,R4
ldi R18,64
ldi R19,0
ldi R16,5
ldi R17,0
xcall _D12_CWriteEndpoint
.dbline 174
; ControlData.wCount+=EP2_PACKET_SIZE;
lds R24,_ControlData+10
lds R25,_ControlData+10+1
subi R24,192 ; offset = 64
sbci R25,255
sts _ControlData+10+1,R25
sts _ControlData+10,R24
.dbline 175
; bEPPflags.bits.bulk_state=BULK_REQEST_TRANS;
lds R24,_bEPPflags+2
andi R24,248
ori R24,3
sts _bEPPflags+2,R24
.dbline 176
; }
xjmp L78
L82:
.dbline 178
; else
; {
.dbline 179
; D12_CWriteEndpoint(5,i,ControlData.pCData+ControlData.wCount);
lds R2,_ControlData+14
lds R3,_ControlData+14+1
lds R4,_ControlData+10
lds R5,_ControlData+10+1
add R4,R2
adc R5,R3
std y+1,R5
std y+0,R4
movw R18,R20
ldi R16,5
ldi R17,0
xcall _D12_CWriteEndpoint
.dbline 180
; ControlData.wCount+=i;
lds R2,_ControlData+10
lds R3,_ControlData+10+1
add R2,R20
adc R3,R21
sts _ControlData+10+1,R3
sts _ControlData+10,R2
.dbline 181
; bEPPflags.bits.bulk_state=BULK_DATA_END;
lds R24,_bEPPflags+2
andi R24,248
ori R24,2
sts _bEPPflags+2,R24
.dbline 182
; }
.dbline 183
; }
xjmp L78
L77:
.dbline 184
; else if(bEPPflags.bits.bulk_state==BULK_DATA_END)
lds R24,_bEPPflags+2
andi R24,7
cpi R24,2
brne L92
.dbline 185
; {
.dbline 186
; Bulk_CSWHandler();
xcall _Bulk_CSWHandler
.dbline 187
; }
xjmp L93
L92:
.dbline 188
; else if(bEPPflags.bits.bulk_state==BULK_DATA_TRANS)
lds R24,_bEPPflags+2
andi R24,7
cpi R24,1
breq X6
xjmp L95
X6:
.dbline 189
; {
.dbline 190
; if(Bulk_Control_r.BufCount<448)//512-64=448
lds R24,_Bulk_Control_r+6
lds R25,_Bulk_Control_r+6+1
cpi R24,192
ldi R30,1
cpc R25,R30
brsh L98
.dbline 191
; {
.dbline 192
; Bulk_Control_r.BufCount+=64;
subi R24,192 ; offset = 64
sbci R25,255
sts _Bulk_Control_r+6+1,R25
sts _Bulk_Control_r+6,R24
.dbline 193
; D12_WriteEndpoint(5,64,PageBuf+Bulk_Control_r.BufCount);
ldi R24,<_PageBuf
ldi R25,>_PageBuf
lds R2,_Bulk_Control_r+6
lds R3,_Bulk_Control_r+6+1
add R2,R24
adc R3,R25
std y+1,R3
std y+0,R2
ldi R18,64
ldi R16,5
xcall _D12_WriteEndpoint
.dbline 194
; }
xjmp L99
L98:
.dbline 195
; else if(Bulk_Control_r.Transfer_Length>0)
lds R2,_Bulk_Control_r
lds R3,_Bulk_Control_r+1
tst R2
brne X4
tst R3
brne X7
xjmp L103
X7:
X4:
.dbline 196
; {
.dbline 197
; if(Bulk_Control_r.CurrentPage==32)
lds R24,_Bulk_Control_r+4
cpi R24,32
brne L105
.dbline 198
; {
.dbline 199
; Bulk_Control_r.CurrentBlock++;
lds R24,_Bulk_Control_r+2
lds R25,_Bulk_Control_r+2+1
adiw R24,1
sts _Bulk_Control_r+2+1,R25
sts _Bulk_Control_r+2,R24
.dbline 200
; Bulk_Control_r.CurrentPage=0;
clr R2
sts _Bulk_Control_r+4,R2
.dbline 201
; }
L105:
.dbline 202
; ReadPage(Bulk_Control_r.CurrentBlock,Bulk_Control_r.CurrentPage,PageBuf);
ldi R24,<_PageBuf
ldi R25,>_PageBuf
std y+1,R25
std y+0,R24
lds R18,_Bulk_Control_r+4
clr R19
lds R16,_Bulk_Control_r+2
lds R17,_Bulk_Control_r+2+1
xcall _ReadPage
.dbline 203
; Bulk_Control_r.CurrentPage++;
lds R24,_Bulk_Control_r+4
subi R24,255 ; addi 1
sts _Bulk_Control_r+4,R24
.dbline 204
; Bulk_Control_r.Transfer_Length--;
lds R24,_Bulk_Control_r
lds R25,_Bulk_Control_r+1
sbiw R24,1
sts _Bulk_Control_r+1,R25
sts _Bulk_Control_r,R24
.dbline 205
; Bulk_Control_r.BufCount=0;
clr R2
clr R3
sts _Bulk_Control_r+6+1,R3
sts _Bulk_Control_r+6,R2
.dbline 206
; bEPPflags.bits.bulk_state=BULK_DATA_TRANS;
lds R24,_bEPPflags+2
andi R24,248
ori R24,1
sts _bEPPflags+2,R24
.dbline 207
; D12_WriteEndpoint(5,64,PageBuf+Bulk_Control_r.BufCount);
ldi R24,<_PageBuf
ldi R25,>_PageBuf
add R2,R24
adc R3,R25
std y+1,R3
std y+0,R2
ldi R18,64
ldi R16,5
xcall _D12_WriteEndpoint
.dbline 208
; }
xjmp L104
L103:
.dbline 210
; else
; Bulk_CSWHandler();
xcall _Bulk_CSWHandler
L104:
L99:
.dbline 211
; }
L95:
L93:
L78:
.dbline -2
.dbline 212
; }
L76:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.dbfunc e main_rxdone _main_rxdone fV
; len -> R20
; i -> R20
.even
_main_rxdone::
xcall push_gset1
sbiw R28,2
.dbline -1
.dbline 214
; void main_rxdone(void)
; {
.dbline 216
; unsigned char len,i;
; D12_ReadLastTransactionStatus(4);
ldi R16,4
xcall _D12_ReadLastTransactionStatus
.dbline 217
; if(bEPPflags.bits.bulk_state==BULK_IDLE)
lds R24,_bEPPflags+2
andi R24,7
brne L117
.dbline 218
; Bulk_CBWHandler();
xcall _Bulk_CBWHandler
xjmp L118
L117:
.dbline 219
; else if(bEPPflags.bits.bulk_state==BULK_DATA_RECIEVE)
lds R24,_bEPPflags+2
andi R24,7
cpi R24,4
breq X10
xjmp L120
X10:
.dbline 220
; {
.dbline 221
; len=D12_ReadEndpoint(4,64,PageBuf+Bulk_Control_w.BufCount);
ldi R24,<_PageBuf
ldi R25,>_PageBuf
lds R2,_Bulk_Control_w+6
lds R3,_Bulk_Control_w+6+1
add R2,R24
adc R3,R25
std y+1,R3
std y+0,R2
ldi R18,64
ldi R16,4
xcall _D12_ReadEndpoint
mov R20,R16
.dbline 222
; Bulk_Control_w.BufCount+=len;
mov R2,R20
clr R3
lds R4,_Bulk_Control_w+6
lds R5,_Bulk_Control_w+6+1
add R4,R2
adc R5,R3
sts _Bulk_Control_w+6+1,R5
sts _Bulk_Control_w+6,R4
.dbline 223
; if(Bulk_Control_w.BufCount>=448)
movw R24,R4
cpi R24,192
ldi R30,1
cpc R25,R30
brlo L125
.dbline 224
; {
.dbline 225
; len=D12_ReadEndpoint(4,64,PageBuf+Bulk_Control_w.BufCount);
ldi R24,<_PageBuf
ldi R25,>_PageBuf
movw R2,R4
add R2,R24
adc R3,R25
std y+1,R3
std y+0,R2
ldi R18,64
ldi R16,4
xcall _D12_ReadEndpoint
mov R20,R16
.dbline 226
; Bulk_Control_w.BufCount+=len;
mov R2,R20
clr R3
lds R4,_Bulk_Control_w+6
lds R5,_Bulk_Control_w+6+1
add R4,R2
adc R5,R3
sts _Bulk_Control_w+6+1,R5
sts _Bulk_Control_w+6,R4
.dbline 227
; }
L125:
.dbline 228
; if(Bulk_Control_w.BufCount>=512)
lds R24,_Bulk_Control_w+6
lds R25,_Bulk_Control_w+6+1
cpi R24,0
ldi R30,2
cpc R25,R30
brlo L130
.dbline 229
; {
.dbline 230
; WritePage(Bulk_Control_w.CurrentBlock,Bulk_Control_w.CurrentPage,PageBuf);
ldi R24,<_PageBuf
ldi R25,>_PageBuf
std y+1,R25
std y+0,R24
lds R18,_Bulk_Control_w+4
clr R19
lds R16,_Bulk_Control_w+2
lds R17,_Bulk_Control_w+2+1
xcall _WritePage
.dbline 231
; Bulk_Control_w.CurrentPage++;
lds R24,_Bulk_Control_w+4
subi R24,255 ; addi 1
sts _Bulk_Control_w+4,R24
.dbline 232
; Bulk_Control_w.Transfer_Length--;
lds R24,_Bulk_Control_w
lds R25,_Bulk_Control_w+1
sbiw R24,1
sts _Bulk_Control_w+1,R25
sts _Bulk_Control_w,R24
.dbline 233
; Bulk_Control_w.BufCount=0;
clr R2
clr R3
sts _Bulk_Control_w+6+1,R3
sts _Bulk_Control_w+6,R2
.dbline 234
; }
L130:
.dbline 235
; if((Bulk_Control_w.Transfer_Length>0)&&(Bulk_Control_w.CurrentPage==32))
lds R2,_Bulk_Control_w
lds R3,_Bulk_Control_w+1
tst R2
brne X8
tst R3
breq L137
X8:
lds R24,_Bulk_Control_w+4
cpi R24,32
brne L137
.dbline 236
; {
.dbline 237
; Bulk_Control_w.CurrentBlock++;
lds R24,_Bulk_Control_w+2
lds R25,_Bulk_Control_w+2+1
adiw R24,1
sts _Bulk_Control_w+2+1,R25
sts _Bulk_Control_w+2,R24
.dbline 238
; Bulk_Control_w.CurrentPage=0;
clr R2
sts _Bulk_Control_w+4,R2
.dbline 239
; Bulk_Control_w.BeginPage=0;
sts _Bulk_Control_w+5,R2
.dbline 240
; Bulk_Control_w.BufCount=0;
clr R3
sts _Bulk_Control_w+6+1,R3
sts _Bulk_Control_w+6,R2
.dbline 241
; Erase_Cluster(Bulk_Control_w.CurrentBlock);
movw R16,R24
xcall _Erase_Cluster
.dbline 242
; }
xjmp L138
L137:
.dbline 243
; else if(Bulk_Control_w.Transfer_Length==0)
lds R2,_Bulk_Control_w
lds R3,_Bulk_Control_w+1
tst R2
brne L145
tst R3
brne L145
X9:
.dbline 244
; {
.dbline 245
; for(i=Bulk_Control_w.CurrentPage;i<32;i++)
lds R20,_Bulk_Control_w+4
xjmp L150
L147:
.dbline 246
.dbline 247
ldi R24,<_PageBuf
ldi R25,>_PageBuf
std y+1,R25
std y+0,R24
mov R18,R20
clr R19
ldi R16,2047
ldi R17,7
xcall _ReadPage
.dbline 248
ldi R24,<_PageBuf
ldi R25,>_PageBuf
std y+1,R25
std y+0,R24
mov R18,R20
clr R19
lds R16,_Bulk_Control_w+2
lds R17,_Bulk_Control_w+2+1
xcall _WritePage
.dbline 249
L148:
.dbline 245
inc R20
L150:
.dbline 245
cpi R20,32
brlo L147
.dbline 250
; {
; ReadPage(CANCEL_BLOCK,i,PageBuf);
; WritePage(Bulk_Control_w.CurrentBlock,i,PageBuf);
; }
; Bulk_CSWHandler();
xcall _Bulk_CSWHandler
.dbline 251
; }
L145:
L138:
.dbline 252
; }
L120:
L118:
.dbline -2
.dbline 253
; }
L116:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r len 20 c
.dbsym r i 20 c
.dbend
.area bss(ram, con, rel)
.dbfile D:\AvrUSB\ISR.C
_ioRequest::
.blkb 6
.dbsym e ioRequest _ioRequest X
_bEPPflags::
.blkb 3
.dbsym e bEPPflags _bEPPflags X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -