📄 upsd3400_usb_app.ls1
字号:
603 ; {
604 ; SOURCE LINE # 175
605 ; poll = ((unsigned char volatile xdata *) 0x8000)[0x0000];
606 ; SOURCE LINE # 176
0024 908000 607 MOV DPTR,#08000H
0027 E0 608 MOVX A,@DPTR
0028 FD 609 MOV R5,A
610 ;---- Variable 'poll?243' assigned to Register 'R5' ----
611 ; // read flash status from any address
612 ; // within the defined flash address space
613 ; error = poll & NVM_ERROR; // save timeout error bit at DQ5
614 ; SOURCE LINE # 179
0029 5420 615 ANL A,#020H
002B FC 616 MOV R4,A
617 ;---- Variable 'error?241' assigned to Register 'R4' ----
618 ; poll = poll & NVM_DATA_POLL; // look at D7
619 ; SOURCE LINE # 180
002C CD 620 XCH A,R5
002D 5480 621 ANL A,#080H
002F CD 622 XCH A,R5
623 ; if (poll == NVM_DATA_POLL) // compare DQ7
624 ; SOURCE LINE # 181
0030 BD8004 625 CJNE R5,#080H,?C0007
626 ; {
627 ; SOURCE LINE # 182
628 ; done = TRUE; // bulk erase OK, indicate successful exit criteria
629 ; SOURCE LINE # 183
0033 7F01 630 MOV R7,#01H
631 ; }
632 ; SOURCE LINE # 184
0035 8005 633 SJMP ?C0004
0037 634 ?C0007:
635 ; else if (error == NVM_ERROR) // check for timeout error
636 ; SOURCE LINE # 185
0037 BC2002 637 CJNE R4,#020H,?C0004
638 ; {
639 ; SOURCE LINE # 186
640 ; err = TRUE; // indicate timeout error occurred
641 ; SOURCE LINE # 187
003A 7E01 642 MOV R6,#01H
643 ; }
644 ; SOURCE LINE # 188
645 ;
646 ; }
647 ; SOURCE LINE # 190
003C 648 ?C0004:
649 ; while((done == FALSE) && (err == FALSE));
650 ; SOURCE LINE # 191
003C EF 651 MOV A,R7
A51 MACRO ASSEMBLER UPSD3400_USB_APP 09/13/2005 18:00:20 PAGE 11
003D 7003 652 JNZ ?C0005
003F EE 653 MOV A,R6
0040 60E2 654 JZ ?C0006
0042 655 ?C0005:
656 ;
657 ;
658 ; if (err == TRUE) // make sure timeout error and dat poll didn't
659 ; SOURCE LINE # 194
0042 BE0118 660 CJNE R6,#01H,?C0011
661 ; // occur simultaneously
662 ; {
663 ; SOURCE LINE # 196
664 ; poll = ((unsigned char volatile xdata *) 0x8000)[0x000];
665 ; SOURCE LINE # 197
0045 908000 666 MOV DPTR,#08000H
0048 E0 667 MOVX A,@DPTR
0049 FD 668 MOV R5,A
669 ; // Read flash status again
670 ; poll = poll & NVM_DATA_POLL; // get DQ7 of poll byte read from flash
671 ; SOURCE LINE # 199
004A CD 672 XCH A,R5
004B 5480 673 ANL A,#080H
004D CD 674 XCH A,R5
675 ; if (poll == NVM_DATA_POLL) // compare DQ7
676 ; SOURCE LINE # 200
004E BD8006 677 CJNE R5,#080H,?C0012
678 ; {
679 ; SOURCE LINE # 201
680 ; done = TRUE; // the flash erased OK at the same
681 ; SOURCE LINE # 202
0051 7F01 682 MOV R7,#01H
683 ; // time timout error occured, indicate successful exit criteria
684 ; err = FALSE;
685 ; SOURCE LINE # 204
0053 E4 686 CLR A
0054 FE 687 MOV R6,A
688 ; }
689 ; SOURCE LINE # 205
0055 8006 690 SJMP ?C0011
0057 691 ?C0012:
692 ; else
693 ; {
694 ; SOURCE LINE # 207
695 ; ((unsigned char volatile xdata *) 0x8000)[0x0555] = 0xF0;
696 ; SOURCE LINE # 208
0057 908555 697 MOV DPTR,#08555H
005A 74F0 698 MOV A,#0F0H
005C F0 699 MOVX @DPTR,A
700 ; // reset the flash array (short reset instruction)
701 ; }
702 ; SOURCE LINE # 210
703 ; }
704 ; SOURCE LINE # 211
005D 705 ?C0011:
706 ;
707 ; return err;
708 ; SOURCE LINE # 213
005D CF 709 XCH A,R7
005E EE 710 MOV A,R6
005F CF 711 XCH A,R7
712 ; }
713 ; SOURCE LINE # 214
0060 714 ?C0014:
0060 22 715 RET
716 ; END OF EraseMainFlashSector
717
A51 MACRO ASSEMBLER UPSD3400_USB_APP 09/13/2005 18:00:20 PAGE 12
718 ;
719 ;
720 ;
721 ;
722 ;
723 ;
724 ;
725 ; BOOL WriteToMainFlash(unsigned int addr,unsigned char wdat)
726
---- 727 RSEG ?PR?_WriteToMainFlash?UPSD3400_USB_APP
0000 728 L?0127:
729 USING 0
0000 900000 F 730 MOV DPTR,#UPSD_xreg+0E0H
0003 F0 731 MOVX @DPTR,A
0004 AD00 F 732 MOV R5,j?451
0006 733 L?0128:
0006 AF00 F 734 MOV R7,i?453+01H
0008 AE00 F 735 MOV R6,i?453
000A 736 _WriteToMainFlash:
737 USING 0
738 ; SOURCE LINE # 222
739 ;---- Variable 'addr?344' assigned to Register 'R6/R7' ----
740 ;---- Variable 'wdat?345' assigned to Register 'R5' ----
741 ; /******************************************************************************
742 ; Function : BOOL WriteToMainFlash()
743 ; Parameters : (unsigned int addr,unsigned char wbyte)
744 ; Description: Writes 1 byte to Main Flash
745 ; ******************************************************************************/
746 ; {
747 ; SOURCE LINE # 228
748 ; data unsigned char err,error,done;
749 ; data unsigned char poll,dat;
750 ;
751 ; err = FALSE;
752 ; SOURCE LINE # 232
753 ;---- Variable 'err?346' assigned to Register 'R4' ----
000A E4 754 CLR A
000B FC 755 MOV R4,A
756 ;
757 ; if ( ((unsigned char volatile xdata *) 0)[addr] != wdat)
758 ; SOURCE LINE # 234
000C 8F82 759 MOV DPL,R7
000E 8E83 760 MOV DPH,R6
0010 E0 761 MOVX A,@DPTR
0011 6D 762 XRL A,R5
0012 6057 763 JZ ?C0015
764 ; {
765 ; SOURCE LINE # 235
766 ; done = FALSE;
767 ; SOURCE LINE # 236
768 ;---- Variable 'done?348' assigned to Register 'R1' ----
0014 E4 769 CLR A
0015 F9 770 MOV R1,A
771 ; ((unsigned char volatile xdata *) 0)[0x8555] = 0xAA;
772 ; SOURCE LINE # 237
0016 908555 773 MOV DPTR,#08555H
0019 74AA 774 MOV A,#0AAH
001B F0 775 MOVX @DPTR,A
776 ; // unlock main flash, write 0xAA to addess 0xX555
777 ; ((unsigned char volatile xdata *) 0)[0x8AAA] = 0x55;
778 ; SOURCE LINE # 239
001C 908AAA 779 MOV DPTR,#08AAAH
001F 7455 780 MOV A,#055H
0021 F0 781 MOVX @DPTR,A
782 ; // unlock main flash, write 0x55 to addess 0xXAAA
783 ; ((unsigned char volatile xdata *) 0)[0x8555] = 0xA0;
A51 MACRO ASSEMBLER UPSD3400_USB_APP 09/13/2005 18:00:20 PAGE 13
784 ; SOURCE LINE # 241
0022 908555 785 MOV DPTR,#08555H
0025 74A0 786 MOV A,#0A0H
0027 F0 787 MOVX @DPTR,A
788 ; // write 0xA0 command to program
789 ; ((unsigned char volatile xdata *) 0)[addr] = wdat;
790 ; SOURCE LINE # 243
0028 8F82 791 MOV DPL,R7
002A 8E83 792 MOV DPH,R6
002C ED 793 MOV A,R5
002D F0 794 MOVX @DPTR,A
795 ; // write byte to flash
796 ; dat = wdat & NVM_DATA_POLL; // get bit DQ7 of the original dat
797 ; SOURCE LINE # 245
002E 5480 798 ANL A,#080H
0030 FD 799 MOV R5,A
800 ;---- Variable 'dat?350' assigned to Register 'R5' ----
0031 801 ?C0018:
802 ;
803 ; do // now use dat polling method to verify successful write
804 ; {
805 ; SOURCE LINE # 248
806 ; poll = ((unsigned char volatile xdata *) 0)[addr];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -