📄 vdor.lst
字号:
C51 COMPILER V7.06 VDOR 09/09/2005 13:57:31 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE VDOR
OBJECT MODULE PLACED IN VDOR.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE VDOR.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "string.h"
2 #include "SMPro.H"
3 #include "USB.H"
4 #include "HAL.H"
5 #include "VDOR.H"
6 //#include "USBD12.H"
7 #include "main.h"
8 #include "USB200.H"
9 #include "Isp1581.h"
10 #include "Isr.h"
11 //#include "Hal4sys.h"
12 #include "chap9.h"
13 #include "dportram.h"
14
15 extern CONTROL_XFER ControlData;
16 extern ZBOARDFLAGS bZBoardFlags;
17 extern IO_REQUEST idata ioRequest;
18 extern GLOBE_VARIABLE globe_variable;
19 extern unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
20 extern unsigned char bdata key;
21 code unsigned char ProductCode[] ="1234567890123456";
22
23
24 //unsigned int dackpulse=0;
25 //bit dmadackbit=0;
26 /**************************************************************************/
27 /* Subroutines For Vendor Specific Request */
28 /**************************************************************************/
29 /*
30 void EnableIsoMode(void)
31 {
32 bZBoardFlags.bits.ISO_CONFIG = 1;
33
34 Chap9_ControlWriteHandshake();
35 }
36 */
37 void USBVendorCmdSet(void)
38 {
39 1 memcpy(&ioRequest.bCommand,ControlData.dataBuffer,0x1);
40 1 bZBoardFlags.bits.bLED = 1;
41 1 Chap9_ControlWriteHandshake();
42 1 }
43 void USBVendorCmdGet(void)
44 {
45 1 USB_Single_Transmit(&key,1);
46 1 //USB_Single_Transmit(0, 0);
47 1 }
48 /**********************************************************************************************/
49 /**********************************************************************************************/
50 //for ramshare project
51 /**********************************************************************************************/
52 //put zhe data that will be sended in GenEpBuf[]
53 /////88*****************************************************************************************888/
54 /**********************************************************************************************/
55 void USBVendorReadData(void)
C51 COMPILER V7.06 VDOR 09/09/2005 13:57:31 PAGE 2
56 {
57 1 unsigned char xdata *exAddress;
58 1 unsigned char i,j,k;
59 1 exAddress=0;
60 1 memcpy(&ioRequest.bCommand,ControlData.dataBuffer,0x1);
61 1 Chap9_ControlWriteHandshake();
62 1 if(ioRequest.bCommand>64)
63 1 {
64 2 j=ioRequest.bCommand/64;
65 2
66 2 for(k=0;k<j;k++)
67 2 {
68 3 EA=0;
69 3 ramcs=0;
70 3 for(i=0;i<64;i++)
71 3 {
72 4
73 4 GenEpBuf[i]=*(exAddress);
74 4 exAddress++;
75 4 }
76 3 ramcs=1;
77 3 EA=1;
78 3
79 3 ISP1581_WriteBulkEndpoint(EPINDEX4EP01IN,GenEpBuf,64);
80 3 }
81 2 ioRequest.bCommand=ioRequest.bCommand-j*64;
82 2 }
83 1
84 1 //ioRequest.bCommand=64;
85 1 //ReadRam(ioRequest.bCommand,GenEpBuf);
86 1 EA=0;
87 1 ramcs=0;
88 1 for(i=0;i<ioRequest.bCommand;i++)
89 1 {
90 2
91 2 GenEpBuf[i]=*(exAddress);
92 2 exAddress++;
93 2 }
94 1 ramcs=1;
95 1 EA=1;
96 1
97 1 ISP1581_WriteBulkEndpoint(EPINDEX4EP01IN,GenEpBuf,ioRequest.bCommand);
98 1
99 1 }
100 /**********************************************************************************************/
101 /**********************************************************************************************/
102 /**********************************************************************************************/
103 /**********************************************************************************************/
104 void read_write_register(void)
105 {
106 1 if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) //0x80
107 1 {
108 2 if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
109 2 ControlData.DeviceRequest.wValue == 0 &&
110 2 ControlData.DeviceRequest.wLength == 1)
111 2 {
112 3 get_firmware_version();
113 3 }
114 2 else
115 2 {
116 3 USB_Stall_EP0();
117 3 }
C51 COMPILER V7.06 VDOR 09/09/2005 13:57:31 PAGE 3
118 2 } // if read register
119 1 else{
120 2 if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
121 2 ControlData.DeviceRequest.wValue == 0 &&
122 2 ControlData.DeviceRequest.wLength == 6)
123 2 {
124 3 RaiseIRQL();
125 3 setup_dma_request();//0xc0,0x0c,0x0000,0x0471,0x0006
126 3 LowerIRQL();
127 3 }
128 2 else
129 2 {
130 3 USB_Stall_EP0();
131 3 }
132 2 } // if write register
133 1
134 1 }
135
136 void get_firmware_version(void)
137 {
138 1 unsigned char i;
139 1
140 1 i = 0x01; // firmware version number, return 0x01 for PC kit version 1
141 1 USB_Single_Transmit(&i,1);
142 1 }
143
144 void setup_dma_request(void)
145 {
146 1 memcpy((unsigned char *)&ioRequest + ControlData.DeviceRequest.wValue,
147 1 ControlData.dataBuffer,
148 1 ControlData.DeviceRequest.wLength);
149 1
150 1 ioRequest.uSize = SWAP(ioRequest.uSize);
151 1 ioRequest.uAddressL = SWAP(ioRequest.uAddressL);
152 1
153 1 if(ioRequest.uSize > DMA_BUFFER_SIZE) // Unaccepted request
154 1 {
155 2 //Chap9_StallEP0();
156 2 USB_Stall_EP0();
157 2 }
158 1 else
159 1 {
160 2 RaiseIRQL();
161 2 bZBoardFlags.bits.setup_dma = 1;
162 2 LowerIRQL();
163 2 } // else if accepted request
164 1 }
165 ///////////////////////////////////////////////////////////////
166 /*void setup_dma(void)
167 {
168
169 if(ioRequest.bCommand & 0x80)
170 {
171 Config_DMA();
172
173 }
174 else
175 {
176 setup_io();
177 }
178
179 bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLOUTDONE;
C51 COMPILER V7.06 VDOR 09/09/2005 13:57:31 PAGE 4
180 //return;
181
182 }
183 // it only works on PC evaluation kit.
184 void setup_io(void)
185 {
186
187 }
188
189 void Config_DMA(void)
190 {
191 unsigned int c;
192 unsigned short dmacfg_width; // 16 bit when assign dmacfg_width16 to it, else 8 bit;
193 //unsigned short isa_dma_more = 0; // when this is not 0, EXT EOT does not come;
194
195 RaiseIRQL();
196 bZBoardFlags.bits.dma_state = DMA_RUNNING;
197 LowerIRQL();
198
199 dmacfg_width = dmacfg_width16;
200 T1=1;
201 dmaw=1;
202 //CPLD_ctl(dmactl_stop);
203
204 ISP1581_SetDMACMD(dmacmd_reset);
205
206 globe_variable.xfer_dir = (unsigned short)(ioRequest.bCommand & 0x1);
207
208 if(globe_variable.xfer_dir==0x1){// IN
209 globe_variable.isp1581_dma_counterset_lowbyte = ioRequest.uSize; //exact number, else, clear ep feature;
210 }
211 else{
212 globe_variable.isp1581_dma_counterset_lowbyte = ioRequest.uSize ; // adjust value, stop by short packet;
213 }
214
215 //设置CPLD中传输的起始地址和字节数
216 //CPLD_cfg(ioRequest.uAddressL,globe_variable.isp1581_dma_counterset_lowbyte);
217
218 //硬件极性配置
219 ISP1581_SetDMAHDCfg(dmahd_dreqpolh|dmahd_eotpolh);
220
221 //dma 传输个数
222 ISP1581_SetDMACounterLow(globe_variable.isp1581_dma_counterset_lowbyte);
223 ISP1581_SetDMACounterHigh(0x00); // no longer than 64k bytes each transfer;
224 //dma 传输配置
225 ISP1581_SetDMAConfig(0x00
226 |dmacfg_burst0//dmacfg_burst0
227 |dmacfg_modediorw
228 // |dmacfg_modedack
229 // |dmacfg_modediorack
230 |dmacfg_width//dmacfg_width16
231 //|dmacfg_disablecounter //test
232 );
233 //dma 中断配置
234 ISP1581_SetDMAIntMask(dmaint_intereot|dmaint_xferok);
235 //ISP1581_SetDMAIntMask(dmaint_extereot|dmaint_xferok);
236
237 CY=0;
238 dackpulse=globe_variable.isp1581_dma_counterset_lowbyte>>1;
239 if(globe_variable.xfer_dir==0x1)
240 {//IN
241 //选择端点
C51 COMPILER V7.06 VDOR 09/09/2005 13:57:31 PAGE 5
242 ISP1581_SetDMAEP(bulkinendpointindex);
243
244 bZBoardFlags.bits.dma_endpoint = bulkinendpointindex;
245 //将用作dma传输的端点中断禁止
246 c = ISP1581_GetIntEnableLow();
247 ISP1581_SetIntEnableLow(c&(~bulkinendpointinterrupt));
248 ISP1581_SetEPMAXSize(EPINDEX4EP02IN, maxepsize_1024);
249 //启动cpld的DMA传输机制
250 //CPLD_ctl(dmactl_in|dmactl_start);
251 ///启动dma读操作
252 //TL1 = 0xf0; ///* value set by user
253 //TH1 = 0xf0; ///* value set by user
254 ISP1581_SetDMACMD(dmacmd_gdmaread);
255
256 dmadackbit=1;
257
258
259 MCU_LED0=!MCU_LED0;
260
261 }
262 else
263 {// out
264 ISP1581_SetDMAEP(bulkoutendpointindex);
265 bZBoardFlags.bits.dma_endpoint = bulkoutendpointindex;
266 c = ISP1581_GetIntEnableLow();
267 ISP1581_SetIntEnableLow(c&(~bulkoutendpointinterrupt));
268
269 //CPLD_ctl(dmactl_out|dmactl_start);
270
271 ISP1581_SetDMACMD(dmacmd_gdmawrite);
272 MCU_LED0=!MCU_LED0;
273
274
275 }
276
277 }
278
279
280 */ // 7.25
281
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 407 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
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 + -