📄 eeprom.ls1
字号:
0049 F0 889 MOVX @DPTR,A
004A 890 ?C0023:
891 ;
892 ; /* wait when device is busy */
893 ; //while(!AT25_IsReady()); //jerkoh
894 ;
895 ; for(j=0;j<60000;j++)
896 ; SOURCE LINE # 199
004A E4 897 CLR A
004B 900000 F 898 MOV DPTR,#j?553
004E F0 899 MOVX @DPTR,A
004F A3 900 INC DPTR
0050 F0 901 MOVX @DPTR,A
0051 902 ?C0024:
0051 900000 F 903 MOV DPTR,#j?553
0054 E0 904 MOVX A,@DPTR
0055 FE 905 MOV R6,A
0056 A3 906 INC DPTR
0057 E0 907 MOVX A,@DPTR
0058 FF 908 MOV R7,A
0059 E4 909 CLR A
005A FC 910 MOV R4,A
005B FD 911 MOV R5,A
A51 MACRO ASSEMBLER EEPROM 08/03/2009 16:57:28 PAGE 15
005C 7B60 912 MOV R3,#060H
005E 7AEA 913 MOV R2,#0EAH
0060 F9 914 MOV R1,A
0061 F8 915 MOV R0,A
0062 D3 916 SETB C
0063 120000 F 917 LCALL ?C?SLCMP
0066 4015 918 JC ?C0025
919 ; {
920 ; SOURCE LINE # 200
921 ; if(AT25_IsReady()==1)
922 ; SOURCE LINE # 201
0068 120000 F 923 LCALL AT25_IsReady
006B 4010 924 JC ?C0025
925 ; {
926 ; SOURCE LINE # 202
927 ; break;
928 ; SOURCE LINE # 203
929 ; }
930 ; SOURCE LINE # 204
931 ; }
932 ; SOURCE LINE # 205
006D 933 ?C0026:
006D 900000 F 934 MOV DPTR,#j?553+01H
0070 E0 935 MOVX A,@DPTR
0071 04 936 INC A
0072 F0 937 MOVX @DPTR,A
0073 70DC 938 JNZ ?C0024
0075 900000 F 939 MOV DPTR,#j?553
0078 E0 940 MOVX A,@DPTR
0079 04 941 INC A
007A F0 942 MOVX @DPTR,A
007B 943 ?C0072:
007B 80D4 944 SJMP ?C0024
007D 945 ?C0025:
946 ; if(j==60000)
947 ; SOURCE LINE # 206
007D 900000 F 948 MOV DPTR,#j?553
0080 E0 949 MOVX A,@DPTR
0081 FE 950 MOV R6,A
0082 A3 951 INC DPTR
0083 E0 952 MOVX A,@DPTR
0084 FF 953 MOV R7,A
0085 E4 954 CLR A
0086 FC 955 MOV R4,A
0087 FD 956 MOV R5,A
0088 7B60 957 MOV R3,#060H
008A 7AEA 958 MOV R2,#0EAH
008C F9 959 MOV R1,A
008D F8 960 MOV R0,A
008E C3 961 CLR C
008F 120000 F 962 LCALL ?C?SLCMP
0092 6065 963 JZ ?C0029
964 ; {
965 ; SOURCE LINE # 207
966 ; return;
967 ; }
968 ; SOURCE LINE # 209
0094 969 ?C0028:
970 ;
971 ; X_CS=0;//Enable the AT25XXXA.
972 ; SOURCE LINE # 211
0094 C291 973 CLR X_CS
974 ; _nop_();
975 ; SOURCE LINE # 212
0096 00 976 NOP
977 ;
A51 MACRO ASSEMBLER EEPROM 08/03/2009 16:57:28 PAGE 16
978 ; SPI_WriteByte(READ);//op_code
979 ; SOURCE LINE # 214
0097 7F03 980 MOV R7,#03H
0099 120000 F 981 LCALL _SPI_WriteByte
982 ; SPI_WriteByte((uchar)((address & 0x0F00)>>8)); //write address A11~A0
983 ; SOURCE LINE # 215
009C 900000 F 984 MOV DPTR,#address?549
009F E0 985 MOVX A,@DPTR
00A0 540F 986 ANL A,#0FH
00A2 FF 987 MOV R7,A
00A3 120000 F 988 LCALL _SPI_WriteByte
989 ; SPI_WriteByte((uchar)(address & 0x00FF));
990 ; SOURCE LINE # 216
00A6 900000 F 991 MOV DPTR,#address?549
00A9 A3 992 INC DPTR
00AA E0 993 MOVX A,@DPTR
00AB FF 994 MOV R7,A
00AC 120000 F 995 LCALL _SPI_WriteByte
996 ;
997 ;
998 ; for(i=0;i<num_of_byte;i++)
999 ; SOURCE LINE # 219
00AF E4 1000 CLR A
00B0 900000 F 1001 MOV DPTR,#i?552
00B3 F0 1002 MOVX @DPTR,A
00B4 A3 1003 INC DPTR
00B5 F0 1004 MOVX @DPTR,A
00B6 1005 ?C0030:
00B6 900000 F 1006 MOV DPTR,#num_of_byte?550
00B9 E0 1007 MOVX A,@DPTR
00BA FE 1008 MOV R6,A
00BB A3 1009 INC DPTR
00BC E0 1010 MOVX A,@DPTR
00BD FF 1011 MOV R7,A
00BE C3 1012 CLR C
00BF 900000 F 1013 MOV DPTR,#i?552+01H
00C2 E0 1014 MOVX A,@DPTR
00C3 9F 1015 SUBB A,R7
00C4 900000 F 1016 MOV DPTR,#i?552
00C7 E0 1017 MOVX A,@DPTR
00C8 9E 1018 SUBB A,R6
00C9 502C 1019 JNC ?C0031
1020 ; {
1021 ; SOURCE LINE # 220
1022 ; *destination=SPI_ReadByte();
1023 ; SOURCE LINE # 221
00CB 120000 F 1024 LCALL SPI_ReadByte
00CE 900000 F 1025 MOV DPTR,#destination?551
00D1 E0 1026 MOVX A,@DPTR
00D2 FB 1027 MOV R3,A
00D3 A3 1028 INC DPTR
00D4 E0 1029 MOVX A,@DPTR
00D5 FA 1030 MOV R2,A
00D6 A3 1031 INC DPTR
00D7 E0 1032 MOVX A,@DPTR
00D8 F9 1033 MOV R1,A
00D9 EF 1034 MOV A,R7
00DA 120000 F 1035 LCALL ?C?CSTPTR
1036 ; destination++;
1037 ; SOURCE LINE # 222
00DD 900000 F 1038 MOV DPTR,#destination?551+01H
00E0 E4 1039 CLR A
00E1 75F001 1040 MOV B,#01H
00E4 120000 F 1041 LCALL ?C?IILDX
1042 ; }
1043 ; SOURCE LINE # 223
A51 MACRO ASSEMBLER EEPROM 08/03/2009 16:57:28 PAGE 17
00E7 900000 F 1044 MOV DPTR,#i?552+01H
00EA E0 1045 MOVX A,@DPTR
00EB 04 1046 INC A
00EC F0 1047 MOVX @DPTR,A
00ED 70C7 1048 JNZ ?C0030
00EF 900000 F 1049 MOV DPTR,#i?552
00F2 E0 1050 MOVX A,@DPTR
00F3 04 1051 INC A
00F4 F0 1052 MOVX @DPTR,A
00F5 1053 ?C0073:
00F5 80BF 1054 SJMP ?C0030
00F7 1055 ?C0031:
1056 ;
1057 ; X_CS=1;//Disable the AT25XXXA.
1058 ; SOURCE LINE # 225
00F7 D291 1059 SETB X_CS
1060 ;
1061 ; }
1062 ; SOURCE LINE # 227
00F9 1063 ?C0029:
00F9 22 1064 RET
1065 ; END OF _AT25_ReadArray
1066
1067 ;
1068 ;
1069 ;
1070 ; /*---------------------------------------------------------
1071 ; AT25_ReadByte()
1072 ;
1073 ; Function: Read only one byte from the AT25XXXA,as a return
1074 ; value.
1075 ; -----------------------------------------------------------*/
1076 ; /*
1077 ; uchar AT25_ReadByte(uint address)
1078 ; {
1079 ; uchar temp[1];
1080 ;
1081 ; AT25_ReadArray(address,1,&temp);
1082 ; return temp[0];
1083 ; }
1084 ; */
1085 ;
1086 ;
1087 ; /*---------------------------------------------------------
1088 ; AT25_WritePage()
1089 ;
1090 ; Function: Write data(<=32 bytes) to the AT25XXXA.
1091 ; Input: address,num_of_byte,source
1092 ; Output: No return value.
1093 ; NOTE: The function do not report error if the parameters
1094 ; are wrong(eg.address>4096),it modify the parameters.
1095 ; So be careful.
1096 ; -----------------------------------------------------------*/
1097 ; void AT25_WritePage(uint address, //from this address;
1098
---- 1099 RSEG ?PR?_AT25_WritePage?EEPROM
0000 1100 _AT25_WritePage:
1101 USING 0
1102 ; SOURCE LINE # 258
0000 900000 F 1103 MOV DPTR,#address?654
0003 EE 1104 MOV A,R6
0004 F0 1105 MOVX @DPTR,A
0005 A3 1106 INC DPTR
0006 EF 1107 MOV A,R7
0007 F0 1108 MOVX @DPTR,A
0008 900000 F 1109 MOV DPTR,#source?656
A51 MACRO ASSEMBLER EEPROM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -