📄 subp.lst
字号:
498 5 // if(( BYTE)dReq.wValue == HID_REPORT) // end of a report descp, indicate
499 5 // {
500 5 // enum_done = 1; // end of complete enumeration
501 5 // P3 &= ~ACTIVE_LED; // Turn on Active LED
502 5 //P35_LED=0;
503 5 // }
504 5 }
505 4 }
506 3
507 3 }
508 2 }
509 1 //----------------------------------------------------------------------------------------
510 1 // End of ACK received
511 1 //----------------------------------------------------------------------------------------
512 1
513 1 //----------------------------------------------------------------------------------------
514 1 // If a STALL was sent out by device, it will still interrupt, but
515 1 // STALL bit in status register does not reflect this when in slave mode.
516 1 //----------------------------------------------------------------------------------------
517 1 else if( SL811Read(EP0AControl)&0x20 ) // check for previous stall sent
518 1 EP0A_OUT_Arm(EP0_LEN); // get ready for next SETUP token
519 1
520 1
521 1 // return;
522 1 }
523
524 //*****************************************************************************************
525 // EP0's IN Token Arming (using Set A)
526 //*****************************************************************************************
527 void EP0A_IN_Arm( BYTE buf_adr, BYTE len, BYTE seq)
528 {
529 1 SL811Write(EP0AAddress,buf_adr); // ep0 address buffer start adress
530 1 SL811Write(EP0AXferLen,len); // max length of transfer allowed
531 1
532 1 if(seq)
533 1 { SL811Write(EP0AControl,DATA1_IN); // armed to transmit to host, DATA1
534 2 P35_LED=0; }
535 1
536 1 else
537 1 { SL811Write(EP0AControl,DATA0_IN); // armed to transmit to host, DATA0
538 2 }
539 1 }
540
541 //*****************************************************************************************
542 // EP0's SETUP/OUT Token Arming (using Set A)
543 //*****************************************************************************************
544 void EP0A_OUT_Arm( BYTE len)
545 {
546 1 //SL811Write(cDATASet,0);
547 1 SL811Write(EP0AAddress,EP0A_Slave_Buf); // ep0 address buffer start adress after 64 BYTE
548 1 SL811Write(EP0AXferLen,len); // max length of transfer allowed
549 1 SL811Write(EP0AControl,DATA0_OUT); // armed to receive from host 03
550 1 }
551
C51 COMPILER V7.20 SUBP 07/05/2004 23:23:35 PAGE 10
552 //*****************************************************************************************
553 // SL811S variables initialization
554 //*****************************************************************************************
555 void sl811s_init(void)
556 {
557 1 int i;
558 1
559 1 //----------------------------
560 1 // Application-Specific
561 1 //----------------------------
562 1 P1 |=AUDIO_KEYS ; // Clear Active LED
563 1 // P3 |= ACTIVE_LED; //PORTX_LED; // turn off all LEDs
564 1 P35_LED=1;
565 1 flags = 0; // clear flag
566 1 sof_cnt = 0; // sof counter equal zero
567 1 ep1_toggle = 0; // ep1 toggle state
568 1 // Audio_Keys = 0; // clear Audio Control Keys
569 1 // Prev_Audio_Keys = 0;
570 1 // Internet_Keys = 0; // clear Internet Control Keys
571 1 // Prev_Internet_Keys = 0;
572 1
573 1 //----------------------------
574 1 // SL811S-Specific
575 1 //----------------------------
576 1 BUS_POWERED = 1; // define as a bus powered device
577 1 Slave_USBaddr = 0; // set to default USB address zero
578 1 Slave_ConfigVal = 0; // default device config value
579 1 Slave_Protocol = 0; // HID class default boot protocol
580 1 Slave_IdleRate = 0; // HID class default idle rate
581 1 Slave_RemoteWU = 0; // device remote wakeup support
582 1 Slave_inEPstall = 0; // EP0 ~ EP7's IN
583 1 Slave_outEPstall = 0; // EP0 ~ EP7's OUT
584 1 // SL811Write(cSOFcnt,0x00);
585 1
586 1 for(i=0;i<MAXIFCNUM;i++)//8 // reset alternate setting
587 1 Slave_IfcAlt[i] = 0;
588 1 for(i=0;i<EP0_LEN;i++) // clear EP0 Buffer
589 1 SL811Write(EP0A_Slave_Buf+i,0);
590 1 for(i=0;i<EP1_LEN;i++) // clear EP1 Buffer
591 1 SL811Write(EP1A_Slave_Buf+i,0);
592 1
593 1 SL811Write(USBAddress,0x00); //07h on power on and reset usb address set to 00
594 1 SL811Write(IntEna,0x63); //06h enable SOF, EP0, EP1, USB Reset interrupts
595 1 SL811Write(IntStatus,0xff); //0dh clear all interrupts
596 1 //SL811Write(CtrlReg,0x01);
597 1 EP0A_OUT_Arm(EP0_LEN); // ready to receive from host 64=ep0_len
598 1 }
599
600 //*****************************************************************************************
601 // 8051 variables initialization
602 //*****************************************************************************************
603 void C51_init(void)
604 {
605 1 // ISOCTL |= 0x01; // free up iso endpoints for external data space (1024)
606 1 //----------------------------
607 1 // Variable initialization
608 1 //----------------------------
609 1 SL811H_DATA = 0x00; //FF00
610 1 SL811H_ADDR = 0x00; //FE00
611 1
612 1 //----------------------------
613 1 // 8051's I/Os Setup
C51 COMPILER V7.20 SUBP 07/05/2004 23:23:35 PAGE 11
614 1 //----------------------------
615 1 //PORTACFG = 0x00; // Set to output
616 1 //OEA = 0xFF; // Set PA7~PA0(Output)
617 1 P0=0xFF; // Default output high
618 1
619 1 // PORTBCFG = 0x20; // Select i/o function for PB7~PB0, except PB5-INT#5
620 1 // OEB = 0xDF; // Set PB6(0),PB4(I),PB1(O),PB0(O) - PB2(0),PB3(O),PB5(I),PB7(O)
621 1 P1=0xFF; // Default output high
622 1 P2=0xff;
623 1 // PORTCCFG = 0xC0; // Select alternate function nWR(PC6) & nRD(PC7),
624 1 // OEC = 0x3F; // Set PC5~PC0 (Output) For LEDs only
625 1 // OUTC = 0x3F; // Default output high
626 1 // OEC = 0x38; // Set PC5~PC3(Output) For LEDs, PC2~PC0 (Input) For Audio Buttons
627 1 P3=0xff; // Default output high
628 1
629 1 // EA = 1; // enable 8051 interrupt
630 1 //EIEX5 = 1; // enable INT#5 for toggle switch
631 1 // EXIF &= 0x7F; // clear INT#5 flag
632 1 //----------------------------
633 1 // SL811ST hardware reset
634 1 //----------------------------
635 1 // P3 &= ~nRESET; // reset SL811HST
636 1 P34_RES=0;
637 1 Delay(); // for 5ms
638 1 P34_RES=1;
639 1 // P3 |= nRESET; // clear reset
640 1
641 1 // OUTB &= ~nHOST_SLAVE_MODE; // set to Host mode
642 1 // P3 |= nHOST_SLAVE_MODE; // set to Slave mode
643 1 // P33_SLA=1;
644 1 // SL811Write(cSOFcnt,0x00);
645 1 SL811Write(IntEna,0x40); // enable USB Reset interrupt
646 1 SL811Write(CtrlReg,0x21); // enable USB, FullSpeed(01);LowSpeed(21h)
647 1 SL811Write(IntStatus,0xFF); // clear all interrupts
648 1 //EP0A_OUT_Arm(EP0_LEN);
649 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1587 ----
CONSTANT SIZE = 205 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 13
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -