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

📄 chap_9.src

📁 周立功dp1581usb2.0实验仪
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	MOV  	R4,USB_Int_Flag
	MOV  	DPTR,#D14_Cntrl_Reg+018H
	LCALL	?C?LSTXDATA
; 					if(USB_Int_Flag.BITS.SUSP || USB_Int_Flag.BITS.RESET)
			; SOURCE LINE # 558
	MOV  	R7,USB_Int_Flag
	MOV  	A,R7
	RRC  	A
	RRC  	A
	RRC  	A
	ANL  	A,#01FH
	MOV  	R7,A
	MOV  	A,R7
	JNB  	ACC.0,$ + 6H
	LJMP 	?C0071
	MOV  	R7,USB_Int_Flag
	MOV  	A,R7
	JNB  	ACC.0,?C0067
	RET  	
; 						return;
; 				}
			; SOURCE LINE # 560
?C0068:
; 				USB_Int_Flag.BITS.EP0TX = 0;
			; SOURCE LINE # 561
	MOV  	R7,USB_Int_Flag+01H
	MOV  	A,R7
	ANL  	A,#0F7H
	MOV  	USB_Int_Flag+01H,A
; 			}
			; SOURCE LINE # 562
	RET  	
?C0066:
; 			else
; 			{
			; SOURCE LINE # 564
; 				Descriptor_Ptr = &Bulk_Out_Descriptor[0]; //set pointer to Bulk Out endpoint descriptor
			; SOURCE LINE # 565
	MOV  	R6,#HIGH (Bulk_Out_Descriptor)
	MOV  	R7,#LOW (Bulk_Out_Descriptor)
	MOV  	Descriptor_Ptr,R6
	MOV  	Descriptor_Ptr+01H,R7
; 				count = *Descriptor_Ptr;	//read in descriptor length
			; SOURCE LINE # 566
	MOV  	R6,Descriptor_Ptr
	MOV  	R7,Descriptor_Ptr+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	R6,#00H
	MOV  	count,R6
	MOV  	count+01H,R7
; 				D14_Cntrl_Reg.D14_ENDPT_INDEX = 1;
			; SOURCE LINE # 567
	MOV  	DPTR,#D14_Cntrl_Reg+02CH
	MOV  	A,#01H
	MOVX 	@DPTR,A
; 				if(count >= USB_Device_Request.wLength)
			; SOURCE LINE # 568
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	CLR  	C
	MOV  	A,count+01H
	SUBB 	A,R7
	MOV  	A,count
	SUBB 	A,R6
	JC   	?C0073
; 				{
			; SOURCE LINE # 569
; 					Temp = USB_Device_Request.wLength;
			; SOURCE LINE # 570
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	Temp,A
	INC  	R0
	MOV  	A,@R0
	MOV  	Temp+01H,A
; 					//send endpoint descriptor
; 					D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB = (UC) Temp;
			; SOURCE LINE # 572
	MOV  	R7,Temp+01H
	MOV  	DPTR,#D14_Cntrl_Reg+01CH
	MOV  	A,R7
	MOVX 	@DPTR,A
; 					D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = (UC) (Temp >> 8);
			; SOURCE LINE # 573
	MOV  	A,Temp
	MOV  	R7,A
	MOV  	R6,#00H
	MOV  	DPTR,#D14_Cntrl_Reg+01DH
	MOV  	A,R7
	MOVX 	@DPTR,A
; 					for(count = 0 ; count < USB_Device_Request.wLength ; count++)
			; SOURCE LINE # 574
	MOV  	count,#00H
	MOV  	count+01H,#00H
?C0074:
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	CLR  	C
	MOV  	A,count+01H
	SUBB 	A,R7
	MOV  	A,count
	SUBB 	A,R6
	JNC  	?C0075
; 					{
			; SOURCE LINE # 575
; 						D14_Cntrl_Reg.D14_DATA_PORT_LSB = *Descriptor_Ptr;
			; SOURCE LINE # 576
	MOV  	R6,Descriptor_Ptr
	MOV  	R7,Descriptor_Ptr+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	DPTR,#D14_Cntrl_Reg+020H
	MOV  	A,R7
	MOVX 	@DPTR,A
; 						Descriptor_Ptr++;
			; SOURCE LINE # 577
	INC  	Descriptor_Ptr+01H
	MOV  	A,Descriptor_Ptr+01H
	JNZ  	?C0232
	INC  	Descriptor_Ptr
?C0232:
; 					}
			; SOURCE LINE # 578
	INC  	count+01H
	MOV  	A,count+01H
	JNZ  	?C0233
	INC  	count
?C0233:
	SJMP 	?C0074
?C0075:
; 					wait_ep0tx();
			; SOURCE LINE # 579
	LCALL	wait_ep0tx
; 					ep0out_ack();
			; SOURCE LINE # 580
	LCALL	ep0out_ack
; 				}
			; SOURCE LINE # 581
	RET  	
?C0073:
; 				else
; 				{
			; SOURCE LINE # 583
; 					USB_Device_Request.wLength -= count; //send Endpoint descriptor
			; SOURCE LINE # 584
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	CLR  	C
	MOV  	A,R7
	SUBB 	A,count+01H
	MOV  	R7,A
	MOV  	A,R6
	SUBB 	A,count
	MOV  	R6,A
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	@R0,AR6
	INC  	R0
	MOV  	@R0,AR7
; 					Temp += count;
			; SOURCE LINE # 585
	MOV  	A,count+01H
	ADD  	A,Temp+01H
	MOV  	Temp+01H,A
	MOV  	A,count
	ADDC 	A,Temp
	MOV  	Temp,A
?C0078:
; 					while(count != 0)
			; SOURCE LINE # 586
	MOV  	A,count+01H
	ORL  	A,count
	JZ   	?C0079
; 					{
			; SOURCE LINE # 587
; 						D14_Cntrl_Reg.D14_DATA_PORT_LSB = *Descriptor_Ptr;
			; SOURCE LINE # 588
	MOV  	R6,Descriptor_Ptr
	MOV  	R7,Descriptor_Ptr+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	DPTR,#D14_Cntrl_Reg+020H
	MOV  	A,R7
	MOVX 	@DPTR,A
; 						count--;
			; SOURCE LINE # 589
	MOV  	A,count+01H
	DEC  	count+01H
	JNZ  	?C0234
	DEC  	count
?C0234:
; 						Descriptor_Ptr++;
			; SOURCE LINE # 590
	INC  	Descriptor_Ptr+01H
	MOV  	A,Descriptor_Ptr+01H
	JNZ  	?C0235
	INC  	Descriptor_Ptr
?C0235:
; 					}
			; SOURCE LINE # 591
	SJMP 	?C0078
?C0079:
; 					Descriptor_Ptr = &Bulk_In_Descriptor[0]; //set pointer to Bulk In endpoint descriptor
			; SOURCE LINE # 592
	MOV  	R6,#HIGH (Bulk_In_Descriptor)
	MOV  	R7,#LOW (Bulk_In_Descriptor)
	MOV  	Descriptor_Ptr,R6
	MOV  	Descriptor_Ptr+01H,R7
; 					count = *Descriptor_Ptr;	//read in descriptor length
			; SOURCE LINE # 593
	MOV  	R6,Descriptor_Ptr
	MOV  	R7,Descriptor_Ptr+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	R6,#00H
	MOV  	count,R6
	MOV  	count+01H,R7
; 					if(count >= USB_Device_Request.wLength)
			; SOURCE LINE # 594
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	CLR  	C
	MOV  	A,count+01H
	SUBB 	A,R7
	MOV  	A,count
	SUBB 	A,R6
	JC   	?C0080
; 					{
			; SOURCE LINE # 595
; 						Temp += USB_Device_Request.wLength;
			; SOURCE LINE # 596
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	MOV  	A,R7
	ADD  	A,Temp+01H
	MOV  	Temp+01H,A
	MOV  	A,R6
	ADDC 	A,Temp
	MOV  	Temp,A
; 						//send endpoint descriptor
; 						D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB = (UC) Temp;
			; SOURCE LINE # 598
	MOV  	R7,Temp+01H
	MOV  	DPTR,#D14_Cntrl_Reg+01CH
	MOV  	A,R7
	MOVX 	@DPTR,A
; 						D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = (UC) (Temp >> 8);
			; SOURCE LINE # 599
	MOV  	A,Temp
	MOV  	R7,A
	MOV  	R6,#00H
	MOV  	DPTR,#D14_Cntrl_Reg+01DH
	MOV  	A,R7
	MOVX 	@DPTR,A
; 						for(count = 0 ; count < USB_Device_Request.wLength ; count++)
			; SOURCE LINE # 600
	MOV  	count,#00H
	MOV  	count+01H,#00H
?C0081:
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	CLR  	C
	MOV  	A,count+01H
	SUBB 	A,R7
	MOV  	A,count
	SUBB 	A,R6
	JNC  	?C0082
; 						{
			; SOURCE LINE # 601
; 							D14_Cntrl_Reg.D14_DATA_PORT_LSB = *Descriptor_Ptr;
			; SOURCE LINE # 602
	MOV  	R6,Descriptor_Ptr
	MOV  	R7,Descriptor_Ptr+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	DPTR,#D14_Cntrl_Reg+020H
	MOV  	A,R7
	MOVX 	@DPTR,A
; 							Descriptor_Ptr++;
			; SOURCE LINE # 603
	INC  	Descriptor_Ptr+01H
	MOV  	A,Descriptor_Ptr+01H
	JNZ  	?C0236
	INC  	Descriptor_Ptr
?C0236:
; 						}
			; SOURCE LINE # 604
	INC  	count+01H
	MOV  	A,count+01H
	JNZ  	?C0237
	INC  	count
?C0237:
	SJMP 	?C0081
?C0082:
; 						wait_ep0tx();
			; SOURCE LINE # 605
	LCALL	wait_ep0tx
; 						ep0out_ack();
			; SOURCE LINE # 606
	LCALL	ep0out_ack
; 					}
			; SOURCE LINE # 607
	RET  	
?C0080:
; 					else
; 					{
			; SOURCE LINE # 609
; 						USB_Device_Request.wLength -= count; //send Endpoint descriptor
			; SOURCE LINE # 610
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	CLR  	C
	MOV  	A,R7
	SUBB 	A,count+01H
	MOV  	R7,A
	MOV  	A,R6
	SUBB 	A,count
	MOV  	R6,A
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	@R0,AR6
	INC  	R0
	MOV  	@R0,AR7
; 						Temp += count;
			; SOURCE LINE # 611
	MOV  	A,count+01H
	ADD  	A,Temp+01H
	MOV  	Temp+01H,A
	MOV  	A,count
	ADDC 	A,Temp
	MOV  	Temp,A
; 						D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB = (UC) Temp;
			; SOURCE LINE # 612
	MOV  	R7,Temp+01H
	MOV  	DPTR,#D14_Cntrl_Reg+01CH
	MOV  	A,R7
	MOVX 	@DPTR,A
; 						D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = (UC) (Temp >> 8);
			; SOURCE LINE # 613
	MOV  	A,Temp
	MOV  	R7,A
	MOV  	R6,#00H
	MOV  	DPTR,#D14_Cntrl_Reg+01DH
	MOV  	A,R7
	MOVX 	@DPTR,A
?C0085:
; 						while(count != 0)
			; SOURCE LINE # 614
	MOV  	A,count+01H
	ORL  	A,count
	JZ   	?C0086
; 						{
			; SOURCE LINE # 615
; 							D14_Cntrl_Reg.D14_DATA_PORT_LSB = *Descriptor_Ptr;
			; SOURCE LINE # 616
	MOV  	R6,Descriptor_Ptr
	MOV  	R7,Descriptor_Ptr+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	DPTR,#D14_Cntrl_Reg+020H
	MOV  	A,R7
	MOVX 	@DPTR,A
; 							count--;
			; SOURCE LINE # 617
	MOV  	A,count+01H
	DEC  	count+01H
	JNZ  	?C0238
	DEC  	count
?C0238:
; 							Descriptor_Ptr++;
			; SOURCE LINE # 618
	INC  	Descriptor_Ptr+01H
	MOV  	A,Descriptor_Ptr+01H
	JNZ  	?C0239
	INC  	Descriptor_Ptr
?C0239:
; 						}
			; SOURCE LINE # 619
	SJMP 	?C0085
?C0086:
; 						wait_ep0tx();
			; SOURCE LINE # 620
	LCALL	wait_ep0tx
; 						ep0out_ack();
			; SOURCE LINE # 621
	LCALL	ep0out_ack
; 					}	
			; SOURCE LINE # 622
; 				}					
			; SOURCE LINE # 623
; 			}
			; SOURCE LINE # 624
; 			break;
			; SOURCE LINE # 625
	RET  	
; 			
; 		case  6:  //获取设备限制描述符
			; SOURCE LINE # 627
?C0087:
; 			Descriptor_Ptr = &HS_Device_Qualifier[0];		//set pointer to High Speed device descriptor
			; SOURCE LINE # 628
	MOV  	R6,#HIGH (HS_Device_Qualifier)
	MOV  	R7,#LOW (HS_Device_Qualifier)
	MOV  	Descriptor_Ptr,R6
	MOV  	Descriptor_Ptr+01H,R7
; 			count = *Descriptor_Ptr;							//read in descriptor length
			; SOURCE LINE # 629
	MOV  	R6,Descriptor_Ptr
	MOV  	R7,Descriptor_Ptr+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	R6,#00H
	MOV  	count,R6
	MOV  	count+01H,R7
; 			D14_Cntrl_Reg.D14_ENDPT_INDEX = 1;
			; SOURCE LINE # 630
	MOV  	DPTR,#D14_Cntrl_Reg+02CH
	MOV  	A,#01H
	MOVX 	@DPTR,A
; 			if(USB_Device_Request.wLength < count)
			; SOURCE LINE # 631
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	CLR  	C
	MOV  	A,R7
	SUBB 	A,count+01H
	MOV  	A,R6
	SUBB 	A,count
	JNC  	?C0088
; 			{
			; SOURCE LINE # 632
; 				D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB = (UC) USB_Device_Request.wLength;
			; SOURCE LINE # 633
	MOV  	R0,#LOW (USB_Device_Request+07H)
	MOV  	A,@R0
	MOV  	R7,A
	MOV  	DPTR,#D14_Cntrl_Reg+01CH
	MOV  	A,R7
	MOVX 	@DPTR,A
; 				D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = 0;
			; SOURCE LINE # 634
	MOV  	DPTR,#D14_Cntrl_Reg+01DH
	CLR  	A
	MOVX 	@DPTR,A
; 				count = USB_Device_Request.wLength;
			; SOURCE LINE # 635
	MOV  	R0,#LOW (USB_Device_Request+06H)
	MOV  	A,@R0
	MOV  	count,A
	INC  	R0
	MOV  	A,@R0
	MOV  	count+01H,A
; 			}
			; SOURCE LINE # 636
	SJMP 	?C0090
?C0088:
; 			else
; 			{
			; SOURCE LINE # 638
; 				D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB = count;
			; SOURCE LINE # 639
	MOV  	R7,count+01H
	MOV  	DPTR,#D14_Cntrl_Reg+01CH
	MOV  	A,R7
	MOVX 	@DPTR,A
; 				D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = 0;
			; SOURCE LINE # 640
	MOV  	DPTR,#D14_Cntrl_Reg+01DH
	CLR  	A
	MOVX 	@DPTR,A
; 			}
			; SOURCE LINE # 641
?C0090:
; 			while(count != 0)
			; SOURCE LINE # 642
	MOV  	A,count+01H
	ORL  	A,count
	JZ   	?C0091
; 			{
			; SOURCE LINE # 643
; 				D14_Cntrl_Reg.D14_DATA_PORT_LSB = *Descriptor_Ptr;	//fill up FIFO
			; SOURCE LINE # 644
	MOV  	R6,Descriptor_Ptr
	MOV  	R7,Descriptor_Ptr+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	DPTR,#D14_Cntrl_Reg+020H
	MOV  	A,R7
	MOVX 	@DPTR,A
; 				Descriptor_Ptr++;
			; SOURCE LINE # 645
	INC  	Descriptor_Ptr+01H
	MOV  	A,Descriptor_Ptr+01H
	JNZ  	?C0240
	INC  	Descriptor_Ptr
?C0240:
; 				count--;
			; SOURCE LINE # 646
	MOV  	A,count+01H
	DEC  	count+01H
	JNZ  	?C0241
	DEC  	count
?C0241:
; 			};
			; SOURCE 

⌨️ 快捷键说明

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