📄 29f040.txt
字号:
;郑州 汉威光电 刘海峰编制 (0371-62003091),欢迎交流
;***************字节读出********************
READCMD:
MOV DPH,TEMP1
MOV DPL,TEMP2
MOVX A,@DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC TEMP2
DJNZ TEMP3,READCMD
;********************芯片擦除*******************
;***********返回00H擦除成功,返回0FH擦除失败*****
ERASECHIP: MOV P1,#58H ;片地址有效
MOV DPTR,#5555H
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#2AAAH
MOV A,#55H
MOVX @DPTR,A
MOV DPTR,#5555H
MOV A,#80H
MOVX @DPTR,A
MOV DPTR,#5555H
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#2AAAH
MOV A,#55H
MOVX @DPTR,A
;MOV DPTR,#5555H
;MOV A,#10H ;全部擦除
;MOVX @DPTR,A
MOV P1,#58H ;块地址擦除
MOV A,#30H
MOVX @DPTR,A
MOV P1,#59H ;块地址擦除
MOV A,#30H
MOVX @DPTR,A
MOV P1,#5AH ;块地址擦除
MOV A,#30H
MOVX @DPTR,A
DQ7: MOVX A, @DPTR
;MOV SBUF,A ;状态监测
;JNB TI,$
;CLR TI
MOV C,ACC.7
JC OUTERA
MOV C,ACC.5
JC ERACHK
SJMP DQ7
ERACHK: MOVX A,@DPTR
MOV C,ACC.7
JNC ERAERR
OUTERA: MOV A, #00H
MOV SBUF,A ;擦除成功
JNB TI,$
CLR TI
RET
ERAERR: MOV A, #0FH ;擦除失败
MOV SBUF,A
JNB TI,$
CLR TI
SJMP ERASECHIP ;继续擦除
;****************字节写入*********************
WRICMD:
MOV DPTR,#5555H
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#2AAAH
MOV A,#55H
MOVX @DPTR,A
MOV DPTR,#5555H
MOV A,#0A0H
MOVX @DPTR,A
MOV DPL,TEMP1
MOV DPH,TEMP2
MOV A,SBUF
MOVX @DPTR,A
LCALL DELAY ;6个指令周期的延时
RET
DELAY: NOP ;AM29F040写入延迟
NOP
NOP
RET
***************************************************
;***********返回00H擦除成功,返回0FH擦除失败*****
ERASECHIP: ;CLR ES
MOV A,ERAF
;MOV SBUF,A ;擦除成功
;JNB TI,$
;CLR TI
CJNE A,#0FH,OUTERA ;芯片擦除标志位0F为未擦除
MOV ERAF,#00H ;芯片擦除标志位00H为已擦除
MOV P1,#58H ;片地址有效
MOV DPTR,#5555H
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#2AAAH
MOV A,#55H
MOVX @DPTR,A
MOV DPTR,#5555H
MOV A,#80H
MOVX @DPTR,A
MOV DPTR,#5555H
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#2AAAH
MOV A,#55H
MOVX @DPTR,A
;MOV DPTR,#5555H
;MOV A,#10H ;全部擦除
;MOVX @DPTR,A
MOV P1,#58H ;块地址擦除
MOV A,#30H
MOVX @DPTR,A
MOV P1,#59H ;块地址擦除
MOV A,#30H
MOVX @DPTR,A
MOV P1,#5AH ;块地址擦除
MOV A,#30H
MOVX @DPTR,A
DQ7: MOVX A, @DPTR
SETB WDT
NOP
CLR WDT
;MOV SBUF,A ;状态监测
;JNB TI,$
;CLR TI
MOV C,ACC.7
JC OUTERA
MOV C,ACC.5
JC ERACHK
SJMP DQ7
ERACHK: MOVX A,@DPTR
MOV C,ACC.7
JNC ERAERR
OUTERA: MOV A, #00H
MOV SBUF,A ;擦除成功
JNB TI,$
CLR TI
;SETB ES
RET
ERAERR: MOV A, #0FH ;擦除失败
MOV SBUF,A
JNB TI,$
CLR TI
;SJMP ERASECHIP ;继续擦除
;SETB ES
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -