📄 cydown.lst
字号:
183 BOOL HighSpeedCapable()
184 {
185 1 // 高速USB处理
186 1
187 1 if (REVID & 0xF0) //检查是fx2lp/fx1还是fx2.
188 1 {
189 2
190 2 // fx2lp 或 fx1 的处理
191 2 if (GPCR2 & bmHIGHSPEEDCAPABLE)
192 2 return TRUE;
193 2 else
194 2 return FALSE;
195 2 }
196 1 else
197 1 {
198 2 // fx2 的处理
199 2 return TRUE;
200 2 }
201 1 }
202
203 // 设备请求
204 void SetupCommand(void)
205 {
206 1 void *dscr_ptr;
207 1
208 1 switch(SETUPDAT[1])
209 1 {
210 2 case SC_GET_DESCRIPTOR: //获得描述符
211 2 if(DR_GetDescriptor())
212 2 switch(SETUPDAT[3])
213 2 {
214 3 case GD_DEVICE: //设备
215 3 SUDPTRH = MSB(pDeviceDscr);
216 3 SUDPTRL = LSB(pDeviceDscr);
217 3 break;
218 3 case GD_DEVICE_QUALIFIER: //设备限定
219 3 if (HighSpeedCapable())
220 3 {
221 4 SUDPTRH = MSB(pDeviceQualDscr);
222 4 SUDPTRL = LSB(pDeviceQualDscr);
223 4 }
224 3 else
225 3 {
226 4 EZUSB_STALL_EP0();
227 4 }
228 3 break;
229 3 case GD_CONFIGURATION: // 配置
230 3 SUDPTRH = MSB(pConfigDscr);
231 3 SUDPTRL = LSB(pConfigDscr);
232 3 break;
233 3 case GD_OTHER_SPEED_CONFIGURATION: // 其它速率配置
234 3 SUDPTRH = MSB(pOtherConfigDscr);
235 3 SUDPTRL = LSB(pOtherConfigDscr);
236 3 break;
237 3 case GD_STRING: // 字符串
238 3 if(dscr_ptr = (void *)EZUSB_GetStringDscr(SETUPDAT[2]))
239 3 {
240 4 SUDPTRH = MSB(dscr_ptr);
241 4 SUDPTRL = LSB(dscr_ptr);
C51 COMPILER V7.02a CYDOWN 07/31/2007 11:33:27 PAGE 5
242 4 }
243 3 else
244 3 EZUSB_STALL_EP0(); // 中止端点0
245 3 break;
246 3 default: // 无效请求
247 3 EZUSB_STALL_EP0(); // 中止端点0
248 3 }
249 2 break;
250 2 case SC_GET_INTERFACE: // 获得接口
251 2 DR_GetInterface();
252 2 break;
253 2 case SC_SET_INTERFACE: // 设置接口
254 2 DR_SetInterface();
255 2 break;
256 2 case SC_SET_CONFIGURATION: //设置配置
257 2 DR_SetConfiguration();
258 2 break;
259 2 case SC_GET_CONFIGURATION: //获得配置
260 2 DR_GetConfiguration();
261 2 break;
262 2 case SC_GET_STATUS: // 获得状态
263 2 if(DR_GetStatus())
264 2 switch(SETUPDAT[0])
265 2 {
266 3 case GS_DEVICE: // 设备
267 3 EP0BUF[0] = ((BYTE)Rwuen << 1) | (BYTE)Selfpwr;
268 3 EP0BUF[1] = 0;
269 3 EP0BCH = 0;
270 3 EP0BCL = 2;
271 3 break;
272 3 case GS_INTERFACE: // 接口
273 3 EP0BUF[0] = 0;
274 3 EP0BUF[1] = 0;
275 3 EP0BCH = 0;
276 3 EP0BCL = 2;
277 3 break;
278 3 case GS_ENDPOINT: // 端点
279 3 EP0BUF[0] = *(BYTE xdata *) epcs(SETUPDAT[4]) & bmEPSTALL;
280 3 EP0BUF[1] = 0;
281 3 EP0BCH = 0;
282 3 EP0BCL = 2;
283 3 break;
284 3 default: //无效命令
285 3 EZUSB_STALL_EP0();
286 3 }
287 2 break;
288 2 case SC_CLEAR_FEATURE: // 清除特性
289 2 if(DR_ClearFeature())
290 2 switch(SETUPDAT[0])
291 2 {
292 3 case FT_DEVICE: // 设备
293 3 if(SETUPDAT[2] == 1)
294 3 Rwuen = FALSE; // 禁止远程唤醒
295 3 else
296 3 EZUSB_STALL_EP0();
297 3 break;
298 3 case FT_ENDPOINT:
299 3 if(SETUPDAT[2] == 0)
300 3 {
301 4 *(BYTE xdata *) epcs(SETUPDAT[4]) &= ~bmEPSTALL;
302 4 EZUSB_RESET_DATA_TOGGLE( SETUPDAT[4] );
303 4 }
C51 COMPILER V7.02a CYDOWN 07/31/2007 11:33:27 PAGE 6
304 3 else
305 3 EZUSB_STALL_EP0();
306 3 break;
307 3 }
308 2 break;
309 2 case SC_SET_FEATURE: // 设置特性
310 2 if(DR_SetFeature())
311 2 switch(SETUPDAT[0])
312 2 {
313 3 case FT_DEVICE:
314 3 if(SETUPDAT[2] == 1)
315 3 Rwuen = TRUE;
316 3 else if(SETUPDAT[2] == 2)
317 3 break;
318 3 else
319 3 EZUSB_STALL_EP0();
320 3 break;
321 3 case FT_ENDPOINT:
322 3 *(BYTE xdata *) epcs(SETUPDAT[4]) |= bmEPSTALL;
323 3 break;
324 3 default:
325 3 EZUSB_STALL_EP0();
326 3 }
327 2 break;
328 2 case SC_LED1: //显示数字0
329 2 DR_LED1();
330 2 break;
331 2 case SC_LED2: //显示数字1
332 2 DR_LED2();
333 2 break;
334 2 case SC_LED3: //显示数字2
335 2 DR_LED3();
336 2 break;
337 2 case SC_LED4: //显示字符A
338 2 DR_LED4();
339 2 break;
340 2 case SC_LED5: //显示字符F
341 2 DR_LED5();
342 2 break;
343 2 default: // 无效命令
344 2 if(DR_VendorCmnd())
345 2 EZUSB_STALL_EP0(); // 停止断点0
346 2 }
347 1
348 1 //握手
349 1 EP0CS |= bmHSNAK;
350 1 }
351
352 // 唤醒中断
353 void resume_isr(void) interrupt WKUP_VECT
354 {
355 1 EZUSB_CLEAR_RSMIRQ();
356 1 }
357
358
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 974 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.02a CYDOWN 07/31/2007 11:33:27 PAGE 7
DATA SIZE = 14 16
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -