📄 usbproto.src
字号:
; 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 + -