📄 eeprom.src
字号:
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R4,A
MOV R5,A
MOV R3,#060H
MOV R2,#0EAH
MOV R1,A
MOV R0,A
SETB C
LCALL ?C?SLCMP
JC ?C0017
; {
; SOURCE LINE # 145
; if(AT25_IsReady()==1)
; SOURCE LINE # 146
LCALL AT25_IsReady
JC ?C0017
; {
; SOURCE LINE # 147
; break;
; SOURCE LINE # 148
; }
; SOURCE LINE # 149
; }
; SOURCE LINE # 150
?C0018:
MOV DPTR,#j?448+01H
MOVX A,@DPTR
INC A
MOVX @DPTR,A
JNZ ?C0016
MOV DPTR,#j?448
MOVX A,@DPTR
INC A
MOVX @DPTR,A
?C0071:
SJMP ?C0016
?C0017:
; if(j==60000)
; SOURCE LINE # 151
MOV DPTR,#j?448
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R4,A
MOV R5,A
MOV R3,#060H
MOV R2,#0EAH
MOV R1,A
MOV R0,A
CLR C
LCALL ?C?SLCMP
JZ ?C0021
; {
; SOURCE LINE # 152
; return;
; }
; SOURCE LINE # 154
?C0020:
;
; /* make sure that the device is write enabled */
; X_CS=0;
; SOURCE LINE # 157
CLR X_CS
; _nop_();
; SOURCE LINE # 158
NOP
; SPI_WriteByte(WREN);
; SOURCE LINE # 159
MOV R7,#06H
LCALL _SPI_WriteByte
; X_CS=1;
; SOURCE LINE # 160
SETB X_CS
; _nop_();
; SOURCE LINE # 161
NOP
; _nop_();
; SOURCE LINE # 162
NOP
;
; X_CS=0;
; SOURCE LINE # 164
CLR X_CS
; _nop_();
; SOURCE LINE # 165
NOP
; SPI_WriteByte(WRSR);
; SOURCE LINE # 166
MOV R7,#01H
LCALL _SPI_WriteByte
; SPI_WriteByte(status_data & 0x8C);
; SOURCE LINE # 167
MOV DPTR,#status_data?447
MOVX A,@DPTR
ANL A,#08CH
MOV R7,A
LCALL _SPI_WriteByte
; X_CS=1;
; SOURCE LINE # 168
SETB X_CS
; }
; SOURCE LINE # 169
?C0021:
RET
; END OF _AT25_SetStatusReg
;
;
;
;
; /*---------------------------------------------------------
; AT25_ReadArray()
;
; Function: Read data streams from AT25XXXA.
; Input: address,num_of_byte,destination
; Output: No return value.
; NOTE: The function do not report error if the parameters
; are wrong(eg.address>4096),it modify the parameters.
; So be careful.
; -----------------------------------------------------------*/
; void AT25_ReadArray(uint address, //from this address;
RSEG ?PR?_AT25_ReadArray?EEPROM
_AT25_ReadArray:
USING 0
; SOURCE LINE # 184
MOV DPTR,#address?549
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#destination?551
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#num_of_byte?550
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
; uint num_of_byte, //the number of bytes to read;
; uchar* destination //store the result.
; )
; {
; SOURCE LINE # 188
; uint i=0;
; SOURCE LINE # 189
CLR A
MOV DPTR,#i?552
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
; uint j=0;
; SOURCE LINE # 190
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
;
; /* Filter the parameters */
; if(num_of_byte>4096) num_of_byte=1;
; SOURCE LINE # 193
SETB C
MOV A,R5
SUBB A,#00H
MOV A,R4
SUBB A,#010H
JC ?C0022
MOV DPTR,#num_of_byte?550
CLR A
MOVX @DPTR,A
INC DPTR
INC A
MOVX @DPTR,A
?C0022:
; if(address>4096) address=0;
; SOURCE LINE # 194
SETB C
MOV DPTR,#address?549+01H
MOVX A,@DPTR
SUBB A,#00H
MOV DPTR,#address?549
MOVX A,@DPTR
SUBB A,#010H
JC ?C0023
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0023:
;
; /* wait when device is busy */
; //while(!AT25_IsReady()); //jerkoh
;
; for(j=0;j<60000;j++)
; SOURCE LINE # 199
CLR A
MOV DPTR,#j?553
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0024:
MOV DPTR,#j?553
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R4,A
MOV R5,A
MOV R3,#060H
MOV R2,#0EAH
MOV R1,A
MOV R0,A
SETB C
LCALL ?C?SLCMP
JC ?C0025
; {
; SOURCE LINE # 200
; if(AT25_IsReady()==1)
; SOURCE LINE # 201
LCALL AT25_IsReady
JC ?C0025
; {
; SOURCE LINE # 202
; break;
; SOURCE LINE # 203
; }
; SOURCE LINE # 204
; }
; SOURCE LINE # 205
?C0026:
MOV DPTR,#j?553+01H
MOVX A,@DPTR
INC A
MOVX @DPTR,A
JNZ ?C0024
MOV DPTR,#j?553
MOVX A,@DPTR
INC A
MOVX @DPTR,A
?C0072:
SJMP ?C0024
?C0025:
; if(j==60000)
; SOURCE LINE # 206
MOV DPTR,#j?553
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R4,A
MOV R5,A
MOV R3,#060H
MOV R2,#0EAH
MOV R1,A
MOV R0,A
CLR C
LCALL ?C?SLCMP
JZ ?C0029
; {
; SOURCE LINE # 207
; return;
; }
; SOURCE LINE # 209
?C0028:
;
; X_CS=0;//Enable the AT25XXXA.
; SOURCE LINE # 211
CLR X_CS
; _nop_();
; SOURCE LINE # 212
NOP
;
; SPI_WriteByte(READ);//op_code
; SOURCE LINE # 214
MOV R7,#03H
LCALL _SPI_WriteByte
; SPI_WriteByte((uchar)((address & 0x0F00)>>8)); //write address A11~A0
; SOURCE LINE # 215
MOV DPTR,#address?549
MOVX A,@DPTR
ANL A,#0FH
MOV R7,A
LCALL _SPI_WriteByte
; SPI_WriteByte((uchar)(address & 0x00FF));
; SOURCE LINE # 216
MOV DPTR,#address?549
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL _SPI_WriteByte
;
;
; for(i=0;i<num_of_byte;i++)
; SOURCE LINE # 219
CLR A
MOV DPTR,#i?552
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0030:
MOV DPTR,#num_of_byte?550
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR C
MOV DPTR,#i?552+01H
MOVX A,@DPTR
SUBB A,R7
MOV DPTR,#i?552
MOVX A,@DPTR
SUBB A,R6
JNC ?C0031
; {
; SOURCE LINE # 220
; *destination=SPI_ReadByte();
; SOURCE LINE # 221
LCALL SPI_ReadByte
MOV DPTR,#destination?551
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,R7
LCALL ?C?CSTPTR
; destination++;
; SOURCE LINE # 222
MOV DPTR,#destination?551+01H
CLR A
MOV B,#01H
LCALL ?C?IILDX
; }
; SOURCE LINE # 223
MOV DPTR,#i?552+01H
MOVX A,@DPTR
INC A
MOVX @DPTR,A
JNZ ?C0030
MOV DPTR,#i?552
MOVX A,@DPTR
INC A
MOVX @DPTR,A
?C0073:
SJMP ?C0030
?C0031:
;
; X_CS=1;//Disable the AT25XXXA.
; SOURCE LINE # 225
SETB X_CS
;
; }
; SOURCE LINE # 227
?C0029:
RET
; END OF _AT25_ReadArray
;
;
;
; /*---------------------------------------------------------
; AT25_ReadByte()
;
; Function: Read only one byte from the AT25XXXA,as a return
; value.
; -----------------------------------------------------------*/
; /*
; uchar AT25_ReadByte(uint address)
; {
; uchar temp[1];
;
; AT25_ReadArray(address,1,&temp);
; return temp[0];
; }
; */
;
;
; /*---------------------------------------------------------
; AT25_WritePage()
;
; Function: Write data(<=32 bytes) to the AT25XXXA.
; Input: address,num_of_byte,source
; Output: No return value.
; NOTE: The function do not report error if the parameters
; are wrong(eg.address>4096),it modify the parameters.
; So be careful.
; -----------------------------------------------------------*/
; void AT25_WritePage(uint address, //from this address;
RSEG ?PR?_AT25_WritePage?EEPROM
_AT25_WritePage:
USING 0
; SOURCE LINE # 258
MOV DPTR,#address?654
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#source?656
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#num_of_byte?655
MOV A,R5
MOVX @DPTR,A
; uchar num_of_byte, //the number(<32) of bytes to write;
; uchar* source //data to write.
; )
; {
; SOURCE LINE # 262
; uchar i=0;
; SOURCE LINE # 263
CLR A
MOV DPTR,#i?657
MOVX @DPTR,A
; uint j=0;
; SOURCE LINE # 264
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
; /* Filter the parameters */
; if(num_of_byte>32) num_of_byte=32;
; SOURCE LINE # 266
MOV A,R5
SETB C
SUBB A,#020H
JC ?C0033
MOV DPTR,#num_of_byte?655
MOV A,#020H
MOVX @DPTR,A
?C0033:
; if(address>4096) address=0;
; SOURCE LINE # 267
SETB C
MOV DPTR,#address?654+01H
MOVX A,@DPTR
SUBB A,#00H
MOV DPTR,#address?654
MOVX A,@DPTR
SUBB A,#010H
JC ?C0034
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0034:
;
; /* make sure that the device is ready */
; /* NOTE:No time out strategy here. */
; //while(!AT25_IsReady()); //jerkoh
;
; for(j=0;j<60000;j++)
; SOURCE LINE # 273
CLR A
MOV DPTR,#j?658
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0035:
MOV DPTR,#j?658
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R4,A
MOV R5,A
MOV R3,#060H
MOV R2,#0EAH
MOV R1,A
MOV R0,A
SETB C
LCALL ?C?SLCMP
JC ?C0036
; {
; SOURCE LINE # 274
; if(AT25_IsReady()==1)
; SOURCE LINE # 275
LCALL AT25_IsReady
JC ?C0036
; {
; SOURCE LINE # 276
; break;
; SOURCE LINE # 277
; }
; SOURCE LINE # 278
; }
; SOURCE LINE # 279
?C0037:
MOV DPTR,#j?658+01H
MOVX A,@DPTR
INC A
MOVX @DPTR,A
JNZ ?C0035
MOV DPTR,#j?658
MOVX A,@DPTR
INC A
MOVX @DPTR,A
?C0074:
SJMP ?C0035
?C0036:
; if(j==60000)
; SOURCE LINE # 280
MOV DPTR,#j?658
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R4,A
MOV R5,A
MOV R3,#060H
MOV R2,#0EAH
MOV R1,A
MOV R0,A
CLR C
LCALL ?C?SLCMP
JZ ?C0040
; {
; SOURCE LINE # 281
; return;
; }
; SOURCE LINE # 283
?C0039:
;
;
; /* make sure that the device is write enabled */
; X_CS=0;
; SOURCE LINE # 287
CLR X_CS
; _nop_();
; SOURCE LINE # 288
NOP
; SPI_WriteByte(WREN);
; SOURCE LINE # 289
MOV R7,#06H
LCALL _SPI_WriteByte
; X_CS=1;
; SOURCE LINE # 290
SETB X_CS
; _nop_();
; SOURCE LINE # 291
NOP
; _nop_();
; SOURCE LINE # 292
NOP
;
; /* write op_code,address and data into the device */
; X_CS=0;
; SOURCE LINE # 295
CLR X_CS
; _nop_();
; SOURCE LINE # 296
NOP
; SPI_WriteByte(WRITE);//op_code
; SOURCE LINE # 297
MOV R7,#02H
LCALL _SPI_WriteByte
; SPI_WriteByte((uchar)((address & 0x0F00)>>8)); //write address A11~A0
; SOURCE LINE # 298
MOV DPTR,#address?654
MOVX A,@DPTR
ANL A,#0FH
MOV R7,A
LCALL _SPI_WriteByte
; SPI_WriteByte((uchar)(address & 0x00FF));
; SOURCE LINE # 299
MOV DPTR,#address?654
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL _SPI_WriteByte
;
;
; for(i=0;i<num_of_byte;i++)
; SOURCE LINE # 302
CLR A
MOV DPTR,#i?657
MOVX @DPTR,A
?C0041:
MOV DPTR,#num_of_byte?655
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#i?657
MOVX A,@DPTR
CLR C
SUBB A,R7
JNC ?C0042
; {
; SOURCE LINE # 303
;
; SPI_WriteByte(*source);
; SOURCE LINE # 305
MOV DPTR,#source?656
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?CLDPTR
MOV R7,A
LCALL _SPI_WriteByte
; source++;
; SOURCE LINE # 306
MOV DPTR,#source?656+01H
CLR A
MOV B,#01H
LCALL ?C?IILDX
; }
; SOURCE LINE # 307
MOV DPTR,#i?657
MOVX A,@DPTR
INC A
MOVX @DPTR,A
SJMP ?C0041
?C0042:
; X_CS=1;
; SOURCE LINE # 308
SETB X_CS
;
; }
; SOURCE LINE # 310
?C0040:
RET
; END OF _AT25_WritePage
;
;
;
; /*---------------------------------------------------------
; Init_AT25XXX()
;
; Function: Initialize the AT25XXXA.
; Input: None.
; Output: None.
; NOTE: This function initialize the AT25XXXA with no
; data protected and #WP disable.
; -----------------------------------------------------------*/
; void Init_AT25XXX(uchar SetSR)
RSEG ?PR?_Init_AT25XXX?EEPROM
_Init_AT25XXX:
USING 0
; SOURCE LINE # 323
;---- Variable 'SetSR?759' assigned to Register 'R7' ----
; {
; SOURCE LINE # 324
; AT25_SetStatusReg(SetSR);
; SOURCE LINE # 325
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -