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