📄 test02.lst
字号:
607 7 }
608 6 else {
609 7 USB_CTL1 = 0x40;
610 7 USB_CTL1 = USB_CTL1 | len;
611 7 if(toggle) USB_CTL1 = USB_CTL1 | 0x90;
612 7 else USB_CTL1 = USB_CTL1 | 0x80;
613 7 }
C51 COMPILER V7.07 TEST02 01/26/2007 14:58:49 PAGE 11
614 6
615 6 len -= len1;
616 6 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
617 6 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
618 6 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
619 6 toggle = ~toggle;
620 6
621 6 if((len1==8) & (len==0)) {
622 7 USB_CTL1 = 0x40;
623 7 if(toggle) USB_CTL1 = USB_CTL1 | 0x10;
624 7 USB_CTL1 = USB_CTL1 | 0x80;
625 7 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
626 7 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
627 7 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
628 7 }
629 6 }
630 5 out_status();
631 5 break;
632 5
633 5 case STRING_DESC:
634 5 if(SETUPR2==0){
635 6 if((SETUPR7==0) & (SETUPR6 < str0_table[0])) len = SETUPR6;
636 6 else len = str0_table[0];
637 6 }
638 5 else if(SETUPR2==1){
639 6 if((SETUPR7==0) & (SETUPR6 < str1_table[0])) len = SETUPR6;
640 6 else len = str1_table[0];
641 6 }
642 5 else if(SETUPR2==2){
643 6 if((SETUPR7==0) & (SETUPR6 < str2_table[0])) len = SETUPR6;
644 6 else len = str2_table[0];
645 6 }
646 5 else {
647 6 USB_CTL1 = USB_CTL1 | 0x20;
648 6 USB_CTL2 = USB_CTL2 | 0x40;
649 6 len = 0;
650 6 return;
651 6 }
652 5 toggle = 1;
653 5 j=0;
654 5 USB_CTL1 = USB_CTL1 | 0x40; //enable rxd0e
655 5 while(len){
656 6 if(len > 0x08) len1 = 0x08;
657 6 else len1 = len;
658 6
659 6 USB_EPP = 0;
660 6 for(i=0;i<len1;i++,j++) {
661 7 if(SETUPR2==0) USB_EP0 = str0_table[j];
662 7 else if(SETUPR2==1) USB_EP0 = str1_table[j];
663 7 else
664 7 USB_EP0 = str2_table[j];
665 7
666 7 }
667 6 if(len >= 0x08) {
668 7 USB_CTL1 = 0x40;
669 7 if(toggle) USB_CTL1 = USB_CTL1 | 0x10;
670 7 USB_CTL1 = USB_CTL1 | 0x88;
671 7 }
672 6 else {
673 7 USB_CTL1 = 0x40;
674 7 USB_CTL1 = USB_CTL1 | len;
675 7 if(toggle) USB_CTL1 = USB_CTL1 | 0x90;
C51 COMPILER V7.07 TEST02 01/26/2007 14:58:49 PAGE 12
676 7 else USB_CTL1 = USB_CTL1 | 0x80;
677 7 }
678 6
679 6 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); re
-turn;}
680 6 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
681 6 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
682 6 toggle = ~toggle;
683 6
684 6 len -= len1;
685 6 if((len1==8) & (len==0)) {
686 7 USB_CTL1 = 0x40;
687 7 if(toggle) USB_CTL1 = USB_CTL1 | 0x10;
688 7 USB_CTL1 = USB_CTL1 | 0x80;
689 7 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
690 7 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
691 7 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
692 7 }
693 6 }
694 5 out_status();
695 5 break;
696 5
697 5 case CLASS_HID_DESC:
698 5
699 5 if((SETUPR0 == 0x81) & (SETUPR4==0)){//interface0
700 6 //assume intf0_hid_len=0x09
701 6 if((SETUPR7==0) & (SETUPR6 < 0x09)) len = SETUPR6;
702 6 else len = 0x09;
703 6
704 6 toggle = 1;
705 6 j=18;
706 6 USB_CTL1 = USB_CTL1 | 0x40; //enable rxd0e
707 6 while(len){
708 7 if(len > 0x08) len1 = 0x08;
709 7 else len1 = len;
710 7 USB_EPP = 0;
711 7 for(i=0;i<len1;i++,j++) USB_EP0 = conf_desc_table[j];
712 7 if(len >= 0x08) {
713 8 USB_CTL1 = 0x40;
714 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x98;
715 8 else USB_CTL1 = USB_CTL1 | 0x88;
716 8 }
717 7 else {
718 8 USB_CTL1 = 0x40;
719 8 USB_CTL1 = USB_CTL1 | len;
720 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x90;
721 8 else USB_CTL1 = USB_CTL1 | 0x80;
722 8 }
723 7
724 7 len -= len1;
725 7 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
726 7 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
727 7 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
728 7 toggle = ~toggle;
729 7
730 7 if((len1==8) & (len==0)) {
731 8 USB_CTL1 = 0x40;
732 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x10;
733 8 USB_CTL1 = USB_CTL1 | 0x80;
734 8 while(!(USB_STA0 & 0x02));
735 8 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
736 8 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
C51 COMPILER V7.07 TEST02 01/26/2007 14:58:49 PAGE 13
737 8 }
738 7 }
739 6 out_status();
740 6 }
741 5 else if((SETUPR0 == 0x81) & (SETUPR4==1)){//interface1
742 6 //assume intf1_hid_len=0x09
743 6 if((SETUPR7==0) & (SETUPR6 < 0x09)) len = SETUPR6;
744 6 else len = 0x09;
745 6
746 6 toggle = 1;
747 6 j=43;
748 6 USB_CTL1 = USB_CTL1 | 0x40; //enable rxd0e
749 6 while(len){
750 7 if(len > 0x08) len1 = 0x08;
751 7 else len1 = len;
752 7 USB_EPP = 0;
753 7 for(i=0;i<len1;i++,j++) USB_EP0 = conf_desc_table[j];
754 7 if(len >= 0x08) {
755 8 USB_CTL1 = 0x40;
756 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x98;
757 8 else USB_CTL1 = USB_CTL1 | 0x88;
758 8 }
759 7 else {
760 8 USB_CTL1 = 0x40;
761 8 USB_CTL1 = USB_CTL1 | len;
762 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x90;
763 8 else USB_CTL1 = USB_CTL1 | 0x80;
764 8 }
765 7
766 7 len -= len1;
767 7 while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
768 7 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
769 7 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
770 7 toggle = ~toggle;
771 7
772 7 if((len1==8) & (len==0)) {
773 8 USB_CTL1 = 0x40;
774 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x10;
775 8 USB_CTL1 = USB_CTL1 | 0x80;
776 8 while(!(USB_STA0 & 0x02));
777 8 USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
778 8 USB_STA0 = USB_STA0 | 0x02; //txd0f=0
779 8 }
780 7 }
781 6 out_status();
782 6 }
783 5 else {
784 6 USB_CTL2 = USB_CTL2 | 0x40; // Invalid request
785 6 USB_CTL1 = USB_CTL1 | 0x20;
786 6 }
787 5 break;
788 5
789 5 case CLASS_REPORT_DESC:
790 5
791 5 if((SETUPR0 == 0x81) & (SETUPR4==0)){//interface 0
792 6 //
793 6 if((SETUPR7==0)& (SETUPR6 < 64)) len = SETUPR6;
794 6 else len = 64;
795 6
796 6 toggle = 1;
797 6 j=0;
798 6 USB_CTL1 = USB_CTL1 | 0x40; //enable rxd0e
C51 COMPILER V7.07 TEST02 01/26/2007 14:58:49 PAGE 14
799 6 while(len){
800 7 if(len > 0x08) len1 = 0x08;
801 7 else len1 = len;
802 7 USB_EPP = 0;
803 7 for(i=0;i<len1;i++,j++) USB_EP0 = keyboard_report[j];
804 7 if(len >= 0x08) {
805 8 USB_CTL1 = 0x40;
806 8 if(toggle) USB_CTL1 = USB_CTL1 | 0x98;
807 8 else USB_CTL1 = USB_CTL1 | 0x88;
808 8 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -