📄 flash.lst
字号:
A51 MACRO ASSEMBLER FLASH 03/02/2006 16:52:27 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN Flash.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE Flash.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;===============================================================
2 ; 文件名称: Flash.ASM
3 ; 功能描述: 读/写Flash, 了解Flash的保护, 擦除特性.
4 ; 带保护写入0~127共128个数, 不带保护写入128个55H.
5 ;===============================================================
6
0000 7 START_ADDR EQU 0000H
5555 8 ADDR_UNLOCK1 EQU 5555H
2AAA 9 ADDR_UNLOCK2 EQU 2AAAH
10
008E 11 AUXR DATA 8EH
12
0000 13 ORG 0000H ;实验说明:
0000 020100 14 LJMP START ;分别运行程序到NOP, 观察存储区
0100 15 ORG 0100H ; X:0000H中的内容
0100 758E02 16 START: MOV AUXR, #02H ;使能外部RAM访问
0103 120121 17 LCALL PWRITE ;带保护写
0106 120198 18 LCALL DELAY ;延时
0109 00 19 NOP
010A 120141 20 LCALL UPWRITE ;不带保护写
010D 120198 21 LCALL DELAY
0110 00 22 NOP
0111 12014E 23 LCALL UPROT ;去除保护
0114 120141 24 LCALL UPWRITE ;不带保护写
0117 120198 25 LCALL DELAY
011A 00 26 NOP
011B 120173 27 LCALL ERASE ;芯片擦除
011E 00 28 NOP
011F 80FE 29 SJMP $
30 ;======带保护写(写入0~127)======
0121 905555 31 PWRITE: MOV DPTR, #ADDR_UNLOCK1
0124 74AA 32 MOV A, #0AAH
0126 F0 33 MOVX @DPTR, A
0127 902AAA 34 MOV DPTR, #ADDR_UNLOCK2
012A 7455 35 MOV A, #55H
012C F0 36 MOVX @DPTR, A
012D 905555 37 MOV DPTR, #ADDR_UNLOCK1
0130 74A0 38 MOV A, #0A0H
0132 F0 39 MOVX @DPTR, A
0133 900000 40 MOV DPTR, #START_ADDR
0136 7C80 41 MOV R4, #80H ;128
0138 7400 42 MOV A, #00H
013A F0 43 PWLP1: MOVX @DPTR, A
013B 0582 44 INC DPL
013D 04 45 INC A
013E DCFA 46 DJNZ R4, PWLP1
0140 22 47 RET
48 ;======不带保护写, 写入128字节的55H======
0141 900000 49 UPWRITE:MOV DPTR, #START_ADDR
0144 7C80 50 MOV R4, #80H
0146 7455 51 MOV A, #55H
0148 F0 52 UWLP1: MOVX @DPTR, A
0149 0582 53 INC DPL
014B DCFB 54 DJNZ R4, UWLP1
014D 22 55 RET
56 ;======去除保护特性======
014E 905555 57 UPROT: MOV DPTR, #ADDR_UNLOCK1
0151 74AA 58 MOV A, #0AAH
A51 MACRO ASSEMBLER FLASH 03/02/2006 16:52:27 PAGE 2
0153 F0 59 MOVX @DPTR, A
0154 902AAA 60 MOV DPTR, #ADDR_UNLOCK2
0157 7455 61 MOV A, #55H
0159 F0 62 MOVX @DPTR, A
015A 905555 63 MOV DPTR, #ADDR_UNLOCK1
015D 7480 64 MOV A, #80H
015F F0 65 MOVX @DPTR, A
0160 905555 66 MOV DPTR, #ADDR_UNLOCK1
0163 74AA 67 MOV A, #0AAH
0165 F0 68 MOVX @DPTR, A
0166 902AAA 69 MOV DPTR, #ADDR_UNLOCK2
0169 7455 70 MOV A, #55H
016B F0 71 MOVX @DPTR, A
016C 905555 72 MOV DPTR, #ADDR_UNLOCK1
016F 7420 73 MOV A, #20H
0171 F0 74 MOVX @DPTR, A
0172 22 75 RET
76 ;======芯片擦除, 擦除后全为FF======
0173 905555 77 ERASE: MOV DPTR, #ADDR_UNLOCK1
0176 74AA 78 MOV A, #0AAH
0178 F0 79 MOVX @DPTR, A
0179 902AAA 80 MOV DPTR, #ADDR_UNLOCK2
017C 7455 81 MOV A, #55H
017E F0 82 MOVX @DPTR, A
017F 905555 83 MOV DPTR, #ADDR_UNLOCK1
0182 7480 84 MOV A, #80H
0184 F0 85 MOVX @DPTR, A
0185 905555 86 MOV DPTR, #ADDR_UNLOCK1
0188 74AA 87 MOV A, #0AAH
018A F0 88 MOVX @DPTR, A
018B 902AAA 89 MOV DPTR, #ADDR_UNLOCK2
018E 7455 90 MOV A, #55H
0190 F0 91 MOVX @DPTR, A
0191 905555 92 MOV DPTR, #ADDR_UNLOCK1
0194 7410 93 MOV A, #10H
0196 F0 94 MOVX @DPTR, A
0197 22 95 RET
96
0198 7F50 97 DELAY: MOV R7, #50H
019A 7EF0 98 DLP1: MOV R6, #0F0H
019C 00 99 DLP2: NOP
019D DEFD 100 DJNZ R6, DLP2
019F DFF9 101 DJNZ R7, DLP1
01A1 22 102 RET
103
104 END
A51 MACRO ASSEMBLER FLASH 03/02/2006 16:52:27 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ADDR_UNLOCK1 . . . N NUMB 5555H A
ADDR_UNLOCK2 . . . N NUMB 2AAAH A
AUXR . . . . . . . D ADDR 008EH A
DELAY. . . . . . . C ADDR 0198H A
DLP1 . . . . . . . C ADDR 019AH A
DLP2 . . . . . . . C ADDR 019CH A
DPL. . . . . . . . D ADDR 0082H A
ERASE. . . . . . . C ADDR 0173H A
PWLP1. . . . . . . C ADDR 013AH A
PWRITE . . . . . . C ADDR 0121H A
START. . . . . . . C ADDR 0100H A
START_ADDR . . . . N NUMB 0000H A
UPROT. . . . . . . C ADDR 014EH A
UPWRITE. . . . . . C ADDR 0141H A
UWLP1. . . . . . . C ADDR 0148H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -