📄 main.lst
字号:
258 1 Delay(10);
259 1 RESET = 0;
260 1 Delay(10);
261 1
262 1 wrser(0xac); // SPI write (byte 1)
263 1 wrser(0x53); // SPI write (byte 2)
264 1 if ( (device >= 0x20) && (device <= 0x7F) )
265 1 {
266 2 count = 32;
267 2 do {
268 3 if (wrser(0) == 0x53) // SPI read (byte 3)
269 3 break;
270 3 wrser(0x00); // SPI write (byte 4)
271 3 pulse_sck();
272 3 wrser(0xac); // SPI write (byte 1)
273 3 wrser(0x53); // SPI write (byte 2)
274 3
275 3 } while(--count);
276 2 }else wrser(0x00); // SPI write (byte 3)
277 1
278 1 wrser(0x00); // SPI write (byte 4)
279 1 Delay(100);
280 1 }
281
282 void writeFLASHdelay(void)
283 { //根据芯片类型,决定是否延时
284 1 if(pgm_mode == 0)
285 1 {
286 2 #ifndef SL_BOARD
Delay(100);
#else
289 2 Delay(250);
290 2 #endif
291 2 }
292 1 }
293
294 unsigned char w17call(unsigned char param1)
295 {
296 1 wrser(0x30);
297 1 wrser(0x00);
298 1 wrser(param1);
299 1 return wrser(0);
300 1 }
301
302
303 unsigned char device;
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 6
304 unsigned char LedData;
305
306 void main(void)
307 {
308 1 LED_GREEN = 0;
309 1 Delay(60254);
310 1 LED_GREEN = 1;
311 1 init_serial( );
312 1 while(1)
313 1 {
314 2 _nop_();
315 2 switch(getc())
316 2 {
317 3 case 0x1b:
318 3 LED_GREEN = 0;
319 3 break;
320 3
321 3 case 'T':
322 3 device = getc();
323 3 putc(0x0d);
324 3 break;
325 3
326 3 case 'S':
327 3 showID();
328 3 break;
329 3
330 3 case 'V':
331 3 putc(SW_MAJOR);
332 3 putc(SW_MINOR);
333 3 break;
334 3
335 3 case 'v':
336 3 putc(HW_MAJOR);
337 3 putc(HW_MINOR);
338 3 break;
339 3
340 3 case 't':
341 3 show_device();//Show supported devices
342 3 break;
343 3
344 3 case 'p':
345 3 putc('S');
346 3 break;
347 3
348 3 case 'a':
349 3 putc('Y');
350 3 break;
351 3
352 3 case 'x':
353 3 LedData = getc();
354 3 if(LedData == 1)
355 3 LED_GREEN = 0 ;
356 3 else
357 3 LED_GREEN = 1 ;
358 3 putc(0x0d);
359 3 break;
360 3
361 3 case 'y':
362 3 LedData = getc();
363 3 if(LedData == 1)
364 3 LED_RED2 = 0 ;
365 3 else
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 7
366 3 LED_RED2 = 1 ;
367 3 putc(0x0d);
368 3 break;
369 3
370 3 case 'P':
371 3 spiinit();
372 3 LED_RED1 = 0;
373 3 pgm_mode = check_device(device);
374 3 if ( pgm_mode != '?' )
375 3 putc(0x0d);
376 3 else
377 3 putc('?');
378 3 break;
379 3
380 3 case 'C': //Write program memory, high byte
381 3 wrser(0x48);
382 3 wrser(Addr_H);
383 3 wrser(Addr_L);
384 3 wrser(getc());
385 3
386 3 IncAddrAuto();
387 3
388 3 writeFLASHdelay();
389 3 putc(0x0d);
390 3 break;
391 3
392 3 case 'c': //Write program memory, low byte
393 3 wrser(0x40);
394 3 wrser(Addr_H);
395 3 wrser(Addr_L);
396 3 wrser(getc());
397 3
398 3 writeFLASHdelay();
399 3 putc(0x0d);
400 3 break;
401 3
402 3 case 'R'://Read program memory
403 3 wrser(0x28);
404 3 wrser(Addr_H);
405 3 wrser(Addr_L);
406 3 putc( wrser ( 0 ) );
407 3
408 3 wrser(0x20);
409 3 wrser(Addr_H);
410 3 wrser(Addr_L);
411 3 putc( wrser( 0 ) );
412 3
413 3 IncAddrAuto();
414 3 break;
415 3
416 3 case 'A':
417 3 Addr_H = getc();
418 3 Addr_L = getc();
419 3 putc( 0x0d );
420 3 break;
421 3
422 3 case 'D': //Write data memory
423 3 wrser(0xC0);
424 3 wrser(Addr_H);
425 3 wrser(Addr_L);
426 3 wrser(getc() );
427 3 Delay(250);
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 8
428 3 IncAddrAuto();
429 3 putc(0x0d);
430 3 break;
431 3
432 3 case 'd': //Read data memory
433 3 wrser(0xA0);
434 3 wrser(Addr_H);
435 3 wrser(Addr_L);
436 3 putc( wrser( 0 ) );
437 3 IncAddrAuto();
438 3 break;
439 3
440 3 case 'L': //Leave programming mode
441 3
442 3 MOSI = 1;
443 3 MISO = 1;
444 3 SCK = 1;
445 3 LED_RED1 = 1;
446 3 putc(0x0d);
447 3 RESET = 1;
448 3 break;
449 3
450 3 case 'e': //Chip erase
451 3 wrser(0xAC);
452 3 wrser(0x80);
453 3 wrser(0x04);
454 3 wrser(0x00);
455 3 Delay(10);
456 3 putc(0x0d);
457 3
458 3 break;
459 3
460 3 case 'l': //Write lock bits
461 3 wrser(0xAC);
462 3 wrser( (getc() & 0x6) | 0xe0 );
463 3 wrser(0x00);
464 3 wrser(0x00);
465 3 Delay(10);
466 3 putc(0x0d);
467 3 break;
468 3
469 3 case 's': //Read signature bytes
470 3 putc (w17call(2) );
471 3 putc (w17call(1) );
472 3 putc (w17call(0) );
473 3 break;
474 3
475 3 case 'm': //Write Program Memory Page
476 3 wrser(0x4c);
477 3 wrser(Addr_H);
478 3 wrser(Addr_L);
479 3 wrser(0);
480 3
481 3 Delay(10);
482 3 putc(0x0d);
483 3 break;
484 3
485 3 case ':': //Universal Command
486 3 wrser(getc());
487 3 wrser(getc());
488 3 wrser(getc());
489 3 putc( wrser(0));
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 9
490 3 Delay(10);
491 3 putc(0x0d);
492 3 break;
493 3
494 3 case '.': //New Universal Command
495 3 wrser( getc() );
496 3 wrser( getc() );
497 3 wrser( getc() );
498 3 putc(wrser ( getc() ) );
499 3 Delay( 10 );
500 3 putc( 0x0d );
501 3 break;
502 3
503 3 default:
504 3 putc('?');
505 3 }
506 2 }
507 1 }
508
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1062 ----
CONSTANT SIZE = 184 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
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 + -