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

📄 calibriap.a51

📁 P89V51Rd2下的IAP flash读取
💻 A51
字号:
NAME	CALIBR_1

?PR?Write_IAP?CALIBR_1                   SEGMENT CODE 
?XD?Write_IAP?CALIBR_1                   SEGMENT XDATA OVERLAYABLE 
?PR?Read_IAP?CALIBR_1                    SEGMENT CODE 
?XD?Read_IAP?CALIBR_1                    SEGMENT XDATA OVERLAYABLE 
?PR?SecErase?CALIBR_1                    SEGMENT CODE 
?XD?SecErase?CALIBR_1                    SEGMENT XDATA OVERLAYABLE 
?PR?cRead_IAP?CALIBR_1                   SEGMENT CODE 
?XD?cRead_IAP?CALIBR_1                   SEGMENT XDATA OVERLAYABLE 
?PR?cWrite_IAP?CALIBR_1                  SEGMENT CODE 
?XD?cWrite_IAP?CALIBR_1                  SEGMENT XDATA OVERLAYABLE 
	PUBLIC	?cWrite_IAP?BYTE
	PUBLIC	cWrite_IAP
	PUBLIC	?cRead_IAP?BYTE
	PUBLIC	cRead_IAP
	PUBLIC	?SecErase?BYTE
	PUBLIC	SecErase
	PUBLIC	?Read_IAP?BYTE
	PUBLIC	Read_IAP
	PUBLIC	?Write_IAP?BYTE
	PUBLIC	Write_IAP

	RSEG  ?XD?SecErase?CALIBR_1
?SecErase?BYTE:
Sec_Address?243:   DS   2

	RSEG  ?XD?cRead_IAP?CALIBR_1
?cRead_IAP?BYTE:
Flash_Address?344:   DS   2

	RSEG  ?XD?cWrite_IAP?CALIBR_1
?cWrite_IAP?BYTE:
Flash_Address?445:   DS   2
      Value?446:   DS   1

	RSEG  ?XD?Read_IAP?CALIBR_1
?Read_IAP?BYTE:
Flash_Address?142:   DS   2

	RSEG  ?XD?Write_IAP?CALIBR_1
?Write_IAP?BYTE:
Flash_Address?040:   DS   2
      Value?041:   DS   4
;  #pragma src(CalibrIAP.a51)
;  unsigned char Write_IAP(unsigned int Flash_Address,float Value)

	RSEG  ?PR?Write_IAP?CALIBR_1
Write_IAP:
;  {
			PUSH	ACC
			PUSH	DPL
			PUSH	DPH
			MOV		R1,#02H
			ANL 	0B1H,#0FCH           ;change to boot flash
			MOV		DPTR,#Value?041
			MOVX	A,@DPTR
			MOV 	R5,A                 ;value
			MOV 	DPTR,#Flash_Address?040 
			MOVX	A,@DPTR
			MOV		R7,A                 ;address(upper)
			INC		DPTR
			MOVX	A,@DPTR
			MOV		R6,A                 ;address(lower)
			MOV		DPH,R7
			MOV		DPL,R6
			MOV		A,R5                 ;value
			PUSH    DPH
			PUSH    DPL
			LCALL	1FF0H                ;write
			JNZ		W1
			MOV		DPTR,#Value?041+01H  
			MOVX	A,@DPTR
			MOV 	R5,A                 ;value
			POP     DPL
			POP     DPH   
			INC     DPTR
			MOV		A,R5                 ;value
			PUSH    DPH
			PUSH    DPL
			LCALL	1FF0H
			JNZ		W1
			MOV		DPTR,#Value?041+02H
			MOVX	A,@DPTR
			MOV 	R5,A                 ;value
			POP     DPL
			POP     DPH
			INC     DPTR
			MOV		A,R5                 ;value
			PUSH    DPH
			PUSH    DPL
			LCALL	1FF0H                ;write
			JNZ		W1
			MOV		DPTR,#Value?041+03H
			MOVX	A,@DPTR
			MOV 	R5,A                 ;value
			POP     DPL
			POP     DPH
			INC     DPTR
			MOV		A,R5                 ;value
			LCALL	1FF0H                ;write
			JZ		W2
		W1: MOV 	R7,#01H
			LJMP	W3				
        W2:	MOV		R7,#00H
        W3: ORL		0B1H,#01H            ;return to user flash
        	POP		DPH
        	POP		DPL
        	POP		ACC
;  }
        	RET  	
; END OF Write_IAP

;  float Read_IAP(unsigned int Flash_Address)

	RSEG  ?PR?Read_IAP?CALIBR_1
Read_IAP:
;  {
            PUSH	ACC
			PUSH	DPH
			PUSH	DPL
			MOV		R1,#03H
			ANL 	0B1H,#0FCH          ;change to boot flash
			MOV 	DPTR,#Flash_Address?142 
			MOVX	A,@DPTR              
			MOV		R3,A                ;address(upper)
			INC		DPTR
			MOVX	A,@DPTR
			MOV		R2,A                ;address(lower)
			MOV		DPH,R3
			MOV		DPL,R2
			PUSH    DPH
			PUSH    DPL
			LCALL	1FF0H               ;read
			MOV		R4,A                ;return value(SEEE)
			POP     DPL
			POP     DPH
			INC		DPTR
			PUSH    DPH
			PUSH    DPL
			LCALL	1FF0H               ;read
			MOV		R5,A                ;return value(EMMM)
			POP     DPL
			POP     DPH
			INC		DPTR
			PUSH    DPH
			PUSH    DPL
			LCALL	1FF0H               ;read
			MOV		R6,A                ;return value(MMMM)
			POP     DPL
			POP     DPH
			INC		DPTR
			LCALL	1FF0H               ;read
			MOV		R7,A                ;return value(MMMM)
			ORL		0B1H,#01H           ;return to user flash
			POP		DPL
			POP		DPH
			POP		ACC		
;  }
         	RET  	
; END OF Read_IAP

;  unsigned char SecErase(unsigned int Sec_Address)

	RSEG  ?PR?SecErase?CALIBR_1
SecErase:
;  {
			PUSH ACC
			PUSH DPL
			PUSH DPH
			MOV     20H,#00
            SETB    008H
			MOV		R1,#08H
			ANL 	0B1H,#0FCH           ;change to boot flash
            MOV 	DPTR,#Sec_Address?243 
			MOVX	A,@DPTR
			MOV		R7,A                 ;address(upper)
			INC		DPTR
			MOVX	A,@DPTR
			MOV		R6,A                 ;address(lower)
			MOV		DPH,R7
			MOV		DPL,R6
			LCALL	1FF0H                ;ERASE
			JNZ		L1
			MOV		R7,#00H
			LJMP	L2
        L1: MOV 	R7,#01H	             
        L2: ORL		0B1H,#01H            ;return to user flash	
			POP  DPH
			POP  DPL
			POP  ACC
;  }
	        RET  	
; END OF SecErase

;  unsigned char cRead_IAP(unsigned int Flash_Address)

	RSEG  ?PR?cRead_IAP?CALIBR_1
cRead_IAP:
;  {
			PUSH	ACC
			PUSH	DPH
			PUSH	DPL
			MOV		R1,#03H
			ANL 	0B1H,#0FCH          ;change to boot flash
			MOV 	DPTR,#Flash_Address?344 
			MOVX	A,@DPTR              
			MOV		R3,A                ;address(upper)
			INC		DPTR
			MOVX	A,@DPTR
			MOV		R2,A                ;address(lower)
			MOV		DPH,R3
			MOV		DPL,R2
			LCALL	1FF0H               ;read
			MOV		R7,A                ;return value
			ORL		0B1H,#01H           ;return to user flash
			POP		DPL
			POP		DPH
			POP		ACC		
;  }
         	RET  	
; END OF cRead_IAP

;  unsigned char cWrite_IAP(unsigned int Flash_Address,unsigned char Value)

	RSEG  ?PR?cWrite_IAP?CALIBR_1
cWrite_IAP:
;  {
			PUSH	ACC
			PUSH	DPL
			PUSH	DPH
			MOV		R1,#02H
			ANL 	0B1H,#0FCH           ;change to boot flash
			MOV		DPTR,#Value?446
			MOVX	A,@DPTR
			MOV 	R5,A                 ;value
			MOV 	DPTR,#Flash_Address?445 
			MOVX	A,@DPTR
			MOV		R7,A                 ;address(upper)
			INC		DPTR
			MOVX	A,@DPTR
			MOV		R6,A                 ;address(lower)
			MOV		DPH,R7
			MOV		DPL,R6
			MOV		A,R5                 ;value
			LCALL	1FF0H                ;write
			JNZ		Z1
			MOV		R7,#00H
			LJMP	Z2	
		Z1: MOV		R7,#01H	
        Z2: ORL		0B1H,#01H            ;return to user flash
        	POP		DPH
        	POP		DPL
        	POP		ACC
;  }
        	RET  	
; END OF cWrite_IAP

	END





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -