📄 subp.lst
字号:
580 1
581 1 // return;
582 1 }
583
584 //*****************************************************************************************
585 // EP0's IN Token Arming (using Set A)
586 //*****************************************************************************************
587 void EP0A_IN_Arm( unsigned char buf_adr, unsigned char len, unsigned char seq)
588 {
589 1 SL811Write(EP0AAddress,buf_adr); // ep0 address buffer start adress
590 1 SL811Write(EP0AXferLen,len); // max length of transfer allowed
591 1
592 1 if(seq)
593 1 { SL811Write(EP0AControl,DATA1_IN); // armed to transmit to host, DATA1
594 2 P35_LED=0; }
595 1
596 1 else
597 1 { SL811Write(EP0AControl,DATA0_IN); // armed to transmit to host, DATA0
598 2 }
599 1 }
600
601 //*****************************************************************************************
602 // EP0's SETUP/OUT Token Arming (using Set A)
603 //*****************************************************************************************
604 void EP0A_OUT_Arm( unsigned char len)
605 {
606 1 //SL811Write(cDATASet,0);
607 1 SL811Write(EP0AAddress,EP0A_Slave_Buf); // ep0 address buffer start adress after 64 unsigned char
608 1 SL811Write(EP0AXferLen,len); // max length of transfer allowed
609 1 SL811Write(EP0AControl,DATA0_OUT); // armed to receive from host 03
610 1 }
611
C51 COMPILER V7.20 SUBP 06/11/2004 19:40:15 PAGE 11
612 //*****************************************************************************************
613 // SL811S variables initialization
614 //*****************************************************************************************
615 void sl811s_init(void)
616 {
617 1 int i;
618 1
619 1 //----------------------------
620 1 // Application-Specific
621 1 //----------------------------
622 1 P1 |=AUDIO_KEYS ; // Clear Active LED
623 1 // P3 |= ACTIVE_LED; //PORTX_LED; // turn off all LEDs
624 1 P35_LED=1;
625 1 flags = 0; // clear flag
626 1 sof_cnt = 0; // sof counter equal zero
627 1 ep1_toggle = 0; // ep1 toggle state
628 1 // Audio_Keys = 0; // clear Audio Control Keys
629 1 // Prev_Audio_Keys = 0;
630 1 // Internet_Keys = 0; // clear Internet Control Keys
631 1 // Prev_Internet_Keys = 0;
632 1
633 1 //----------------------------
634 1 // SL811S-Specific
635 1 //----------------------------
636 1 BUS_POWERED = 1; // define as a bus powered device
637 1 Slave_USBaddr = 0; // set to default USB address zero
638 1 Slave_ConfigVal = 0; // default device config value
639 1 Slave_Protocol = 0; // HID class default boot protocol
640 1 Slave_IdleRate = 0; // HID class default idle rate
641 1 Slave_RemoteWU = 0; // device remote wakeup support
642 1 Slave_inEPstall = 0; // EP0 ~ EP7's IN
643 1 Slave_outEPstall = 0; // EP0 ~ EP7's OUT
644 1 // SL811Write(cSOFcnt,0x00);
645 1
646 1 for(i=0;i<MAXIFCNUM;i++)//8 // reset alternate setting
647 1 Slave_IfcAlt[i] = 0;
648 1 for(i=0;i<EP0_LEN;i++) // clear EP0 Buffer
649 1 SL811Write(EP0A_Slave_Buf+i,0);
650 1 for(i=0;i<EP1_LEN;i++) // clear EP1 Buffer
651 1 SL811Write(EP1A_Slave_Buf+i,0);
652 1
653 1 SL811Write(USBAddress,0x00); //07h on power on and reset usb address set to 00
654 1 SL811Write(IntEna,0x63); //06h enable SOF, EP0, EP1, USB Reset interrupts
655 1 SL811Write(IntStatus,0xff); //0dh clear all interrupts
656 1 SL811Write(CtrlReg,0x21);
657 1 EP0A_OUT_Arm(EP0_LEN); // ready to receive from host 64=ep0_len
658 1 }
659
660 //*****************************************************************************************
661 // 8051 variables initialization
662 //*****************************************************************************************
663 void C51_init(void)
664 {
665 1 // ISOCTL |= 0x01; // free up iso endpoints for external data space (1024)
666 1 //----------------------------
667 1 // Variable initialization
668 1 //----------------------------
669 1 SL811H_DATA = 0x00; //FF00
670 1 SL811H_ADDR = 0x00; //FE00
671 1
672 1 //----------------------------
673 1 // 8051's I/Os Setup
C51 COMPILER V7.20 SUBP 06/11/2004 19:40:15 PAGE 12
674 1 //----------------------------
675 1 //PORTACFG = 0x00; // Set to output
676 1 //OEA = 0xFF; // Set PA7~PA0(Output)
677 1 P0=0xFF; // Default output high
678 1
679 1 // PORTBCFG = 0x20; // Select i/o function for PB7~PB0, except PB5-INT#5
680 1 // OEB = 0xDF; // Set PB6(0),PB4(I),PB1(O),PB0(O) - PB2(0),PB3(O),PB5(I),PB7(O)
681 1 P1=0xFF; // Default output high
682 1 P2=0xff;
683 1 // PORTCCFG = 0xC0; // Select alternate function nWR(PC6) & nRD(PC7),
684 1 // OEC = 0x3F; // Set PC5~PC0 (Output) For LEDs only
685 1 // OUTC = 0x3F; // Default output high
686 1 // OEC = 0x38; // Set PC5~PC3(Output) For LEDs, PC2~PC0 (Input) For Audio Buttons
687 1 P3=0xff; // Default output high
688 1
689 1 // EA = 1; // enable 8051 interrupt
690 1 //EIEX5 = 1; // enable INT#5 for toggle switch
691 1 // EXIF &= 0x7F; // clear INT#5 flag
692 1 //----------------------------
693 1 // SL811ST hardware reset
694 1 //----------------------------
695 1 // P3 &= ~nRESET; // reset SL811HST
696 1 P34_RES=0;
697 1 Delay(); // for 5ms
698 1 P34_RES=1;
699 1 // P3 |= nRESET; // clear reset
700 1
701 1 // OUTB &= ~nHOST_SLAVE_MODE; // set to Host mode
702 1 // P3 |= nHOST_SLAVE_MODE; // set to Slave mode
703 1 // P33_SLA=1;
704 1 SL811Write(cSOFcnt,0x40); //LowSpeed(0x40),FullSpeed(0x00)
705 1 SL811Write(IntEna,0x40); // enable USB Reset interrupt
706 1 SL811Write(CtrlReg,0x21); // enable USB, FullSpeed(01);LowSpeed(21h)
707 1 SL811Write(IntStatus,0xFF); // clear all interrupts
708 1 //EP0A_OUT_Arm(EP0_LEN);
709 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1937 ----
CONSTANT SIZE = 193 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 43 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 + -