📄 kprotodma.lst
字号:
88 1
89 1 if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
90 2
91 2 if(bEPPflags.bits.verbose)
C51 COMPILER V6.20c KPROTODMA 10/31/2002 21:55:44 PAGE 14
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 V6.20c KPROTODMA 10/31/2002 21:55:44 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 V6.20c KPROTODMA 10/31/2002 21:55:44 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 ?C0030
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 V6.20c KPROTODMA 10/31/2002 21:55:44 PAGE 17
0057 EA MOV A,R2
0058 9400 SUBB A,#00H
005A 4003 JC ?C0007
; SOURCE LINE # 68
005C ?C0030:
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 701C 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 FE MOV R6,A
007C 33 RLC A
007D 33 RLC A
007E 33 RLC A
007F 54F8 ANL A,#0F8H
0081 4F ORL A,R7
; SOURCE LINE # 74
; SOURCE LINE # 75
0082 8009 SJMP ?C0031
0084 ?C0009:
; SOURCE LINE # 76
; SOURCE LINE # 77
0084 C2AF CLR EA
; SOURCE LINE # 78
0086 AF00 E MOV R7,bEPPflags+01H
0088 EF MOV A,R7
0089 549F ANL A,#09FH
008B 4440 ORL A,#040H
008D ?C0031:
008D F500 E MOV bEPPflags+01H,A
; SOURCE LINE # 79
008F D2AF SETB EA
; SOURCE LINE # 80
; SOURCE LINE # 82
; SOURCE LINE # 83
0091 ?C0011:
0091 22 RET
; FUNCTION setup_dma_request (END)
; FUNCTION read_write_register (BEGIN)
C51 COMPILER V6.20c KPROTODMA 10/31/2002 21:55:44 PAGE 18
; SOURCE LINE # 85
; 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
0009 13 RRC A
000A 30E01B JNB ACC.0,?C0013
; SOURCE LINE # 92
000D 7BFF MOV R3,#0FFH
000F 7A00 R MOV R2,#HIGH ?SC_0
0011 7900 R MOV R1,#LOW ?SC_0
0013 850000 E MOV ?_printf?BYTE+03H,ControlData+02H
0016 850000 E MOV ?_printf?BYTE+04H,ControlData+03H
0019 850000 E MOV ?_printf?BYTE+05H,ControlData+06H
001C 850000 E MOV ?_printf?BYTE+06H,ControlData+07H
001F 850000 E MOV ?_printf?BYTE+07H,ControlData+04H
0022 850000 E MOV ?_printf?BYTE+08H,ControlData+05H
0025 120000 E LCALL _printf
0028 ?C0013:
; SOURCE LINE # 97
0028 E500 E MOV A,ControlData+05H
002A B47216 CJNE A,#072H,?C0014
002D E500 E MOV A,ControlData+04H
002F B40411 CJNE A,#04H,?C0014
0032 E500 E MOV A,ControlData+03H
0034 4500 E ORL A,ControlData+02H
0036 700B JNZ ?C0014
0038 E500 E MOV A,ControlData+07H
003A 6401 XRL A,#01H
003C 4500 E ORL A,ControlData+06H
003E 7003 JNZ ?C0014
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -