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

📄 scsi.s

📁 USB通信程序开发(附源码 精品)包括详细论文说明
💻 S
📖 第 1 页 / 共 3 页
字号:
	rcall lpm16
	mov R30,R16
	mov R31,R17
	ijmp
L52:
	cpi R20,90
	ldi R30,0
	cpc R21,R30
	brne X10
	rjmp L46
X10:
	rjmp L32
X1:
	.dbline 126
L36:
	.dbline 128
; 		case 0x00:
; 			SCSICMD_TestUnitReady();
	rcall _SCSICMD_TestUnitReady
	.dbline 129
; 			BulkStausPhase = InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 130
; 			break;
	rjmp L33
L37:
	.dbline 132
; 		case 0x03:
; 			SCSICMD_RequestSense();
	rcall _SCSICMD_RequestSense
	.dbline 133
;                		BulkStausPhase=InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 134
;                		break;
	rjmp L33
L38:
	.dbline 136
; 		case 0x12:
; 			SCSICMD_Inquiry();
	rcall _SCSICMD_Inquiry
	.dbline 137
; 			BulkStausPhase = InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 138
; 			break;
	rjmp L33
L39:
	.dbline 140
; 		case 0x1a:
; 			SCSICMD_ModeSense06();
	rcall _SCSICMD_ModeSense06
	.dbline 141
;                		BulkStausPhase=InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 142
;                		break;
	rjmp L33
L40:
	.dbline 144
; 		case 0x1e:
; 			SCSICMD_PreventAllowMediumRemoval();
	rcall _SCSICMD_PreventAllowMediumRemoval
	.dbline 145
;                		BulkStausPhase=InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 146
;                		break;
	rjmp L33
L41:
	.dbline 148
; 		case 0x23:
; 			SCSICMD_ReadFormatCapacities();
	rcall _SCSICMD_ReadFormatCapacities
	.dbline 149
; 			BulkStausPhase = InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 150
; 			break;
	rjmp L33
L42:
	.dbline 152
; 		case 0x25:
; 			SCSICMD_ReadCapacity();
	rcall _SCSICMD_ReadCapacity
	.dbline 153
;                		BulkStausPhase=InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 154
;               		break;
	rjmp L33
L43:
	.dbline 156
; 		case 0x28:
; 			SCSICMD_Read10();
	rcall _SCSICMD_Read10
	.dbline 157
;                		BulkStausPhase=InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 158
;                		break;
	rjmp L33
L44:
	.dbline 160
; 		case 0x2a:
; 			SCSICMD_Write10();
	rcall _SCSICMD_Write10
	.dbline 161
;                		BulkPhase =OutDataPhase;
	ldi R24,1
	sts _BulkPhase,R24
	.dbline 162
;                		break;
	rjmp L33
L45:
	.dbline 164
; 		case 0x2f:
; 			SCSICMD_Verify10();
	rcall _SCSICMD_Verify10
	.dbline 165
;                		BulkStausPhase=InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 166
;                		break;
	rjmp L33
L46:
	.dbline 168
; 		case 0x5a:
; 			SCSICMD_ModeSense10();
	rcall _SCSICMD_ModeSense10
	.dbline 169
;                		BulkStausPhase=InCSWPhase;
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 170
;                		break;
	rjmp L33
L32:
	.dbline 172
	ldi R24,8
	sts _BulkStausPhase,R24
	.dbline 173
L33:
	.dbline -2
	.dbline 175
; 		default:
; 			BulkStausPhase=InCSWPhase;
; 			break;
; 	}
; }
L24:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbfunc s Usb_BoBulkInData _Usb_BoBulkInData fI
	.even
_Usb_BoBulkInData::
	.dbline -1
	.dbline 197
	.dbline 198
	lds R17,_WritePageBuff+1
	lds R16,_WritePageBuff
	rcall _flashWrite
	.dbline 199
	lds R3,_WriteResidueVal+1
	lds R2,_WriteResidueVal
	tst R2
	brne L55
	tst R3
	brne L55
	.dbline 199
	.dbline 200
	clr R2
	sts _BulkPhase,R2
	.dbline 201
L55:
	.dbline -2
	.dbline 202
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
; 
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
; 
; **函数功能:PC输入数据处理
; **函数输入参数及说明:无
; 
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
; 
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void Usb_BoBulkInData(void){
; 	flashWrite(WritePageBuff);
; 	if(WriteResidueVal == 0){
; 		BulkPhase = CommandPhase;
; 	}
; }
L54:
	.dbline 0 ; func end
	ret
	.dbfunc s Bulk_In_Packet _Bulk_In_Packet fI
	.even
_Bulk_In_Packet::
	.dbline -1
	.dbline 224
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
; 
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
; 
; **函数功能:回应批量传输包
; **函数输入参数及说明:无
; 
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
; 
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void Bulk_In_Packet(void){
	.dbline 225
; 	if(XmtBuff.wrLength != 0)
	lds R3,_XmtBuff+64+1
	lds R2,_XmtBuff+64
	tst R2
	brne X11
	tst R3
	breq L58
X11:
	.dbline 226
; 		BULK_submit();
	rcall _BULK_submit
	rjmp L59
L58:
	.dbline 227
; 	else if(ReadResidueVal != 0)
	ldi R16,<L63
	ldi R17,>L63
	rcall lpm32
	lds R5,_ReadResidueVal+2+1
	lds R4,_ReadResidueVal+2
	lds R3,_ReadResidueVal+1
	lds R2,_ReadResidueVal
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	breq L61
	.dbline 228
; 		flashRead();
	rcall _flashRead
	rjmp L62
L61:
	.dbline 229
; 	else if(BulkStausPhase == InCSWPhase){
	lds R24,_BulkStausPhase
	cpi R24,8
	brne L64
	.dbline 229
	.dbline 230
; 		XmtBuff.p_p=0;
	clr R2
	sts _XmtBuff+70,R2
	.dbline 231
; 		XmtBuff.p = (unsigned char *)&Usb_Csw;
	ldi R24,<_Usb_Csw
	ldi R25,>_Usb_Csw
	sts _XmtBuff+68+1,R25
	sts _XmtBuff+68,R24
	.dbline 232
; 		XmtBuff.wrLength = 13;
	ldi R24,13
	ldi R25,0
	sts _XmtBuff+64+1,R25
	sts _XmtBuff+64,R24
	.dbline 233
; 		BULK_submit();
	rcall _BULK_submit
	.dbline 234
; 	}
L64:
L62:
L59:
	.dbline -2
	.dbline 235
; }
L57:
	.dbline 0 ; func end
	ret
	.dbfunc s SCSICMD_Inquiry _SCSICMD_Inquiry fI
	.even
_SCSICMD_Inquiry::
	.dbline -1
	.dbline 257
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
; 
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
; 
; **函数功能:SCSI命令
; **函数输入参数及说明:无
; 
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
; 
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_Inquiry(void){
	.dbline 258
; 	Usb_Set_Csw();
	rcall _Usb_Set_Csw
	.dbline 259
; 	Usb_Csw.dCSWDataResidue[1] = 0;
	clr R2
	sts _Usb_Csw+8+1,R2
	.dbline 260
; 	Usb_Csw.dCSWDataResidue[2] = 0;
	sts _Usb_Csw+8+2,R2
	.dbline 261
; 	Usb_Csw.dCSWDataResidue[3] = 0;
	sts _Usb_Csw+8+3,R2
	.dbline 262
; 	Usb_Csw.dCSWDataResidue[4] = 0;
	sts _Usb_Csw+8+4,R2
	.dbline 263
; 	XmtBuff.pp = SCSI_INQUIRY;
	ldi R24,<_SCSI_INQUIRY
	ldi R25,>_SCSI_INQUIRY
	sts _XmtBuff+66+1,R25
	sts _XmtBuff+66,R24
	.dbline 264
; 	XmtBuff.wrLength = 36;
	ldi R24,36
	ldi R25,0
	sts _XmtBuff+64+1,R25
	sts _XmtBuff+64,R24
	.dbline 265
; 	BULK_submit();
	rcall _BULK_submit
	.dbline -2
	.dbline 266
; }
L69:
	.dbline 0 ; func end
	ret
	.dbfunc s Usb_Set_Csw _Usb_Set_Csw fI
	.even
_Usb_Set_Csw::
	.dbline -1
	.dbline 288
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
; 
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
; 
; **函数功能:创建CSW数据块
; **函数输入参数及说明:无
; 
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
; 
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void Usb_Set_Csw(void){
	.dbline 289
; 	Usb_Csw.dCSWSignature[0] = 0x55;
	ldi R24,85
	sts _Usb_Csw,R24
	.dbline 290
; 	Usb_Csw.dCSWSignature[1] = 0x53;
	ldi R24,83
	sts _Usb_Csw+1,R24
	.dbline 291
; 	Usb_Csw.dCSWSignature[2] = 0x42;
	ldi R24,66
	sts _Usb_Csw+2,R24
	.dbline 292
; 	Usb_Csw.dCSWSignature[3] = 0x53;
	ldi R24,83
	sts _Usb_Csw+3,R24
	.dbline 293
; 	Usb_Csw.dCSWTag[0] = XmtBuff.b[4];
	lds R2,_XmtBuff+4
	sts _Usb_Csw+4,R2
	.dbline 294
; 	Usb_Csw.dCSWTag[1] = XmtBuff.b[5];
	lds R2,_XmtBuff+5
	sts _Usb_Csw+4+1,R2
	.dbline 295
; 	Usb_Csw.dCSWTag[2] = XmtBuff.b[6];
	lds R2,_XmtBuff+6
	sts _Usb_Csw+4+2,R2
	.dbline 296
; 	Usb_Csw.dCSWTag[3] = XmtBuff.b[7];
	lds R2,_XmtBuff+7
	sts _Usb_Csw+4+3,R2
	.dbline 297
; 	Usb_Csw.bCSWStatus = 0;
	clr R2
	sts _Usb_Csw+12,R2
	.dbline -2
	.dbline 298
; }
L80:
	.dbline 0 ; func end
	ret
	.dbfunc s SCSICMD_ReadFormatCapacities _SCSICMD_ReadFormatCapacities fI
	.even
_SCSICMD_ReadFormatCapacities::
	.dbline -1
	.dbline 320
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
; 
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
; 
; **函数功能:SCSI命令
; **函数输入参数及说明:无
; 
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
; 
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_ReadFormatCapacities(void){
	.dbline 321
; 	Usb_Set_Csw();
	rcall _Usb_Set_Csw
	.dbline 322
; 	Usb_Csw.dCSWDataResidue[0]=(unsigned char)(dCBWDaTrLen-0x0c);    
	lds R25,_dCBWDaTrLen+1
	lds R24,_dCBWDaTrLen
	sbiw R24,12
	sts _Usb_Csw+8,R24
	.dbline 323
; 	Usb_Csw.dCSWDataResidue[1]=0;
	clr R2
	sts _Usb_Csw+8+1,R2
	.dbline 324
; 	Usb_Csw.dCSWDataResidue[2]=0;
	sts _Usb_Csw+8+2,R2
	.dbline 325
; 	Usb_Csw.dCSWDataResidue[3]=0;   
	sts _Usb_Csw+8+3,R2
	.dbline 326
;         XmtBuff.pp = SCSIDATA_ReadFormatCapacities;
	ldi R24,<_SCSIDATA_ReadFormatCapacities
	ldi R25,>_SCSIDATA_ReadFormatCapacities
	sts _XmtBuff+66+1,R25
	sts _XmtBuff+66,R24
	.dbline 327
; 	XmtBuff.wrLength = 12;
	ldi R24,12
	ldi R25,0
	sts _XmtBuff+64+1,R25
	sts _XmtBuff+64,R24
	.dbline 328
; 	BULK_submit();
	rcall _BULK_submit
	.dbline -2
	.dbline 329
; }
L96:
	.dbline 0 ; func end
	ret
	.dbfunc s SCSICMD_ReadCapacity _SCSICMD_ReadCapacity fI
	.even
_SCSICMD_ReadCapacity::
	.dbline -1
	.dbline 351
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
; 
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
; 
; **函数功能:SCSI命令
; **函数输入参数及说明:无
; 
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
; 
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void SCSICMD_ReadCapacity(void){
	.dbline 352
; 	Usb_Set_Csw();  
	rcall _Usb_Set_Csw
	.dbline 353
;        Usb_Csw.dCSWDataResidue[1] = 0;
	clr R2
	sts _Usb_Csw+8+1,R2
	.dbline 354
; 	Usb_Csw.dCSWDataResidue[2] = 0;
	sts _Usb_Csw+8+2,R2
	.dbline 355
; 	Usb_Csw.dCSWDataResidue[3] = 0;
	sts _Usb_Csw+8+3,R2
	.dbline 356
; 	Usb_Csw.dCSWDataResidue[4] = 0;  
	sts _Usb_Csw+8+4,R2
	.dbline 357
; 	XmtBuff.pp = SCSIDATA_ReadCapacity;
	ldi R24,<_SCSIDATA_ReadCapacity
	ldi R25,>_SCSIDATA_ReadCapacity
	sts _XmtBuff+66+1,R25
	sts _XmtBuff+66,R24
	.dbline 358
; 	XmtBuff.wrLength = 8; 

⌨️ 快捷键说明

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