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

📄 upsd3400_usb_app.src

📁 U-disk reference design
💻 SRC
📖 第 1 页 / 共 5 页
字号:
;   The TRANSFER LENGTH field specifies the number of contiguous logical blocks of
;   data that shall be transferred. A TRANSFER LENGTH of zero indicates that no logical
;   blocks shall be transferred. This condition shall not be considered an error.
;   Any other value indicates the number of logical blocks that shall be transferred.
;   */
;   LogicalBlockAddr  = *(unsigned long int *)&gbCBWCB[2];
			; SOURCE LINE # 513
	MOV  	LogicalBlockAddr?655+03H,gbCBWCB+05H
	MOV  	LogicalBlockAddr?655+02H,gbCBWCB+04H
	MOV  	LogicalBlockAddr?655+01H,gbCBWCB+03H
	MOV  	LogicalBlockAddr?655,gbCBWCB+02H
; 
;   PhysicalDataAddr =  ((unsigned int )(LogicalBlockAddr << 9)) | 0x8000;
			; SOURCE LINE # 515
	MOV  	R7,LogicalBlockAddr?655+03H
	MOV  	R6,LogicalBlockAddr?655+02H
	MOV  	R5,LogicalBlockAddr?655+01H
	MOV  	R4,LogicalBlockAddr?655
	MOV  	R0,#09H
	LCALL	?C?LSHL
	MOV  	A,R6
	ORL  	A,#080H
	MOV  	PhysicalDataAddr,A
	MOV  	PhysicalDataAddr+01H,R7
;   UPSD_xreg.PAGE   =   (unsigned char)(LogicalBlockAddr >> 6);
			; SOURCE LINE # 516
	MOV  	R7,LogicalBlockAddr?655+03H
	MOV  	R6,LogicalBlockAddr?655+02H
	MOV  	R5,LogicalBlockAddr?655+01H
	MOV  	R4,LogicalBlockAddr?655
	MOV  	R0,#06H
	LCALL	?C?ULSHR
	MOV  	DPTR,#UPSD_xreg+0E0H
	MOV  	A,R7
	MOVX 	@DPTR,A
;   TransferLength   =  *(unsigned int *)&gbCBWCB[7];
			; SOURCE LINE # 517
	MOV  	TransferLength,gbCBWCB+07H
	MOV  	TransferLength+01H,gbCBWCB+08H
;   TransferLength   = TransferLength*8;
			; SOURCE LINE # 518
	MOV  	A,TransferLength+01H
	MOV  	R6,TransferLength
	MOV  	R0,#03H
?C0122:
	CLR  	C
	RLC  	A
	XCH  	A,R6
	RLC  	A
	XCH  	A,R6
	DJNZ 	R0,?C0122
	MOV  	TransferLength+01H,A
	MOV  	TransferLength,R6
; 
;   gbBulkPipeStage  = BS_DATA_PHASE;
			; SOURCE LINE # 520
	MOV  	gbBulkPipeStage,#01H
; 
;   if (gbCBWFlags & 0x80)                     // READ command
			; SOURCE LINE # 522
	MOV  	A,gbCBWFlags
	JNB  	ACC.7,?C0056
;    {
			; SOURCE LINE # 523
;     ReadBufferFromFlash();
			; SOURCE LINE # 524
	LCALL	ReadBufferFromFlash
;    }
			; SOURCE LINE # 525
;  }
			; SOURCE LINE # 526
?C0056:
	RET  	
; END OF DoReadWrite

; 
; void OnRequestSense(void)

	RSEG  ?PR?OnRequestSense?UPSD3400_USB_APP
OnRequestSense:
			; SOURCE LINE # 528
; /*--------------------------------------------------------------------
;  Function   : void OnRequestSense()
;  Parameters : none
;  Description: Handler for RequestSense command
;         The REQUEST SENSE command requests that the device server
;               transfer sense data to the application client.
; ---------------------------------------------------------------------*/
;  {
			; SOURCE LINE # 536
;   USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN
			; SOURCE LINE # 537
	MOV  	USEL,#01H
; 
;   USB_FIFO[ 0] = 0x70;
			; SOURCE LINE # 539
	MOV  	DPTR,#07000H
	MOV  	A,#070H
	MOVX 	@DPTR,A
;   USB_FIFO[ 1] = 0x00;
			; SOURCE LINE # 540
	INC  	DPTR
	CLR  	A
	MOVX 	@DPTR,A
;   USB_FIFO[ 2] = 0x03;                       //sense key
			; SOURCE LINE # 541
	INC  	DPTR
	MOV  	A,#03H
	MOVX 	@DPTR,A
;   USB_FIFO[ 3] = 0x00;
			; SOURCE LINE # 542
	INC  	DPTR
	CLR  	A
	MOVX 	@DPTR,A
;   USB_FIFO[ 4] = 0x00;
			; SOURCE LINE # 543
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[ 5] = 0x00;
			; SOURCE LINE # 544
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[ 6] = 0x00;
			; SOURCE LINE # 545
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[ 7] = 0x0A;                       //additional Length
			; SOURCE LINE # 546
	INC  	DPTR
	MOV  	A,#0AH
	MOVX 	@DPTR,A
;   USB_FIFO[ 8] = 0x00;
			; SOURCE LINE # 547
	INC  	DPTR
	CLR  	A
	MOVX 	@DPTR,A
;   USB_FIFO[ 9] = 0x00;
			; SOURCE LINE # 548
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[10] = 0x00;
			; SOURCE LINE # 549
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[11] = 0x00;
			; SOURCE LINE # 550
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[12] = 0x30;                       //ASC
			; SOURCE LINE # 551
	INC  	DPTR
	MOV  	A,#030H
	MOVX 	@DPTR,A
;   USB_FIFO[13] = 0x01;                       //ASCQ
			; SOURCE LINE # 552
	INC  	DPTR
	MOV  	A,#01H
	MOVX 	@DPTR,A
;   USB_FIFO[14] = 0x00;
			; SOURCE LINE # 553
	INC  	DPTR
	CLR  	A
	MOVX 	@DPTR,A
;   USB_FIFO[15] = 0x00;
			; SOURCE LINE # 554
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[16] = 0x00;
			; SOURCE LINE # 555
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[17] = 0x00;
			; SOURCE LINE # 556
	INC  	DPTR
	MOVX 	@DPTR,A
; 
;   USIZE = 18;
			; SOURCE LINE # 558
	MOV  	USIZE,#012H
; 
;   gbBulkPipeStage = BS_CSW_PHASE;
			; SOURCE LINE # 560
	MOV  	gbBulkPipeStage,#02H
;  }
			; SOURCE LINE # 561
	RET  	
; END OF OnRequestSense

; 
; void OnInquiry(void)

	RSEG  ?PR?OnInquiry?UPSD3400_USB_APP
OnInquiry:
			; SOURCE LINE # 563
; /*--------------------------------------------------------------------
;  Function   : void OnInquiry()
;  Parameters : none
;  Description: Handler for Inquiry command
; ---------------------------------------------------------------------*/
;  {
			; SOURCE LINE # 569
;   USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN
			; SOURCE LINE # 570
	MOV  	USEL,#01H
;   USB_FIFO[ 0] = 0x00;
			; SOURCE LINE # 571
	MOV  	DPTR,#07000H
	CLR  	A
	MOVX 	@DPTR,A
;   USB_FIFO[ 1] = 0x80;                   //b7 = RMB = 1 if the medium is removable
			; SOURCE LINE # 572
	INC  	DPTR
	MOV  	A,#080H
	MOVX 	@DPTR,A
;   USB_FIFO[ 2] = 0x00;
			; SOURCE LINE # 573
	INC  	DPTR
	CLR  	A
	MOVX 	@DPTR,A
;   USB_FIFO[ 3] = 0x01;
			; SOURCE LINE # 574
	INC  	DPTR
	INC  	A
	MOVX 	@DPTR,A
; 
;   USB_FIFO[ 4] = 36-4;                       //additional Length (n-4)
			; SOURCE LINE # 576
	INC  	DPTR
	MOV  	A,#020H
	MOVX 	@DPTR,A
;   USB_FIFO[ 5] = 0x80;
			; SOURCE LINE # 577
	INC  	DPTR
	MOV  	A,#080H
	MOVX 	@DPTR,A
;   USB_FIFO[ 6] = 0x00;
			; SOURCE LINE # 578
	INC  	DPTR
	CLR  	A
	MOVX 	@DPTR,A
;   USB_FIFO[ 7] = 0x01;
			; SOURCE LINE # 579
	INC  	DPTR
	INC  	A
	MOVX 	@DPTR,A
; 
; #ifdef DK3400
;   USB_FIFO[ 8] = 'S';                        //Vendor Information
			; SOURCE LINE # 582
	INC  	DPTR
	MOV  	A,#053H
	MOVX 	@DPTR,A
;   USB_FIFO[ 9] = 'T';
			; SOURCE LINE # 583
	INC  	DPTR
	INC  	A
	MOVX 	@DPTR,A
;   USB_FIFO[10] = ' ';
			; SOURCE LINE # 584
	INC  	DPTR
	MOV  	A,#020H
	MOVX 	@DPTR,A
;   USB_FIFO[11] = ' ';
			; SOURCE LINE # 585
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[12] = ' ';
			; SOURCE LINE # 586
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[13] = ' ';
			; SOURCE LINE # 587
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[14] = ' ';
			; SOURCE LINE # 588
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[15] = ' ';
			; SOURCE LINE # 589
	INC  	DPTR
	MOVX 	@DPTR,A
; 
;   USB_FIFO[16] = 'D';                        //Product Identification
			; SOURCE LINE # 591
	INC  	DPTR
	MOV  	A,#044H
	MOVX 	@DPTR,A
;   USB_FIFO[17] = 'K';
			; SOURCE LINE # 592
	INC  	DPTR
	MOV  	A,#04BH
	MOVX 	@DPTR,A
;   USB_FIFO[18] = '3';
			; SOURCE LINE # 593
	INC  	DPTR
	MOV  	A,#033H
	MOVX 	@DPTR,A
;   USB_FIFO[19] = '4';
			; SOURCE LINE # 594
	INC  	DPTR
	INC  	A
	MOVX 	@DPTR,A
;   USB_FIFO[20] = '0';
			; SOURCE LINE # 595
	INC  	DPTR
	MOV  	A,#030H
	MOVX 	@DPTR,A
;   USB_FIFO[21] = '0';
			; SOURCE LINE # 596
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[22] = ' ';
			; SOURCE LINE # 597
	INC  	DPTR
	MOV  	A,#020H
	MOVX 	@DPTR,A
;   USB_FIFO[23] = 'D';
			; SOURCE LINE # 598
	INC  	DPTR
	MOV  	A,#044H
	MOVX 	@DPTR,A
;   USB_FIFO[24] = 'e';
			; SOURCE LINE # 599
	INC  	DPTR
	MOV  	A,#065H
	MOVX 	@DPTR,A
;   USB_FIFO[25] = 'm';
			; SOURCE LINE # 600
	INC  	DPTR
	MOV  	A,#06DH
	MOVX 	@DPTR,A
;   USB_FIFO[26] = 'o';
			; SOURCE LINE # 601
	INC  	DPTR
	MOV  	A,#06FH
	MOVX 	@DPTR,A
;   USB_FIFO[27] = ' ';
			; SOURCE LINE # 602
	INC  	DPTR
	MOV  	A,#020H
	MOVX 	@DPTR,A
;   USB_FIFO[28] = ' ';
			; SOURCE LINE # 603
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[29] = ' ';
			; SOURCE LINE # 604
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[30] = ' ';
			; SOURCE LINE # 605
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[31] = ' ';
			; SOURCE LINE # 606
	INC  	DPTR
	MOVX 	@DPTR,A
; 
;   USB_FIFO[32] = '1';                        //Product Revision Level
			; SOURCE LINE # 608
	INC  	DPTR
	MOV  	A,#031H
	MOVX 	@DPTR,A
;   USB_FIFO[33] = '0';
			; SOURCE LINE # 609
	INC  	DPTR
	DEC  	A
	MOVX 	@DPTR,A
;   USB_FIFO[34] = '0';
			; SOURCE LINE # 610
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[35] = '1';
			; SOURCE LINE # 611
	INC  	DPTR
	INC  	A
	MOVX 	@DPTR,A
; 
;   USIZE = 36;
			; SOURCE LINE # 613
	MOV  	USIZE,#024H
; 
; #else //DK3420
;   USB_FIFO[ 8] = 'S';                        //Vendor Information
;   USB_FIFO[ 9] = 'T';
;   USB_FIFO[10] = ' ';
;   USB_FIFO[11] = ' ';
;   USB_FIFO[12] = ' ';
;   USB_FIFO[13] = ' ';
;   USB_FIFO[14] = ' ';
;   USB_FIFO[15] = ' ';
; 
;   USB_FIFO[16] = 'D';                        //Product Identification
;   USB_FIFO[17] = 'K';
;   USB_FIFO[18] = '3';
;   USB_FIFO[19] = '4';
;   USB_FIFO[20] = '2';
;   USB_FIFO[21] = '0';
;   USB_FIFO[22] = ' ';
;   USB_FIFO[23] = 'D';
;   USB_FIFO[24] = 'e';
;   USB_FIFO[25] = 'm';
;   USB_FIFO[26] = 'o';
;   USB_FIFO[27] = ' ';
;   USB_FIFO[28] = ' ';
;   USB_FIFO[29] = ' ';
;   USB_FIFO[30] = ' ';
;   USB_FIFO[31] = ' ';
; 
;   USB_FIFO[32] = '1';                        //Product Revision Level
;   USB_FIFO[33] = '0';
;   USB_FIFO[34] = '0';
;   USB_FIFO[35] = '1';
; 
;   USIZE = 36;
; #endif
; 
;   gbBulkPipeStage = BS_CSW_PHASE;
			; SOURCE LINE # 650
	MOV  	gbBulkPipeStage,#02H
;  }
			; SOURCE LINE # 651
	RET  	
; END OF OnInquiry

; 
; void OnModeSelect6(void)

	RSEG  ?PR?OnModeSelect6?UPSD3400_USB_APP
OnModeSelect6:
			; SOURCE LINE # 653
; /******************************************************************************
;  Function   : void OnModeSelect6()
;  Parameters : (void)
;  Description: The MODE SELECT(6) command provides a means for
;               an initiator to specify device parameters to a RBC device.
;               RBC devices shall also implement the MODE SENSE(6) command.
;  ******************************************************************************/
;  {
			; SOURCE LINE # 661
;   gbCSWStatus = FAIL;
			; SOURCE LINE # 662
	MOV  	gbCSWStatus,#01H
;   ReturnCSW();                               // return status
			; SOURCE LINE # 663
	LJMP 	ReturnCSW
; END OF OnModeSelect6

;  }
; 
; void OnModeSense6(void)

	RSEG  ?PR?OnModeSense6?UPSD3400_USB_APP
OnModeSense6:
			; SOURCE LINE # 666
; /******************************************************************************
;  Function   : void OnModeSense6()
;  Parameters : none
;  Description: Handler for ModeSense6 command
;               The MODE SENSE(6) command provides a means for a device server
;               to report parameters to an application client.
;               It is a complementary command to the MODE SELECT(6) command.
;               Device servers that implement the MODE SENSE(6) command
;               shall also implement the MODE SELECT(6) command.
;  ******************************************************************************/
;  {
			; SOURCE LINE # 677
;   USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN
			; SOURCE LINE # 678
	MOV  	USEL,#01H
; 
;   USB_FIFO[ 0] = 0x03;
			; SOURCE LINE # 680
	MOV  	DPTR,#07000H
	MOV  	A,#03H
	MOVX 	@DPTR,A
;   USB_FIFO[ 1] = 0x00;
			; SOURCE LINE # 681
	INC  	DPTR
	CLR  	A
	MOVX 	@DPTR,A
;   USB_FIFO[ 2] = 0x00;
			; SOURCE LINE # 682
	INC  	DPTR
	MOVX 	@DPTR,A
;   USB_FIFO[ 3] = 0x00;
			; SOURCE LINE # 683
	INC  	DPTR
	MOVX 	@DPTR,A
; 
;   USIZE = 4;
			; SOURCE LINE # 685
	MOV  	USIZE,#04H
; 
;   gbBulkPipeStage = BS_CSW_PHASE;
			; SOURCE LINE # 687
	MOV  	gbBulkPipeStage,#02H
;  }

⌨️ 快捷键说明

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