📄 calibriap.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 + -