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

📄 usbproto.src

📁 Comlete files for fullfile the slave USB function!
💻 SRC
📖 第 1 页 / 共 3 页
字号:
; 		code_transmit((unsigned char code *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR));
			; SOURCE LINE # 372
	MOV  	R6,#HIGH (DeviceDescr)
	MOV  	R7,#LOW (DeviceDescr)
	MOV  	R5,#012H
; 	} else if (bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE) {
			; SOURCE LINE # 373
	LJMP 	?C0088
?C0030:
	MOV  	A,bDescriptor?549
	CJNE 	A,#02H,?C0032
; 		code_transmit((unsigned char code *)&sConfiguration, CONFIG_DESCRIPTOR_LENGTH);
			; SOURCE LINE # 374
	MOV  	R6,#HIGH (sConfiguration)
	MOV  	R7,#LOW (sConfiguration)
	MOV  	R5,#022H
?C0080:
; 	} else if (bDescriptor == USB_INTERFACE_DESCRIPTOR_TYPE) {
			; SOURCE LINE # 375
	SJMP 	?C0088
?C0032:
	MOV  	A,bDescriptor?549
	CJNE 	A,#04H,?C0034
; 		code_transmit((unsigned char code *)&sConfiguration.sInterface, 
			; SOURCE LINE # 376
	MOV  	R6,#HIGH (sConfiguration+09H)
	MOV  	R7,#LOW (sConfiguration+09H)
	MOV  	R5,#09H
?C0081:
; 			sizeof(USB_INTERFACE_DESCRIPTOR));
; 	} else if (bDescriptor == USB_ENDPOINT_DESCRIPTOR_TYPE) {
			; SOURCE LINE # 378
	SJMP 	?C0088
?C0034:
	MOV  	A,bDescriptor?549
	CJNE 	A,#05H,?C0036
; 		code_transmit((unsigned char code *)&sConfiguration.sEndpoint, 
			; SOURCE LINE # 379
	MOV  	R6,#HIGH (sConfiguration+01BH)
	MOV  	R7,#LOW (sConfiguration+01BH)
	MOV  	R5,#07H
?C0082:
; 			sizeof(USB_ENDPOINT_DESCRIPTOR));
; 	} else if (bDescriptor == 0x0021) { 	/* HID Descriptor */
			; SOURCE LINE # 381
	SJMP 	?C0088
?C0036:
	MOV  	A,bDescriptor?549
	CJNE 	A,#021H,?C0038
; 		code_transmit((unsigned char code *)&sConfiguration.sHID, 
			; SOURCE LINE # 382
	MOV  	R6,#HIGH (sConfiguration+012H)
	MOV  	R7,#LOW (sConfiguration+012H)
	MOV  	R5,#09H
?C0083:
; 			sizeof(USB_HID_DESCRIPTOR));
; 	} else if (bDescriptor == 0x0022) { 	/*Report Descriptor */
			; SOURCE LINE # 384
	SJMP 	?C0088
?C0038:
	MOV  	A,bDescriptor?549
	CJNE 	A,#022H,?C0040
; 		code_transmit((unsigned char code *)&REPORT_DESCRIPTOR, 
			; SOURCE LINE # 385
	MOV  	R6,#HIGH (REPORT_DESCRIPTOR)
	MOV  	R7,#LOW (REPORT_DESCRIPTOR)
	MOV  	R5,#01CH
?C0084:
; 			sizeof(REPORT_DESCRIPTOR));
; 	} else if (bDescriptor == USB_STRING_DESCRIPTOR_TYPE) {	/* String Descriptor */
			; SOURCE LINE # 387
	SJMP 	?C0088
?C0040:
	MOV  	A,bDescriptor?549
	XRL  	A,#03H
	JNZ  	?C0042
; 		strIndex = LSB(ControlData.DeviceRequest.wValue);
			; SOURCE LINE # 388
	MOV  	A,ControlData+03H
;---- Variable 'strIndex?548' assigned to Register 'R7' ----
; 		switch (strIndex)
			; SOURCE LINE # 389
	DEC  	A
	JZ   	?C0045
	DEC  	A
	JZ   	?C0046
	DEC  	A
	JZ   	?C0047
	DEC  	A
	JZ   	?C0048
	ADD  	A,#04H
	JNZ  	?C0051
; 		{
			; SOURCE LINE # 390
; 			case 0x00:
			; SOURCE LINE # 391
?C0044:
; 				code_transmit((unsigned char code *)&LANG_ID, sizeof(LANG_ID));
			; SOURCE LINE # 392
	MOV  	R6,#HIGH (LANG_ID)
	MOV  	R7,#LOW (LANG_ID)
	MOV  	R5,#04H
?C0085:
; 				break;
			; SOURCE LINE # 393
	SJMP 	?C0088
; 			case 0x01:
			; SOURCE LINE # 394
?C0045:
; 				code_transmit((unsigned char code *)&sSTRING1, sizeof(struct STRING1));
			; SOURCE LINE # 395
	MOV  	R6,#HIGH (sSTRING1)
	MOV  	R7,#LOW (sSTRING1)
	MOV  	R5,#016H
	MOV  	R4,#00H
	LCALL	_code_transmit
; blinkLED(1);
			; SOURCE LINE # 396
	MOV  	R7,#01H
	LJMP 	_blinkLED
; 				break;
			; SOURCE LINE # 397
; 			case 0x02:
			; SOURCE LINE # 398
?C0046:
; 				code_transmit((unsigned char code *)&sSTRING2, sizeof(struct STRING2));
			; SOURCE LINE # 399
	MOV  	R6,#HIGH (sSTRING2)
	MOV  	R7,#LOW (sSTRING2)
	MOV  	R5,#01EH
?C0086:
; 				break;
			; SOURCE LINE # 400
	SJMP 	?C0088
; 			case 0x03:
			; SOURCE LINE # 401
?C0047:
; 				code_transmit((unsigned char code *)&sSTRING3, sizeof(struct STRING3));
			; SOURCE LINE # 402
	MOV  	R6,#HIGH (sSTRING3)
	MOV  	R7,#LOW (sSTRING3)
	MOV  	R5,#02EH
?C0087:
; 				break;
			; SOURCE LINE # 403
	SJMP 	?C0088
; 			case 0x04:
			; SOURCE LINE # 404
?C0048:
; 				code_transmit((unsigned char code *)&sSTRING4, sizeof(struct STRING4));
			; SOURCE LINE # 405
	MOV  	R6,#HIGH (sSTRING4)
	MOV  	R7,#LOW (sSTRING4)
	MOV  	R5,#02AH
?C0088:
	MOV  	R4,#00H
	LJMP 	_code_transmit
; 				break;
			; SOURCE LINE # 406
; 			default:
			; SOURCE LINE # 407
; 				break;
			; SOURCE LINE # 408
; 		}
			; SOURCE LINE # 409
; 	} else {
			; SOURCE LINE # 410
?C0042:
; 		stall_ep0();
			; SOURCE LINE # 411
	LCALL	stall_ep0
; 	}
			; SOURCE LINE # 412
; }
			; SOURCE LINE # 413
?C0051:
	RET  	
; END OF get_descriptor

; 
; void get_configuration(void)

	RSEG  ?PR?get_configuration?USBPROTO
get_configuration:
	USING	0
			; SOURCE LINE # 415
; {
			; SOURCE LINE # 416
; 	unsigned char c = bEPPflags.bits.configuration;
			; SOURCE LINE # 417
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	ANL  	A,#01H
	MOV  	c?650,A
; 
; 	single_transmit(&c, 1);
			; SOURCE LINE # 419
	MOV  	R3,#00H
	MOV  	R2,#HIGH (c?650)
	MOV  	R1,#LOW (c?650)
	MOV  	R5,#01H
	LJMP 	_single_transmit
; END OF get_configuration

; }
; 
; void set_configuration(void)

	RSEG  ?PR?set_configuration?USBPROTO
set_configuration:
	USING	0
			; SOURCE LINE # 422
; {
			; SOURCE LINE # 423
; 	if (ControlData.DeviceRequest.wValue == 0) {
			; SOURCE LINE # 424
	MOV  	A,ControlData+03H
	ORL  	A,ControlData+02H
	JNZ  	?C0053
; 		/* put device in unconfigured state */
; 		single_transmit(0, 0);
			; SOURCE LINE # 426
	MOV  	R3,A
	MOV  	R2,A
	MOV  	R1,A
	MOV  	R5,A
	LCALL	_single_transmit
; 		DISABLE;
			; SOURCE LINE # 427
	CLR  	EA
; 		bEPPflags.bits.configuration = 0;
			; SOURCE LINE # 428
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	ANL  	A,#0FEH
	MOV  	bEPPflags+01H,A
; 		ENABLE;
			; SOURCE LINE # 429
	SETB 	EA
; 		init_unconfig();
			; SOURCE LINE # 430
	LJMP 	init_unconfig
; 	} else if (ControlData.DeviceRequest.wValue == 1) {
			; SOURCE LINE # 431
?C0053:
	MOV  	A,ControlData+03H
	XRL  	A,#01H
	ORL  	A,ControlData+02H
	JNZ  	?C0055
; 		/* Configure device */
; 		single_transmit(0, 0);
			; SOURCE LINE # 433
	MOV  	R3,A
	MOV  	R2,A
	MOV  	R1,A
	MOV  	R5,A
	LCALL	_single_transmit
; 
; 		init_unconfig();
			; SOURCE LINE # 435
	LCALL	init_unconfig
; 		init_config();
			; SOURCE LINE # 436
	LCALL	init_config
; 		
; 		DISABLE;
			; SOURCE LINE # 438
	CLR  	EA
; 		bEPPflags.bits.configuration = 1;
			; SOURCE LINE # 439
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	ORL  	A,#01H
	MOV  	bEPPflags+01H,A
; 		ENABLE;
			; SOURCE LINE # 440
	SETB 	EA
; 	} else
			; SOURCE LINE # 441
	RET  	
?C0055:
; 		stall_ep0();
			; SOURCE LINE # 442
	LCALL	stall_ep0
; }
			; SOURCE LINE # 443
?C0057:
	RET  	
; END OF set_configuration

; 
; void get_interface(void)

	RSEG  ?PR?get_interface?USBPROTO
get_interface:
	USING	0
			; SOURCE LINE # 445
; {
			; SOURCE LINE # 446
; 	unsigned char txdat = 0;        /* Only/Current interface = 0 */
			; SOURCE LINE # 447
	CLR  	A
	MOV  	txdat?851,A
; 	single_transmit(&txdat, 1);
			; SOURCE LINE # 448
	MOV  	R3,A
	MOV  	R2,#HIGH (txdat?851)
	MOV  	R1,#LOW (txdat?851)
	MOV  	R5,#01H
	LJMP 	_single_transmit
; END OF get_interface

; }
; 
; void set_interface(void)

	RSEG  ?PR?set_interface?USBPROTO
set_interface:
	USING	0
			; SOURCE LINE # 451
; {
			; SOURCE LINE # 452
; 	if (ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0)
			; SOURCE LINE # 453
	MOV  	A,ControlData+03H
	ORL  	A,ControlData+02H
	JNZ  	?C0059
	MOV  	A,ControlData+05H
	ORL  	A,ControlData+04H
	JNZ  	?C0059
; 		single_transmit(0, 0);
			; SOURCE LINE # 454
	MOV  	R3,A
	MOV  	R2,A
	MOV  	R1,A
	MOV  	R5,A
	LJMP 	_single_transmit
?C0059:
; 	else
; 		stall_ep0();
			; SOURCE LINE # 456
	LCALL	stall_ep0
; }
			; SOURCE LINE # 457
?C0061:
	RET  	
; END OF set_interface

; 
; 
; //
; //	Class Request
; //
; void get_report (void)

	RSEG  ?PR?get_report?USBPROTO
get_report:
	USING	0
			; SOURCE LINE # 463
; {
			; SOURCE LINE # 464
; 	unsigned char c;
; 
; 	//Need to be configured to do this command
; 	if (bEPPflags.bits.configuration) {
			; SOURCE LINE # 468
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	JNB  	ACC.0,?C0063
; 		//Send current switch status to host
; //	c = Switch;
; 	single_transmit(&c, 1);
			; SOURCE LINE # 471
	MOV  	R3,#00H
	MOV  	R2,#HIGH (c?1052)
	MOV  	R1,#LOW (c?1052)
	MOV  	R5,#01H
	LCALL	_single_transmit
; 	}
			; SOURCE LINE # 472
; }
			; SOURCE LINE # 473
?C0063:
	RET  	
; END OF get_report

; 
; void get_idle (void)

	RSEG  ?PR?get_idle?USBPROTO
get_idle:
	USING	0
			; SOURCE LINE # 475
; {
			; SOURCE LINE # 476
; 	unsigned char c;
; 
; 	//Need to be configured to do this command
; 	if (bEPPflags.bits.configuration) {
			; SOURCE LINE # 480
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	JNB  	ACC.0,?C0065
; 		c = IDLE_TIME;
			; SOURCE LINE # 481
	MOV  	c?1153,IDLE_TIME
; 		single_transmit(&c, 1);
			; SOURCE LINE # 482
	MOV  	R3,#00H
	MOV  	R2,#HIGH (c?1153)
	MOV  	R1,#LOW (c?1153)
	MOV  	R5,#01H
	LCALL	_single_transmit
; 	}
			; SOURCE LINE # 483
; }
			; SOURCE LINE # 484
?C0065:
	RET  	
; END OF get_idle

; 
; void get_protocol (void)

	RSEG  ?PR?get_protocol?USBPROTO
get_protocol:
			; SOURCE LINE # 486
; {
			; SOURCE LINE # 487
; // Do nothing,we are not a boot device
; }
			; SOURCE LINE # 489
	RET  	
; END OF get_protocol

; 
; void set_report (void)

	RSEG  ?PR?set_report?USBPROTO
set_report:
	USING	0
			; SOURCE LINE # 491
; {
			; SOURCE LINE # 492
; 	unsigned char len;
; 
; 	//Need to be configured to do this command
; 	if (bEPPflags.bits.configuration) {
			; SOURCE LINE # 496
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	JNB  	ACC.0,?C0069
; 	// Get LED information from host and set LED
; 		D12_ReadLastTransactionStatus(2); /* Clear interrupt flag */
			; SOURCE LINE # 498
	MOV  	R7,#02H
	LCALL	_D12_ReadLastTransactionStatus
; 		len = D12_ReadEndpoint(2, GenEpBuf, sizeof(GenEpBuf));
			; SOURCE LINE # 499
	MOV  	R3,#00H
	MOV  	R2,#HIGH (GenEpBuf)
	MOV  	R1,#LOW (GenEpBuf)
	CLR  	A
	MOV  	?_D12_ReadEndpoint?BYTE+04H,A
	MOV  	R7,#02H
	LCALL	_D12_ReadEndpoint
;---- Variable 'len?1354' assigned to Register 'R7' ----
; 		if(len != 0)
			; SOURCE LINE # 500
	MOV  	A,R7
	JZ   	?C0069
; 			bEPPflags.bits.ep1_rxdone = 1;
			; SOURCE LINE # 501
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	ORL  	A,#04H
	MOV  	bEPPflags+01H,A
; 	}
			; SOURCE LINE # 502
; }
			; SOURCE LINE # 503
?C0069:
	RET  	
; END OF set_report

; 
; void set_idle (void)

	RSEG  ?PR?set_idle?USBPROTO
set_idle:
	USING	0
			; SOURCE LINE # 505
; {
			; SOURCE LINE # 506
; 	//Need to be configured to do this command
; 	if (bEPPflags.bits.configuration) {
			; SOURCE LINE # 508
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	JNB  	ACC.0,?C0071
; 		//IDLE_TIME = HIBYTE(ControlData.DeviceRequest.wValue);
; 		IDLE_TIME = LSB(ControlData.DeviceRequest.wValue);
			; SOURCE LINE # 510
	MOV  	A,ControlData+03H
	MOV  	IDLE_TIME,A
; 		single_transmit(0, 0);
			; SOURCE LINE # 511
	MOV  	R3,#00H
	MOV  	R2,#00H
	MOV  	R1,#00H
	CLR  	A
	MOV  	R5,A
	LCALL	_single_transmit
; 	}
			; SOURCE LINE # 512
; }
			; SOURCE LINE # 513
?C0071:
	RET  	
; END OF set_idle

; 
; void set_protocol (void)

	RSEG  ?PR?set_protocol?USBPROTO
set_protocol:
			; SOURCE LINE # 515
; {
			; SOURCE LINE # 516
; // Do nothing, we are not a boot device
; }
			; SOURCE LINE # 518
	RET  	
; END OF set_protocol

	END

⌨️ 快捷键说明

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