?? pdiusbd12.lst
字號:
713 3 bEPPflags.bits.first_get_descriptor = 0;
714 3 }
715 2 else
716 2 {
717 3 bEPPflags.bits.control_state = USB_TRANSMIT;
718 3 }
719 2 Control_Data.wCount += EP0_PACKET_SIZE;
720 2 }
721 1 else
722 1 {
723 2 if (i != 0)
724 2 {
725 3 write_endpoint_buff(1, i, Control_Data.pData + Control_Data.wCount);
726 3 Control_Data.wCount += i;
727 3 bEPPflags.bits.control_state = USB_IDLE; //== 發送完后
728 3 }
729 2 else
730 2 {
731 3 if (i == 0)
732 3 {
733 4 write_endpoint_buff(1, 0, 0); //== Send zero packet at the end ???
734 4 bEPPflags.bits.control_state = USB_IDLE;
735 4 }
736 3 }
C51 COMPILER V7.50 PDIUSBD12 11/24/2008 09:12:37 PAGE 13
737 2 }
738 1 return 0;
739 1 }
740
741 //===============================================================================//
742 //== 函 數 名:endp1_out
743 //== 功 能:端點1輸出
744 //== 說 明:
745 //== 時 間:2008.8.13 創建函數
746 //== 入口參數:無
747 //== 返 回 值:0
748 //===============================================================================//
749 unsigned char endp1_out(void)
750 {
751 1 #ifdef __DEBUG__ //== 打印調試信息
752 1 Print_Msg("Runing endp1_out()!\r\n");
753 1 #endif
754 1 D12_last_status.Register = read_last_status(2); //== Clear interrupt flag
755 1 Print_Msg("端點1輸出................................\r\n");
756 1 return 0;
757 1 }
758
759 //===============================================================================//
760 //== 函 數 名:endp1_in
761 //== 功 能:端點1輸入
762 //== 說 明:
763 //== 時 間:2008.8.13 創建函數
764 //== 入口參數:無
765 //== 返 回 值:0
766 //===============================================================================//
767 unsigned char endp1_in(void)
768 {
769 1 unsigned char code buff[8] = {1,8,3,4,5,6,7,8,};
770 1 #ifdef __DEBUG__ //== 打印調試信息
771 1 Print_Msg("Runing endp1_in()!\r\n");
772 1 #endif
773 1
774 1 D12_last_status.Register = read_last_status(3); //== Clear interrupt flag
775 1
776 1 Print_Msg("端點1輸入................................\r\n");
777 1
778 1 write_endpoint_buff(3, 8, buff);
779 1 return 0;
780 1 }
781
782 //===============================================================================//
783 //== 函 數 名:endp2_out
784 //== 功 能:端點2輸出
785 //== 說 明:
786 //== 時 間:2008.8.13 創建函數
787 //== 入口參數:無
788 //== 返 回 值:0
789 //===============================================================================//
790 unsigned char endp2_out(void)
791 {
792 1 unsigned char i, j;
793 1 unsigned char buffer[10];
794 1
795 1 #ifdef __DEBUG__ //== 打印調試信息
796 1 Print_Msg("Runing endp2_out()!\r\n");
797 1 #endif
798 1 D12_last_status.Register = read_last_status(4); //== Clear interrupt flag
C51 COMPILER V7.50 PDIUSBD12 11/24/2008 09:12:37 PAGE 14
799 1
800 1 bEPPflags.bits.usb_endp2_out = 1;
801 1 j = read_main_endpoint_buff(buffer);
802 1
803 1 #ifdef __DEBUG__ //== 打印調試信息
804 1 Print_Msg("端點2輸出................................\r\n");
805 1 Print_Msg(" 端點2的數據是:");
806 1 Print_Msg("!\r\n");
807 1
808 1 for (i=0; i<j; i+=8)
809 1 {
810 2 Print_Hex(buffer, 8);
811 2 Print_Msg(" ");
812 2 if ((i%16)==0) Print_Msg("!\r\n");
813 2 }
814 1
815 1 Print_Msg("!\r\n");
816 1 #endif
817 1
818 1 return 0;
819 1 }
820
821 //===============================================================================//
822 //== 函 數 名:endp2_in
823 //== 功 能:主端點輸入處理
824 //== 說 明:
825 //== 時 間:2008.8.13 創建函數
826 //== 入口參數:無
827 //== 返 回 值:0
828 //===============================================================================//
829 unsigned char endp2_in(void)
830 {
831 1 // unsigned char i;
832 1 unsigned char code buff[64] = {1,21,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,
833 1 22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
834 1 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,
835 1 60,61,62,63,64};
836 1
837 1 #ifdef __DEBUG__ //== 打印調試信息
838 1 Print_Msg("Runing endp2_in()!\r\n");
839 1 #endif
840 1
841 1 #ifdef __DEBUG__ //== 打印調試信息
842 1 Print_Msg("端點2輸入................................\r\n");
843 1 #endif
844 1 bEPPflags.bits.usb_endp2_in = 1;
845 1
846 1 D12_last_status.Register = read_last_status(5); //== Clear interrupt flag
847 1
848 1 // for (i=0; i<8; i++)
849 1 // usb_transmit_buf[i] = i;
850 1
851 1 // usb_transmit_buf[0] = 0x01;
852 1 // usb_transmit_buf[1] = 0x08;
853 1 // write_endpoint_buff(5, 8, usb_transmit_buf);
854 1 write_endpoint_buff(5, 64, buff);
855 1 return 0;
856 1 }
857
858 //===============================================================================//
859 //== 函 數 名:D12_isr
860 //== 功 能:D12 中斷處理
C51 COMPILER V7.50 PDIUSBD12 11/24/2008 09:12:37 PAGE 15
861 //== 說 明:
862 //== 時 間:2008.8.20 創建函數
863 //== 入口參數:無
864 //== 返 回 值:0
865 //===============================================================================//
866 unsigned char D12_isr(void)
867 {
868 1 Print_Msg("\r\n");
869 1 bEPPflags.bits.int_isr = 1;
870 1 read_interrupt_register();
871 1
872 1 if (D12_interrupt_register.int_Register != 0)
873 1 {
874 2 if (D12_interrupt_register.Interrupt.bus_reset) //== usb 總線復位
875 2 {
876 3 usb_bus_reset();
877 3 }
878 2 else
879 2 {
880 3 if (D12_interrupt_register.Interrupt.DMA_EOT) //== dma 傳輸
881 3 {
882 4 //dma_eot();
883 4 }
884 3 if (D12_interrupt_register.Interrupt.suspend_change) //== 總線掛起
885 3 {
886 4 usb_bus_suspend();
887 4 }
888 3 if (D12_interrupt_register.Interrupt.control_in_port) //== 控制端點0輸入
889 3 {
890 4 endp0_in();
891 4 }
892 3 if (D12_interrupt_register.Interrupt.control_out_port) //== 控制端點0輸出
893 3 {
894 4 endp0_out();
895 4 }
896 3 if (D12_interrupt_register.Interrupt.port_in_1) //== 端點1輸入
897 3 {
898 4 endp1_in();
899 4 }
900 3 if (D12_interrupt_register.Interrupt.port_out_1) //== 端點1輸出
901 3 {
902 4 endp1_out();
903 4 }
904 3 if (D12_interrupt_register.Interrupt.main_in_port) //== 端點2輸入
905 3 {
906 4 endp2_in();
907 4 }
908 3 if (D12_interrupt_register.Interrupt.main_out_port) //== 端點2輸出
909 3 {
910 4 endp2_out();
911 4 }
912 3 }
913 2 }
914 1 bEPPflags.bits.int_isr = 0;
915 1 return 0;
916 1 }
917
918 //===============================================================================//
919 //== 函 數 名:usb_init
920 //== 功 能:D12 初始化
921 //== 說 明:
922 //== 時 間:2008.8.13 創建函數
C51 COMPILER V7.50 PDIUSBD12 11/24/2008 09:12:37 PAGE 16
923 //== 入口參數:無
924 //== 返 回 值:0
925 //===============================================================================//
926 unsigned char usb_init(void)
927 {
928 1 #ifdef __DEBUG__ //== 打印調試信息
929 1 Print_Msg("Init D12!\r\n");
930 1 #endif
931 1 disconnect_usb(); //== 斷開USB連接
932 1 init_usb(); //== 初始化USB芯片
933 1 D12_ReadChipID();
934 1 connect_usb(); //== 連接USB
935 1 return 0;
936 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1884 ----
CONSTANT SIZE = 1246 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 43
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -