📄 kprotodma.lst
字号:
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 + -