📄 df.lst
字号:
442 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
443 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
444 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
445 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
446 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
447 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
448 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
449 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
450 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
451 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
452 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
453 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
454 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
455 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
456 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
457 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
458 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
459 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
460 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
461 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
462 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
463 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
464 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
465 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
466 2 ACC = SPSTA; Usb_write_byte(Spi_read_data());
467 2 Enable_interrupt(); /* global re-enable */
468 2
469 2 Usb_set_TXRDY(); /* start usb transfer */
470 2 while (!Usb_tx_complete()); /* wait end of transfer */
471 2 Usb_clear_TXCMPL(); /* ack transfer */
472 2 }
473 1 gl_ptr_mem += 512;
474 1 return OK;
475 1 }
476
477
478 /*F**************************************************************************
479 * NAME: df_write_open
480 *----------------------------------------------------------------------------
481 * PARAMS:
482 * pos: next write operation address
483 *
484 * return:
485 * status: TRUE: open done
486 * FALSE: open not done: memory is still busy
487 *----------------------------------------------------------------------------
C51 COMPILER V6.20c DF 07/10/2002 15:17:44 PAGE 9
488 * PURPOSE:
489 * Open memory in write mode
490 *----------------------------------------------------------------------------
491 * EXAMPLE:
492 *----------------------------------------------------------------------------
493 * NOTE:
494 * If page buffer > 512 bytes, page content is first loaded in buffer to be
495 * partially updated by write_byte or write64 functions
496 *----------------------------------------------------------------------------
497 * REQUIREMENTS:
498 *****************************************************************************/
499 bit df_write_open (Uint32 pos)
500 {
501 1 gl_ptr_mem = pos << 9; /* gl_ptr_mem = pos * 512 */
502 1 if (df_mem_busy)
503 1 {
504 2 df_mem_busy = FALSE;
505 2 df_busy(); /* wait end of programming */
506 2 }
507 1
508 1 #if DF_PAGE_SIZE > 512
509 1 /* select right memory */
510 1 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
511 1 {
512 2 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
513 2 DF_CS0 = 0;
514 2 else
515 2 DF_CS1 = 0;
516 2 }
517 1 else
518 1 {
519 2 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
520 2 DF_CS2 = 0;
521 2 else
522 2 DF_CS3 = 0;
523 2 }
524 1 /* get page content in buffer */
525 1 Spi_write_data(DF_TF_BUF_1); /* main to buffer 1 transfer */
526 1 Spi_ack_write();
527 1 Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
528 1 Spi_ack_write();
529 1 Spi_write_data(((Byte*)&gl_ptr_mem)[2] << DF_SHFT_B1);
530 1 Spi_ack_write();
531 1 Spi_write_data(0xFF); /* dummy byte */
532 1 Spi_ack_write();
533 1 DF_CS |= DF_DESEL_ALL; /* deselect memory */
534 1
535 1 df_busy(); /* wait end of page transfer */
536 1 #endif
537 1
538 1 /* select right memory */
539 1 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
540 1 {
541 2 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
542 2 DF_CS0 = 0;
543 2 else
544 2 DF_CS1 = 0;
545 2 }
546 1 else
547 1 {
548 2 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
549 2 DF_CS2 = 0;
C51 COMPILER V6.20c DF 07/10/2002 15:17:44 PAGE 10
550 2 else
551 2 DF_CS3 = 0;
552 2 }
553 1 /* prepare the memory in write mode */
554 1 Spi_write_data(DF_PG_BUF_1); /* main program through buffer 1 */
555 1 Spi_ack_write();
556 1 Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
557 1 Spi_ack_write();
558 1 Spi_write_data(((((Byte*)&gl_ptr_mem)[2] & ~DF_PAGE_MASK) << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] & DF
-_PAGE_MASK));
559 1 Spi_ack_write();
560 1 Spi_write_data(((Byte*)&gl_ptr_mem)[3]);
561 1 Spi_ack_write();
562 1 return OK;
563 1 }
564
565
566 /*F**************************************************************************
567 * NAME: df_write_close
568 *----------------------------------------------------------------------------
569 * PARAMS:
570 *
571 * return:
572 *----------------------------------------------------------------------------
573 * PURPOSE:
574 * This function fills the end of the logical sector (512b) and launch page
575 * programming
576 *----------------------------------------------------------------------------
577 * EXAMPLE:
578 *----------------------------------------------------------------------------
579 * NOTE:
580 *----------------------------------------------------------------------------
581 * REQUIREMENTS:
582 *****************************************************************************/
583 void df_write_close (void)
584 {
585 1 while ((((Byte*)&gl_ptr_mem)[3] != 0x00) || ((((Byte*)&gl_ptr_mem)[2] & 0x01) != 0x00))
586 1 {
587 2 Spi_write_data(0x00);
588 2 Spi_ack_write();
589 2 gl_ptr_mem++;
590 2 }
591 1 DF_CS |= DF_DESEL_ALL; /* launch page programming */
592 1 df_mem_busy = TRUE; /* memory is busy */
593 1 }
594
595
596 /*F**************************************************************************
597 * NAME: df_write_byte
598 *----------------------------------------------------------------------------
599 * PARAMS:
600 * b: byte to program
601 *
602 * return:
603 * write status: OK: write done, KO: write not done
604 *----------------------------------------------------------------------------
605 * PURPOSE:
606 * Low level memory write function
607 *----------------------------------------------------------------------------
608 * EXAMPLE:
609 *----------------------------------------------------------------------------
610 * NOTE:
C51 COMPILER V6.20c DF 07/10/2002 15:17:44 PAGE 11
611 * There is no need to pre-load a new page in buffer as first write
612 * will start at address 0 of the page. This considers file write
613 * does not overwrite exixting file...
614 *----------------------------------------------------------------------------
615 * REQUIREMENTS:
616 *****************************************************************************/
617 bit df_write_byte (const Byte b)
618 {
619 1 if (df_mem_busy)
620 1 { /* memory busy */
621 2 df_mem_busy = FALSE; /* memory is ready */
622 2 df_busy(); /* wait end of programming */
623 2 /* select right memory */
624 2 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
625 2 {
626 3 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
627 3 DF_CS0 = 0;
628 3 else
629 3 DF_CS1 = 0;
630 3 }
631 2 else
632 2 {
633 3 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
634 3 DF_CS2 = 0;
635 3 else
636 3 DF_CS3 = 0;
637 3 }
638 2
639 2 /* prepare the memory in write mode */
640 2 Spi_write_data(DF_PG_BUF_1); /* main program through buffer 1 */
641 2 Spi_ack_write();
642 2 Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
643 2 Spi_ack_write();
644 2 Spi_write_data((((Byte*)&gl_ptr_mem)[2] & ~DF_PAGE_MASK) << DF_SHFT_B1);
645 2 Spi_ack_write();
646 2 Spi_write_data(0x00); /* address 00 of the page */
647 2 Spi_ack_write();
648 2
649 2 Spi_write_data(b); /* write current data */
650 2 Spi_ack_write();
651 2 gl_ptr_mem++;
652 2 return OK; /* write done */
653 2 }
654 1 else
655 1 { /* memory ready */
656 2 Spi_write_data(b); /* write current data */
657 2 Spi_ack_write();
658 2 gl_ptr_mem++;
659 2
660 2 /* check if end of page */
661 2 if ((((Byte*)&gl_ptr_mem)[3] == 0x00) && ((((Byte*)&gl_ptr_mem)[2] & DF_PAGE_MASK) == 0x00))
662 2 {
663 3 DF_CS |= DF_DESEL_ALL; /* launch page programming */
664 3 df_mem_busy = TRUE; /* memory is busy */
665 3 }
666 2 return OK; /* write done */
667 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -