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

📄 upsd_usb.src

📁 DK3200 USB DEMO for KEIL C
💻 SRC
📖 第 1 页 / 共 4 页
字号:
			; SOURCE LINE # 381
; 	}
			; SOURCE LINE # 382
	SJMP 	?C0111
?C0027:
;   else if((setupPacket.wIndex.lo == 0x81) & (setupPacket.wIndex.hi == 0x00)){//endpoint1
			; SOURCE LINE # 383
	MOV  	A,R7
	JNZ  	?C0034
	MOV  	R7,#01H
	SJMP 	?C0035
?C0034:
	MOV  	R7,#00H
?C0035:
	MOV  	A,R5
	CJNE 	A,#081H,?C0036
	MOV  	R6,#01H
	SJMP 	?C0037
?C0036:
	MOV  	R6,#00H
?C0037:
	MOV  	A,R6
	ANL  	A,R7
	JZ   	?C0033
; 	if(ep1State == US_EP1STALL)
			; SOURCE LINE # 384
	MOV  	R0,#LOW (ep1State)
	MOV  	A,@R0
	CJNE 	A,#01H,?C0038
; 		UDT0 = 1;
			; SOURCE LINE # 385
	MOV  	UDT0,#01H
	SJMP 	?C0039
?C0038:
; 	else
; 		UDT0 = 0;
			; SOURCE LINE # 387
	CLR  	A
	MOV  	UDT0,A
?C0039:
; 
; 	UDT0 = 0;
			; SOURCE LINE # 389
?C0111:
	CLR  	A
	MOV  	UDT0,A
; 	}
			; SOURCE LINE # 390
	SJMP 	?C0032
?C0033:
;   else{ 
			; SOURCE LINE # 391
;   	STALL_EP0();                  // No features currently implemented, so stall EP0
			; SOURCE LINE # 392
	LCALL	STALL_EP0
;   	}
			; SOURCE LINE # 393
?C0032:
;   #pragma asm
;               orl    UCON0,#uTX0E                             ;enable transmit
	  orl    UCON0,#0x20                             ;enable transmit
;   #pragma endasm
;  }
			; SOURCE LINE # 397
	RET  	
; END OF OnGetStatus

; 
; 
; 
; 
; 
; 
; //the following function changed on April 30, 2004
; 
; static void OnClearFeature()

	RSEG  ?PR?OnClearFeature?UPSD_USB
OnClearFeature:
	USING	0
			; SOURCE LINE # 406
; /******************************************************************************
;  Function   : static void OnClearFeature()
;  Parameters : none
;  Description: Handler for CLEAR_FEATURE control requests.
;  ******************************************************************************/
;  {
			; SOURCE LINE # 412
;    if((setupPacket.wValue.lo == 0x00) & (setupPacket.wIndex.lo == 0x81)){
			; SOURCE LINE # 413
	MOV  	DPTR,#setupPacket+04H
	MOVX 	A,@DPTR
	CJNE 	A,#081H,?C0043
	MOV  	R7,#01H
	SJMP 	?C0044
?C0043:
	MOV  	R7,#00H
?C0044:
	MOV  	DPTR,#setupPacket+02H
	MOVX 	A,@DPTR
	JNZ  	?C0045
	MOV  	R6,#01H
	SJMP 	?C0046
?C0045:
	MOV  	R6,#00H
?C0046:
	MOV  	A,R6
	ANL  	A,R7
	JZ   	?C0042
; 	ep1State = US_EP1DEFAULT;
			; SOURCE LINE # 414
	CLR  	A
	MOV  	R0,#LOW (ep1State)
	MOV  	@R0,A
;   	}
			; SOURCE LINE # 415
	SJMP 	?C0047
?C0042:
;   else{ 
			; SOURCE LINE # 416
;   	STALL_EP0();                  // No features currently implemented, so stall EP0
			; SOURCE LINE # 417
	LCALL	STALL_EP0
;   	}
			; SOURCE LINE # 418
?C0047:
; 
;   #pragma asm                                // Send back 0 length DATA1 packet
;               anl    UCON0,#uRX0E+uSTALL0+uTSEQ0+uTX0E  ;mask, keep RX,TX flag
	  anl    UCON0,#0x10+0x40+0x80+0x20  ;mask, keep RX,TX flag
;               orl    UCON0,#uTSEQ0+uTX0E         ;set TSEQ bit+enable endpoint
	  orl    UCON0,#0x80+0x20         ;set TSEQ bit+enable endpoint
;   #pragma endasm
;  }
			; SOURCE LINE # 424
	RET  	
; END OF OnClearFeature

; 
; 
; 
; //the following function changed on April 30, 2004
; 
; static void OnSetFeature()

	RSEG  ?PR?OnSetFeature?UPSD_USB
OnSetFeature:
	USING	0
			; SOURCE LINE # 430
; /******************************************************************************
;  Function   : static void OnSetFeature()
;  Parameters : none
;  Description: Handler for Set_FEATURE control requests.
;  ******************************************************************************/
;  {
			; SOURCE LINE # 436
;   if((setupPacket.wValue.lo == 0x00) & (setupPacket.wIndex.lo == 0x81)){
			; SOURCE LINE # 437
	MOV  	DPTR,#setupPacket+04H
	MOVX 	A,@DPTR
	CJNE 	A,#081H,?C0050
	MOV  	R7,#01H
	SJMP 	?C0051
?C0050:
	MOV  	R7,#00H
?C0051:
	MOV  	DPTR,#setupPacket+02H
	MOVX 	A,@DPTR
	JNZ  	?C0052
	MOV  	R6,#01H
	SJMP 	?C0053
?C0052:
	MOV  	R6,#00H
?C0053:
	MOV  	A,R6
	ANL  	A,R7
	JZ   	?C0049
; 	ep1State = US_EP1STALL;
			; SOURCE LINE # 438
	MOV  	R0,#LOW (ep1State)
	MOV  	@R0,#01H
;   	}
			; SOURCE LINE # 439
	SJMP 	?C0054
?C0049:
;   else{ 
			; SOURCE LINE # 440
;   	STALL_EP0();                  // No features currently implemented, so stall EP0
			; SOURCE LINE # 441
	LCALL	STALL_EP0
;   	}
			; SOURCE LINE # 442
?C0054:
; 
;   #pragma asm                                // Send back 0 length DATA1 packet
;               anl    UCON0,#uRX0E+uSTALL0+uTSEQ0+uTX0E  ;mask, keep RX,TX flag
	  anl    UCON0,#0x10+0x40+0x80+0x20  ;mask, keep RX,TX flag
;               orl    UCON0,#uTSEQ0+uTX0E         ;set TSEQ bit+enable endpoint
	  orl    UCON0,#0x80+0x20         ;set TSEQ bit+enable endpoint
;   #pragma endasm
;  }
			; SOURCE LINE # 448
	RET  	
; END OF OnSetFeature

; 
; 
; 
; 
; 
; static void OnSetAddress()

	RSEG  ?PR?OnSetAddress?UPSD_USB
OnSetAddress:
			; SOURCE LINE # 454
; /******************************************************************************
;  Function   : static void OnSetAddress()
;  Parameters : none
;  Description: Handler for SET_ADDRESS SETUP packets
;  ******************************************************************************/
;  {
			; SOURCE LINE # 460
;   #pragma asm                                // Send back 0 length DATA1 packet
;               anl    UCON0,#uRX0E+uSTALL0+uTSEQ0+uTX0E  ;mask, keep RX,TX flag
	  anl    UCON0,#0x10+0x40+0x80+0x20  ;mask, keep RX,TX flag
;               orl    UCON0,#uTSEQ0+uTX0E         ;set TSEQ bit+enable endpoint
	  orl    UCON0,#0x80+0x20         ;set TSEQ bit+enable endpoint
;   #pragma endasm
;  }
			; SOURCE LINE # 465
	RET  	
; END OF OnSetAddress

; 
; 
; 
; 
; static void OnGetConfiguration()

	RSEG  ?PR?OnGetConfiguration?UPSD_USB
OnGetConfiguration:
	USING	0
			; SOURCE LINE # 470
; /******************************************************************************
;  Function   : static void OnGetConfiguration()
;  Parameters : none
;  Description: Handler for GET_CONFIGURATION SETUP requests.
;  ******************************************************************************/
;  {
			; SOURCE LINE # 476
;   #pragma asm                                // send one byte length packet
;               orl    UCON0,#uTSEQ0                               ;set TSEQ bit
	  orl    UCON0,#0x80                               ;set TSEQ bit
;               anl    UCON0,#uTSEQ0+uRX0E                   ;mask, keep RX flag
	  anl    UCON0,#0x80+0x10                   ;mask, keep RX flag
;               orl    UCON0,#1                                   ;set FIFO size
	  orl    UCON0,#1                                   ;set FIFO size
;   #pragma endasm
; 
;   if (usbState == US_CONFIGURED)
			; SOURCE LINE # 483
	MOV  	R0,#LOW (usbState)
	MOV  	A,@R0
	CJNE 	A,#04H,?C0057
;    {
			; SOURCE LINE # 484
;     UDT0 = 1;             //non-zero bConfigurationValue when device is configured
			; SOURCE LINE # 485
	MOV  	UDT0,#01H
;    }
			; SOURCE LINE # 486
	SJMP 	?C0058
?C0057:
;   else
;    {
			; SOURCE LINE # 488
;     UDT0 = 0;                  //The value zero shall be returned in address state
			; SOURCE LINE # 489
	CLR  	A
	MOV  	UDT0,A
;    }
			; SOURCE LINE # 490
?C0058:
;   #pragma asm
;               orl    UCON0,#uTX0E                             ;enable transmit
	  orl    UCON0,#0x20                             ;enable transmit
;   #pragma endasm
;  }
			; SOURCE LINE # 494
	RET  	
; END OF OnGetConfiguration

; 
; 
; 
; 
; static void OnSetConfiguration()

	RSEG  ?PR?OnSetConfiguration?UPSD_USB
OnSetConfiguration:
	USING	0
			; SOURCE LINE # 499
; /******************************************************************************
;  Function   : static void OnSetConfiguration()
;  Parameters : none
;  Description: Handler for SET_CONFIGURATION SETUP requests.
;  ******************************************************************************/
;  {
			; SOURCE LINE # 505
;   if (setupPacket.wValue.lo == 0)
			; SOURCE LINE # 506
	MOV  	DPTR,#setupPacket+02H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNZ  	?C0060
;    {
			; SOURCE LINE # 507
;     if (usbState == US_CONFIGURED )
			; SOURCE LINE # 508
	MOV  	R0,#LOW (usbState)
	MOV  	A,@R0
	CJNE 	A,#04H,?C0061
;      {
			; SOURCE LINE # 509
;       #pragma asm                            // Send back 0 length DATA1 packet
;               anl    UCON0,#uRX0E                          ;mask, keep RX flag
	  anl    UCON0,#0x10                          ;mask, keep RX flag
;               orl    UCON0,#uTSEQ0+uTX0E         ;set TSEQ bit+enable endpoint
	  orl    UCON0,#0x80+0x20         ;set TSEQ bit+enable endpoint
;       #pragma endasm
;      }
			; SOURCE LINE # 514
?C0061:
;     usbState = US_ADDRESSED;
			; SOURCE LINE # 515
	MOV  	R0,#LOW (usbState)
	MOV  	@R0,#03H
;    }
			; SOURCE LINE # 516
	RET  	
?C0060:
;   else
;   if (setupPacket.wValue.lo == 1)
			; SOURCE LINE # 518
	MOV  	A,R7
	CJNE 	A,#01H,?C0063
;    {
			; SOURCE LINE # 519
;     usbState = US_CONFIGURED;
			; SOURCE LINE # 520
	MOV  	R0,#LOW (usbState)
	MOV  	@R0,#04H
; 
;     #pragma asm                              // Send back 0 length DATA1 packet
;               anl    UCON0,#uRX0E                          ;mask, keep RX flag
	  anl    UCON0,#0x10                          ;mask, keep RX flag
;               orl    UCON0,#uTSEQ0+uTX0E         ;set TSEQ bit+enable endpoint
	  orl    UCON0,#0x80+0x20         ;set TSEQ bit+enable endpoint
;     #pragma endasm
; 
;     OnDeviceConfigured();
			; SOURCE LINE # 527
	LJMP 	OnDeviceConfigured
;    }
			; SOURCE LINE # 528
?C0063:
;   else
;    {
			; SOURCE LINE # 530
;     STALL_EP0();                             // stall EP0
			; SOURCE LINE # 531
	LCALL	STALL_EP0
;    }
			; SOURCE LINE # 532
;  }
			; SOURCE LINE # 533
?C0065:
	RET  	
; END OF OnSetConfiguration

; 
; 
; 
; 
; static void OnGetInterface()

	RSEG  ?PR?OnGetInterface?UPSD_USB
OnGetInterface:
			; SOURCE LINE # 538
; /******************************************************************************
;  Function   : static void OnGetInterface()
;  Parameters : none
;  Description: Handler for OnGetInterface() control requests.
;  ******************************************************************************/
;  {
			; SOURCE LINE # 544
; 
;   #pragma asm                                // Send back 0 length DATA1 packet
;               anl    UCON0,#uRX0E+uSTALL0                  ;mask, keep RX flag
	  anl    UCON0,#0x10+0x40                  ;mask, keep RX flag
;               orl    UCON0,#uTSEQ0+uTX0E         ;set TSEQ bit+enable endpoint
	  orl    UCON0,#0x80+0x20         ;set TSEQ bit+enable endpoint
;   #pragma endasm
; 
;  }
			; SOURCE LINE # 551
	RET  	
; END OF OnGetInterface

; 
; 
; 
; 
; static void OnSetInterface()

	RSEG  ?PR?OnSetInterface?UPSD_USB
OnSetInterface:
			; SOURCE LINE # 556
; /******************************************************************************
;  Function   : static void OnSetInterface()
;  Parameters : none
;  Description: Handler for SET_INTERFACE() control requests.
;  ******************************************************************************/
;  {
			; SOURCE LINE # 562
;   STALL_EP0();                  // No features currently implemented, so stall EP0
			; SOURCE LINE # 563
	LJMP 	STALL_EP0
; END OF OnSetInterface

;  }
; 
; 
; 
; 
; 
; static void OnGetDescriptor()

	RSEG  ?PR?OnGetDescriptor?UPSD_USB
OnGetDescriptor:
	USING	0
			; SOURCE LINE # 570
; /******************************************************************************
;  Function   : static void OnGetDescriptor()
;  Parameters : none
;  Description: Handler for GET_DESCRIPTOR() control requests
;  ******************************************************************************/
;  {
			; SOURCE LINE # 576
;   data unsigned int bytesRequested;
; 
;   switch (setupPacket.wValue.hi)
			; SOURCE LINE # 579
	MOV  	DPTR,#setupPacket+03H
	MOVX 	A,@DPTR
	ADD  	A,#0FEH
	JZ   	?C0070
	DEC  	A
	JZ   	?C0071
	ADD  	A,#0E2H
	JZ   	?C0074
	DEC  	A
	JNZ  	$ + 5H
	LJMP 	?C0075
	DEC  	A
	JNZ  	$ + 5H
	LJMP 	?C0076
	ADD  	A,#022H
	JZ   	$ + 5H
	LJMP 	?C0077
;    {
			; SOURCE LINE # 580
;     case
;     DT_DEVICE:
			; SOURCE LINE # 582
?C0069:
;     pTransmitBufferEP0 = (uchar*) &deviceDesc;
			; SOURCE LINE # 583
	MOV  	DPTR,#pTransmitBufferEP0
	MOV  	A,#0FFH
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (deviceDesc)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (deviceDesc)
	MOVX 	@DPTR,A
;     bytesToTransmitEP0 = sizeof(deviceDesc);
			; SOURCE LINE # 584
	MOV  	DPTR,#bytesToTransmitEP0
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#012H
	MOVX 	@DPTR,A
;     break;
			; SOURCE LINE # 585
	LJMP 	?C0068
; 
;     case
;     DT_CONFIGURATION:
			; SOURCE LINE # 588
?C0070:
;     pTransmitBufferEP0 = (uchar*) &configDesc;
			; SOURCE LINE # 589
	MOV  	DPTR,#pTransmitBufferEP0
	MOV  	A,#0FFH
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (configDesc)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (configDesc)
	MOVX 	@DPTR,A
;     bytesToTransmitEP0 = configDesc.wTotalLength.lo;
			; SOURCE LINE # 590
	MOV  	DPTR,#configDesc+02H
;     break;
			; SOURCE LINE # 591
	SJMP 	?C0112
; 
;     case
;     DT_STRING:
			; SOURCE LINE # 594
?C0071:
;     pTransmitBufferEP0 = (uchar*) stringDescTable[setupPacket.wValue.lo<4?setupPacket.wValue.lo:4];
			; SOURCE LINE # 595
	MOV  	DPTR,#setupPacket+02H
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	SUBB 	A,#04H
	JNC  	?C0072
	SJMP 	?C0073
?C0072:
	MOV  	R7,#04H
?C0073:
	MOV  	B,#03H
	MOV  	A,R7
	MUL  	AB
	ADD  	A,#LOW (stringDescTable)
	MOV  	DPL,A

⌨️ 快捷键说明

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