📄 eeprom.ls1
字号:
---- 664 RSEG ?PR?_AT25_SetStatusReg?EEPROM
0000 665 _AT25_SetStatusReg:
666 USING 0
667 ; SOURCE LINE # 138
0000 900000 F 668 MOV DPTR,#status_data?447
0003 EF 669 MOV A,R7
0004 F0 670 MOVX @DPTR,A
671 ; {
672 ; SOURCE LINE # 139
673 ; uint j;
674 ; /* wait when device is busy */
675 ; //while(!AT25_IsReady()); //jerkoh
676 ;
677 ; for(j=0;j<60000;j++)
678 ; SOURCE LINE # 144
0005 E4 679 CLR A
0006 A3 680 INC DPTR
0007 F0 681 MOVX @DPTR,A
0008 A3 682 INC DPTR
0009 F0 683 MOVX @DPTR,A
000A 684 ?C0016:
000A 900000 F 685 MOV DPTR,#j?448
000D E0 686 MOVX A,@DPTR
000E FE 687 MOV R6,A
000F A3 688 INC DPTR
0010 E0 689 MOVX A,@DPTR
0011 FF 690 MOV R7,A
0012 E4 691 CLR A
0013 FC 692 MOV R4,A
0014 FD 693 MOV R5,A
0015 7B60 694 MOV R3,#060H
0017 7AEA 695 MOV R2,#0EAH
0019 F9 696 MOV R1,A
001A F8 697 MOV R0,A
001B D3 698 SETB C
001C 120000 F 699 LCALL ?C?SLCMP
001F 4015 700 JC ?C0017
701 ; {
702 ; SOURCE LINE # 145
703 ; if(AT25_IsReady()==1)
704 ; SOURCE LINE # 146
0021 120000 F 705 LCALL AT25_IsReady
0024 4010 706 JC ?C0017
707 ; {
708 ; SOURCE LINE # 147
709 ; break;
710 ; SOURCE LINE # 148
711 ; }
712 ; SOURCE LINE # 149
713 ; }
714 ; SOURCE LINE # 150
A51 MACRO ASSEMBLER EEPROM 08/03/2009 16:57:28 PAGE 12
0026 715 ?C0018:
0026 900000 F 716 MOV DPTR,#j?448+01H
0029 E0 717 MOVX A,@DPTR
002A 04 718 INC A
002B F0 719 MOVX @DPTR,A
002C 70DC 720 JNZ ?C0016
002E 900000 F 721 MOV DPTR,#j?448
0031 E0 722 MOVX A,@DPTR
0032 04 723 INC A
0033 F0 724 MOVX @DPTR,A
0034 725 ?C0071:
0034 80D4 726 SJMP ?C0016
0036 727 ?C0017:
728 ; if(j==60000)
729 ; SOURCE LINE # 151
0036 900000 F 730 MOV DPTR,#j?448
0039 E0 731 MOVX A,@DPTR
003A FE 732 MOV R6,A
003B A3 733 INC DPTR
003C E0 734 MOVX A,@DPTR
003D FF 735 MOV R7,A
003E E4 736 CLR A
003F FC 737 MOV R4,A
0040 FD 738 MOV R5,A
0041 7B60 739 MOV R3,#060H
0043 7AEA 740 MOV R2,#0EAH
0045 F9 741 MOV R1,A
0046 F8 742 MOV R0,A
0047 C3 743 CLR C
0048 120000 F 744 LCALL ?C?SLCMP
004B 6020 745 JZ ?C0021
746 ; {
747 ; SOURCE LINE # 152
748 ; return;
749 ; }
750 ; SOURCE LINE # 154
004D 751 ?C0020:
752 ;
753 ; /* make sure that the device is write enabled */
754 ; X_CS=0;
755 ; SOURCE LINE # 157
004D C291 756 CLR X_CS
757 ; _nop_();
758 ; SOURCE LINE # 158
004F 00 759 NOP
760 ; SPI_WriteByte(WREN);
761 ; SOURCE LINE # 159
0050 7F06 762 MOV R7,#06H
0052 120000 F 763 LCALL _SPI_WriteByte
764 ; X_CS=1;
765 ; SOURCE LINE # 160
0055 D291 766 SETB X_CS
767 ; _nop_();
768 ; SOURCE LINE # 161
0057 00 769 NOP
770 ; _nop_();
771 ; SOURCE LINE # 162
0058 00 772 NOP
773 ;
774 ; X_CS=0;
775 ; SOURCE LINE # 164
0059 C291 776 CLR X_CS
777 ; _nop_();
778 ; SOURCE LINE # 165
005B 00 779 NOP
780 ; SPI_WriteByte(WRSR);
A51 MACRO ASSEMBLER EEPROM 08/03/2009 16:57:28 PAGE 13
781 ; SOURCE LINE # 166
005C 7F01 782 MOV R7,#01H
005E 120000 F 783 LCALL _SPI_WriteByte
784 ; SPI_WriteByte(status_data & 0x8C);
785 ; SOURCE LINE # 167
0061 900000 F 786 MOV DPTR,#status_data?447
0064 E0 787 MOVX A,@DPTR
0065 548C 788 ANL A,#08CH
0067 FF 789 MOV R7,A
0068 120000 F 790 LCALL _SPI_WriteByte
791 ; X_CS=1;
792 ; SOURCE LINE # 168
006B D291 793 SETB X_CS
794 ; }
795 ; SOURCE LINE # 169
006D 796 ?C0021:
006D 22 797 RET
798 ; END OF _AT25_SetStatusReg
799
800 ;
801 ;
802 ;
803 ;
804 ; /*---------------------------------------------------------
805 ; AT25_ReadArray()
806 ;
807 ; Function: Read data streams from AT25XXXA.
808 ; Input: address,num_of_byte,destination
809 ; Output: No return value.
810 ; NOTE: The function do not report error if the parameters
811 ; are wrong(eg.address>4096),it modify the parameters.
812 ; So be careful.
813 ; -----------------------------------------------------------*/
814 ; void AT25_ReadArray(uint address, //from this address;
815
---- 816 RSEG ?PR?_AT25_ReadArray?EEPROM
0000 817 _AT25_ReadArray:
818 USING 0
819 ; SOURCE LINE # 184
0000 900000 F 820 MOV DPTR,#address?549
0003 EE 821 MOV A,R6
0004 F0 822 MOVX @DPTR,A
0005 A3 823 INC DPTR
0006 EF 824 MOV A,R7
0007 F0 825 MOVX @DPTR,A
0008 900000 F 826 MOV DPTR,#destination?551
000B EB 827 MOV A,R3
000C F0 828 MOVX @DPTR,A
000D A3 829 INC DPTR
000E EA 830 MOV A,R2
000F F0 831 MOVX @DPTR,A
0010 A3 832 INC DPTR
0011 E9 833 MOV A,R1
0012 F0 834 MOVX @DPTR,A
0013 900000 F 835 MOV DPTR,#num_of_byte?550
0016 EC 836 MOV A,R4
0017 F0 837 MOVX @DPTR,A
0018 A3 838 INC DPTR
0019 ED 839 MOV A,R5
001A F0 840 MOVX @DPTR,A
841 ; uint num_of_byte, //the number of bytes to re
ad;
842 ; uchar* destination //store the result.
843 ; )
844 ; {
845 ; SOURCE LINE # 188
A51 MACRO ASSEMBLER EEPROM 08/03/2009 16:57:28 PAGE 14
846 ; uint i=0;
847 ; SOURCE LINE # 189
001B E4 848 CLR A
001C 900000 F 849 MOV DPTR,#i?552
001F F0 850 MOVX @DPTR,A
0020 A3 851 INC DPTR
0021 F0 852 MOVX @DPTR,A
853 ; uint j=0;
854 ; SOURCE LINE # 190
0022 A3 855 INC DPTR
0023 F0 856 MOVX @DPTR,A
0024 A3 857 INC DPTR
0025 F0 858 MOVX @DPTR,A
859 ;
860 ; /* Filter the parameters */
861 ; if(num_of_byte>4096) num_of_byte=1;
862 ; SOURCE LINE # 193
0026 D3 863 SETB C
0027 ED 864 MOV A,R5
0028 9400 865 SUBB A,#00H
002A EC 866 MOV A,R4
002B 9410 867 SUBB A,#010H
002D 4008 868 JC ?C0022
002F 900000 F 869 MOV DPTR,#num_of_byte?550
0032 E4 870 CLR A
0033 F0 871 MOVX @DPTR,A
0034 A3 872 INC DPTR
0035 04 873 INC A
0036 F0 874 MOVX @DPTR,A
0037 875 ?C0022:
876 ; if(address>4096) address=0;
877 ; SOURCE LINE # 194
0037 D3 878 SETB C
0038 900000 F 879 MOV DPTR,#address?549+01H
003B E0 880 MOVX A,@DPTR
003C 9400 881 SUBB A,#00H
003E 900000 F 882 MOV DPTR,#address?549
0041 E0 883 MOVX A,@DPTR
0042 9410 884 SUBB A,#010H
0044 4004 885 JC ?C0023
0046 E4 886 CLR A
0047 F0 887 MOVX @DPTR,A
0048 A3 888 INC DPTR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -