📄 flash.asm
字号:
;===============================================================
; 文件名称: Flash.ASM
; 功能描述: 读/写Flash, 了解Flash的保护, 擦除特性.
; 带保护写入0~127共128个数, 不带保护写入128个55H.
;===============================================================
START_ADDR EQU 0000H
ADDR_UNLOCK1 EQU 5555H
ADDR_UNLOCK2 EQU 2AAAH
AUXR DATA 8EH
ORG 0000H ;实验说明:
LJMP START ;分别运行程序到NOP, 观察存储区
ORG 0100H ; X:0000H中的内容
START: MOV AUXR, #02H ;使能外部RAM访问
LCALL PWRITE ;带保护写
LCALL DELAY ;延时
NOP
LCALL UPWRITE ;不带保护写
LCALL DELAY
NOP
LCALL UPROT ;去除保护
LCALL UPWRITE ;不带保护写
LCALL DELAY
NOP
LCALL ERASE ;芯片擦除
NOP
SJMP $
;======带保护写(写入0~127)======
PWRITE: MOV DPTR, #ADDR_UNLOCK1
MOV A, #0AAH
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK2
MOV A, #55H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #0A0H
MOVX @DPTR, A
MOV DPTR, #START_ADDR
MOV R4, #80H ;128
MOV A, #00H
PWLP1: MOVX @DPTR, A
INC DPL
INC A
DJNZ R4, PWLP1
RET
;======不带保护写, 写入128字节的55H======
UPWRITE:MOV DPTR, #START_ADDR
MOV R4, #80H
MOV A, #55H
UWLP1: MOVX @DPTR, A
INC DPL
DJNZ R4, UWLP1
RET
;======去除保护特性======
UPROT: MOV DPTR, #ADDR_UNLOCK1
MOV A, #0AAH
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK2
MOV A, #55H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #80H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #0AAH
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK2
MOV A, #55H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #20H
MOVX @DPTR, A
RET
;======芯片擦除, 擦除后全为FF======
ERASE: MOV DPTR, #ADDR_UNLOCK1
MOV A, #0AAH
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK2
MOV A, #55H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #80H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #0AAH
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK2
MOV A, #55H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #10H
MOVX @DPTR, A
RET
DELAY: MOV R7, #50H
DLP1: MOV R6, #0F0H
DLP2: NOP
DJNZ R6, DLP2
DJNZ R7, DLP1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -