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

📄 isr.s

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 S
📖 第 1 页 / 共 2 页
字号:
	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 + -