📄 xxgmain.lst
字号:
241 {
C51 COMPILER V6.20c XXGMAIN 01/16/2003 10:36:17 PAGE 5
242 1 D12_SetEndpointEnable(1); /* Enable generic/iso endpoints. */
243 1 }
244 //--------------------------
245
246 void single_transmit(unsigned char * buf, unsigned char len)
247 {
248 1 if( len <= EP0_PACKET_SIZE) {
249 2 D12_WriteEndpoint(1, len, buf);
250 2 }
251 1 }
252
253 void code_transmit(unsigned char code * pRomData, unsigned short len)
254 {
255 1 ControlData.wCount = 0;
256 1 if(ControlData.wLength > len)
257 1 ControlData.wLength = len;
258 1
259 1 ControlData.pData = pRomData;
260 1 if( ControlData.wLength >= EP0_PACKET_SIZE) { // 如果发送代码大于包长度
261 2 D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);
262 2 ControlData.wCount += EP0_PACKET_SIZE;
263 2
264 2 DISABLE;
265 2 bEPPflags.bits.control_state = USB_TRANSMIT;
266 2 ENABLE;
267 2 }
268 1 else { //发送代码小于包长度
269 2 D12_WriteEndpoint(1, ControlData.wLength, pRomData);
270 2 ControlData.wCount += ControlData.wLength;
271 2 DISABLE;
272 2 bEPPflags.bits.control_state = USB_IDLE;
273 2 ENABLE;
274 2 }
275 1 }
276
277 //---------------------------
278
279 void setup_dma()
280 {
281 1 ioSize = ioRequest.uSize;
282 1 ioCount = 0;
283 1
284 1 DISABLE;
285 1 bEPPflags.bits.dma_state = DMA_RUNNING;
286 1 ENABLE;
287 1
288 1 single_transmit(0, 0);
289 1
290 1 if(ioRequest.bCommand & 0x1) {
291 2 if(ioSize > 64 || ioSize == 0) {
292 3 //if(bNoRAM)
293 3 D12_WriteEndpoint(5, 64, EpBuf);
294 3 //else
295 3 // D12_WriteEndpoint(5, 64, MainEpBuf);
296 3 ioCount += 64;
297 3 }
298 2 else {
299 3 //if(bNoRAM)
300 3 D12_WriteEndpoint(5, ioSize, EpBuf);
301 3 //else
302 3 // D12_WriteEndpoint(5, ioSize, MainEpBuf);
303 3 ioCount += ioSize;
C51 COMPILER V6.20c XXGMAIN 01/16/2003 10:36:17 PAGE 6
304 3 }
305 2 }
306 1 }
307
308 //------------------------------
309 void control_handler()
310 {
311 1 unsigned char type, req;
312 1
313 1 type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK; //0x60
314 1 req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK; //0x0F
315 1
316 1 //help_devreq(type, req); // print out device request
317 1
318 1 if (type == USB_STANDARD_REQUEST)
319 1 (*StandardDeviceRequest[req])();
320 1 else if (type == USB_VENDOR_REQUEST)
321 1 (*VendorDeviceRequest[req])();
322 1 else
323 1 stall_ep0();
324 1
325 1 }
326
327
328 //-------------------------------------------
329
330 //-------------------------------------------
331
332 void main()
333 {
334 1 unsigned char key, i;
335 1 //bNoRam=1;
336 1 //DISABLE;
337 1 init_port();
338 1 init_serial();
339 1 init_timer0();
340 1 EA = 0;
341 1 //for test
342 1 MCU_LED0=0;
343 1 MCU_LED1=0;
344 1 MCU_LED0=1;
345 1 MCU_LED1=1;
346 1 //--------------
347 1 //printf("Re-connect PDIUSBD12 evaluation board to USB.\n");
348 1 IE0=0;
349 1 IT0=0;
350 1 EX0=1;
351 1 //--------------------------
352 1 // MCU_D12RST = 0;
353 1 // MCU_D12RST = 1;
354 1 //--------------------
355 1
356 1 MCU_D12CS = 0x1;
357 1 //-----------------------
358 1
359 1 //for(i = 0; i < 16; i ++)
360 1 // MainEpBuf[i] = i;
361 1 //for(i = 0; i < 16; i ++) {
362 1 // if(MainEpBuf[i] != i)
363 1 // break;
364 1 // }
365 1 //if(i < 16)
C51 COMPILER V6.20c XXGMAIN 01/16/2003 10:36:17 PAGE 7
366 1 bNoRAM = TRUE;
367 1 //else
368 1 // bNoRAM = FALSE;
369 1
370 1 //--------------------------
371 1 MCU_D12CS = 0x0;
372 1
373 1 //bNoRam=TRUE;
374 1 //---------------------------
375 1
376 1 //----------------------------
377 1 /*
378 1 if(MCU_SWM0 == 0 && MCU_SWM1 == 0) {
379 1 MCU_D12RST = 0;
380 1 MCU_D12RST = 1;
381 1 D12_SetDMA(0x0);
382 1 }
383 1 */
384 1 //if((i = D12_GetDMA()) == 0xC3)
385 1 // {D12_SendResume();}
386 1 //else {
387 1 // bEPPflags.value = 0;
388 1
389 1 /* Power on reset, lightup LEDs for 1 sec,
390 1 disconnect and reconnect Soft-Connect */
391 1 //printf("\nPDIUSBD12 SMART evaluation board firmware V3.0.\n");
392 1 i=D12_ReadInterruptRegister();
393 1 i=0;
394 1 //i=D12_ReadEndpointStatus(0);
395 1 i=D12_ReadLastTransactionStatus(0);
396 1 i=D12_ReadLastTransactionStatus(1);
397 1 i=D12_ReadLastTransactionStatus(2);
398 1 i=D12_ReadLastTransactionStatus(3);
399 1 i=D12_ReadLastTransactionStatus(4);
400 1 i=D12_ReadLastTransactionStatus(5);
401 1 ENABLE;
402 1 reconnect_USB();
403 1 ENABLE;
404 1 // }
405 1 //=======================================
406 1 /* Main program loop */
407 1
408 1 while( TRUE ){
409 2
410 2 if (bEPPflags.bits.timer){
411 3 DISABLE;
412 3 bEPPflags.bits.timer = 0;
413 3 ENABLE;
414 3
415 3 if(bEPPflags.bits.configuration)
416 3 check_key_LED();
417 3 }
418 2
419 2 if (bEPPflags.bits.bus_reset) {
420 3 DISABLE;
421 3 bEPPflags.bits.bus_reset = 0;
422 3 ENABLE;
423 3 // Release D12's SUSPEND pin after bus reset
424 3 // Enable 74HCT123 pulse generation before disconnect
425 3 ///D12SUSPD = 1;
426 3 D12SUSPD=0;
427 3 } // if bus reset
C51 COMPILER V6.20c XXGMAIN 01/16/2003 10:36:17 PAGE 8
428 2
429 2 if (bEPPflags.bits.suspend) {
430 3 DISABLE;
431 3 bEPPflags.bits.suspend= 0;
432 3 ENABLE;
433 3
434 3 if(D12SUSPD == 1) {
435 4 D12SUSPD = 0;
436 4 P0 = 0xFF;
437 4 P1 = 0xFF;
438 4 P2 = 0xFF;
439 4 P3 = 0xFF;
440 4 D12_SetDMA(0xC3);
441 4 D12SUSPD = 1;
442 4 PCON |= 0x02;
443 4 while (1);
444 4
445 4 }
446 3
447 3 } // if suspend change
448 2
449 2 if (bEPPflags.bits.setup_packet){
450 3 DISABLE;
451 3 bEPPflags.bits.setup_packet = 0;
452 3 ENABLE;
453 3 control_handler();
454 3 //D12SUSPD = 1;
455 3 D12SUSPD=0;
456 3 } // if setup_packet
457 2
458 2 if(bEPPflags.bits.setup_dma != 0) {
459 3 DISABLE;
460 3 bEPPflags.bits.setup_dma --;
461 3 ENABLE;
462 3 setup_dma();
463 3 } // if setup_dma
464 2
465 2 } // Main Loop
466 1
467 1 //on_exit();
468 1 //=======================================
469 1
470 1 }
*** WARNING C280 IN LINE 334 OF XXGMAIN.C: 'key': unreferenced local variable
471
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 770 ----
CONSTANT SIZE = 96 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 26 9
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -