⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kprotodma.lst

📁 USB D12驱动源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
  65   2                      stall_ep0();
  66   2              }
  67   1              else if(bNoRAM == TRUE && ioRequest.uSize > EP2_PACKET_SIZE) {
  68   2                      stall_ep0();
  69   2              }
  70   1              else {
  71   2                      if(bEPPflags.bits.dma_state == DMA_IDLE) {
  72   3                              DISABLE;
  73   3                              bEPPflags.bits.setup_dma ++;
  74   3                              ENABLE;
  75   3                      }
  76   2                      else {
  77   3                              DISABLE;
  78   3                              bEPPflags.bits.dma_state = DMA_PENDING;
  79   3                              ENABLE;
  80   3                      }
C51 COMPILER V7.06   KPROTODMA                                                             11/11/2003 20:11:02 PAGE 14  

  81   2      
  82   2              } // else if accepted request
  83   1      }
  84          
  85          void read_write_register(void)
  86          {
  87   1              unsigned char i;
  88   1      
  89   1              if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
  90   2      
  91   2                      if(bEPPflags.bits.verbose)
  92   2                              printf("Read Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
  93   2                                      ControlData.DeviceRequest.wValue,
  94   2                                      ControlData.DeviceRequest.wLength,
  95   2                                      ControlData.DeviceRequest.wIndex);
  96   2      
  97   2                      if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
  98   2                              ControlData.DeviceRequest.wValue == 0 &&
  99   2                              ControlData.DeviceRequest.wLength == 1)
 100   2                              get_firmware_version();
 101   2                      else
 102   2                      if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
 103   2                              ControlData.DeviceRequest.wValue == 0 &&
 104   2                              ControlData.DeviceRequest.wLength == 4)
 105   2                              get_buffer_size();
 106   2                      else
 107   2                              stall_ep0();
 108   2      
 109   2              }       // if read register
 110   1              else{
 111   2                      if(bEPPflags.bits.verbose) {
 112   3      
 113   3                              //printf("Write Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
 114   3                              //      ControlData.DeviceRequest.wValue,
 115   3                              //      ControlData.DeviceRequest.wLength,
 116   3                              //      ControlData.DeviceRequest.wIndex);
 117   3      
 118   3                              //printf("Data: ");
 119   3                              for(i = 0; i < ControlData.DeviceRequest.wLength; i ++)
 120   3                                      printf("0x%bx, ", *((ControlData.dataBuffer)+i));
 121   3                              printf("\n");
 122   3                      }
 123   2      
 124   2                      if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
 125   2                              ControlData.DeviceRequest.wValue == 0 &&
 126   2                              ControlData.DeviceRequest.wLength == 6)
 127   2                              setup_dma_request();
 128   2                              //stall_ep0();
 129   2                      else
 130   2                              stall_ep0();
 131   2              }       // if write register
 132   1      }
C51 COMPILER V7.06   KPROTODMA                                                             11/11/2003 20:11:02 PAGE 15  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION get_firmware_version (BEGIN)
                                           ; SOURCE LINE # 27
                                           ; SOURCE LINE # 28
                                           ; SOURCE LINE # 31
0000 750030      R     MOV     i,#030H
                                           ; SOURCE LINE # 32
0003 7B00              MOV     R3,#00H
0005 7A00        R     MOV     R2,#HIGH i
0007 7900        R     MOV     R1,#LOW i
0009 7D01              MOV     R5,#01H
000B 020000      E     LJMP    _single_transmit
             ; FUNCTION get_firmware_version (END)

             ; FUNCTION get_buffer_size (BEGIN)
                                           ; SOURCE LINE # 36
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 40
0000 E500        E     MOV     A,bNoRAM
0002 B40108            CJNE    A,#01H,?C0002
                                           ; SOURCE LINE # 41
0005 750040      R     MOV     i,#040H
                                           ; SOURCE LINE # 42
0008 E4                CLR     A
0009 F500        R     MOV     i+01H,A
                                           ; SOURCE LINE # 43
                                           ; SOURCE LINE # 44
                                           ; SOURCE LINE # 45
000B 8006              SJMP    ?C0029
000D         ?C0002:
                                           ; SOURCE LINE # 46
000D E4                CLR     A
000E F500        R     MOV     i,A
                                           ; SOURCE LINE # 47
0010 750001      R     MOV     i+01H,#01H
                                           ; SOURCE LINE # 48
0013         ?C0029:
0013 F500        R     MOV     i+02H,A
                                           ; SOURCE LINE # 49
0015 F500        R     MOV     i+03H,A
                                           ; SOURCE LINE # 50
0017         ?C0003:
                                           ; SOURCE LINE # 51
0017 7B00              MOV     R3,#00H
0019 7A00        R     MOV     R2,#HIGH i
001B 7900        R     MOV     R1,#LOW i
001D 7D04              MOV     R5,#04H
001F 020000      E     LJMP    _single_transmit
             ; FUNCTION get_buffer_size (END)

             ; FUNCTION setup_dma_request (BEGIN)
                                           ; SOURCE LINE # 55
                                           ; SOURCE LINE # 56
                                           ; SOURCE LINE # 57
0000 AE00        E     MOV     R6,ControlData+06H
0002 AF00        E     MOV     R7,ControlData+07H
0004 7400        E     MOV     A,#LOW ioRequest
0006 2500        E     ADD     A,ControlData+03H
0008 F9                MOV     R1,A
0009 7400        E     MOV     A,#HIGH ioRequest
C51 COMPILER V7.06   KPROTODMA                                                             11/11/2003 20:11:02 PAGE 16  

000B 3500        E     ADDC    A,ControlData+02H
000D A801              MOV     R0,AR1
000F FC                MOV     R4,A
0010 7D00              MOV     R5,#00H
0012 7B00              MOV     R3,#00H
0014 7A00        E     MOV     R2,#HIGH ControlData+0FH
0016 7900        E     MOV     R1,#LOW ControlData+0FH
0018 120000      E     LCALL   ?C?COPY
                                           ; SOURCE LINE # 61
001B 7800        E     MOV     R0,#LOW ioRequest+03H
001D E6                MOV     A,@R0
001E FC                MOV     R4,A
001F 08                INC     R0
0020 E6                MOV     A,@R0
0021 FD                MOV     R5,A
0022 EC                MOV     A,R4
0023 FB                MOV     R3,A
0024 AF05              MOV     R7,AR5
0026 EF                MOV     A,R7
0027 18                DEC     R0
0028 F6                MOV     @R0,A
0029 EB                MOV     A,R3
002A 08                INC     R0
002B F6                MOV     @R0,A
                                           ; SOURCE LINE # 62
002C 7800        E     MOV     R0,#LOW ioRequest
002E E6                MOV     A,@R0
002F FC                MOV     R4,A
0030 08                INC     R0
0031 E6                MOV     A,@R0
0032 FD                MOV     R5,A
0033 EC                MOV     A,R4
0034 FB                MOV     R3,A
0035 AF05              MOV     R7,AR5
0037 EF                MOV     A,R7
0038 18                DEC     R0
0039 F6                MOV     @R0,A
003A EB                MOV     A,R3
003B 08                INC     R0
003C F6                MOV     @R0,A
                                           ; SOURCE LINE # 64
003D 7800        E     MOV     R0,#LOW ioRequest+03H
003F E6                MOV     A,@R0
0040 FA                MOV     R2,A
0041 08                INC     R0
0042 E6                MOV     A,@R0
0043 FB                MOV     R3,A
0044 D3                SETB    C
0045 9400              SUBB    A,#00H
0047 EA                MOV     A,R2
0048 9401              SUBB    A,#01H
004A 4002              JC      ?C0005
                                           ; SOURCE LINE # 65
                                           ; SOURCE LINE # 66
004C 800E              SJMP    ?C0031
004E         ?C0005:
                                           ; SOURCE LINE # 67
004E E500        E     MOV     A,bNoRAM
0050 B4010C            CJNE    A,#01H,?C0007
0053 D3                SETB    C
0054 EB                MOV     A,R3
0055 9440              SUBB    A,#040H
C51 COMPILER V7.06   KPROTODMA                                                             11/11/2003 20:11:02 PAGE 17  

0057 EA                MOV     A,R2
0058 9400              SUBB    A,#00H
005A 4003              JC      ?C0007
                                           ; SOURCE LINE # 68
005C         ?C0031:
005C 020000      E     LJMP    stall_ep0
                                           ; SOURCE LINE # 69
005F         ?C0007:
                                           ; SOURCE LINE # 70
                                           ; SOURCE LINE # 71
005F AF00        E     MOV     R7,bEPPflags+01H
0061 EF                MOV     A,R7
0062 C4                SWAP    A
0063 13                RRC     A
0064 5403              ANL     A,#03H
0066 701B              JNZ     ?C0009
                                           ; SOURCE LINE # 72
0068 C2AF              CLR     EA
                                           ; SOURCE LINE # 73
006A AF00        E     MOV     R7,bEPPflags+01H
006C EF                MOV     A,R7
006D 13                RRC     A
006E 13                RRC     A
006F 13                RRC     A
0070 541F              ANL     A,#01FH
0072 FE                MOV     R6,A
0073 EF                MOV     A,R7
0074 54E7              ANL     A,#0E7H
0076 FF                MOV     R7,A
0077 EE                MOV     A,R6
0078 04                INC     A
0079 5403              ANL     A,#03H
007B 33                RLC     A
007C 33                RLC     A
007D 33                RLC     A
007E 54F8              ANL     A,#0F8H
0080 4F                ORL     A,R7
                                           ; SOURCE LINE # 74
                                           ; SOURCE LINE # 75
0081 8009              SJMP    ?C0030
0083         ?C0009:
                                           ; SOURCE LINE # 76
                                           ; SOURCE LINE # 77
0083 C2AF              CLR     EA
                                           ; SOURCE LINE # 78
0085 AF00        E     MOV     R7,bEPPflags+01H
0087 EF                MOV     A,R7
0088 549F              ANL     A,#09FH
008A 4440              ORL     A,#040H
008C         ?C0030:
008C F500        E     MOV     bEPPflags+01H,A
                                           ; SOURCE LINE # 79
008E D2AF              SETB    EA
                                           ; SOURCE LINE # 80
                                           ; SOURCE LINE # 82
                                           ; SOURCE LINE # 83
0090         ?C0011:
0090 22                RET     
             ; FUNCTION setup_dma_request (END)

             ; FUNCTION read_write_register (BEGIN)
                                           ; SOURCE LINE # 85
C51 COMPILER V7.06   KPROTODMA                                                             11/11/2003 20:11:02 PAGE 18  

                                           ; SOURCE LINE # 86
                                           ; SOURCE LINE # 89
0000 E500        E     MOV     A,ControlData
0002 30E75B            JNB     ACC.7,?C0012
                                           ; SOURCE LINE # 91
0005 AF00        E     MOV     R7,bEPPflags+01H
0007 EF                MOV     A,R7
0008 C3                CLR     C

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -