⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom.src

📁 c8051f310xmodembootloader.rar
💻 SRC
📖 第 1 页 / 共 3 页
字号:
	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 + -