📄 flash.lst
字号:
C51 COMPILER V7.06 FLASH 04/04/2009 12:20:10 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN Flash.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Flash.c BROWSE DEBUG OBJECTEXTEND CODE
stmt level source
1 /******************************************************/
2 /* 文件名: Flash.c */
3 /* 功能描述: */
4 /******************************************************/
5
6 #define START_ADDR ((unsigned char volatile xdata *) 0x0000)
7 #define ADDR_UNLOCK1 ((unsigned char volatile xdata *) 0x5555)
8 #define ADDR_UNLOCK2 ((unsigned char volatile xdata *) 0x2AAA)
9
10 sfr AUXR = 0x8E;
11
12 unsigned char DataBuf[64];
13
14 void init_data()
15 {
16 1 unsigned char i;
17 1 for(i=0; i<64; i++)
18 1 DataBuf[i] = i;
19 1 }
20
21 void delay()
22 {
23 1 unsigned int i;
24 1 for(i=0; i<1000; i++);
25 1 }
26
27 void unprotect() // 取消软件数据保护
28 {
29 1 *ADDR_UNLOCK1 = 0xAA;
30 1 *ADDR_UNLOCK2 = 0x55;
31 1 *ADDR_UNLOCK1 = 0x80;
32 1 *ADDR_UNLOCK1 = 0xAA;
33 1 *ADDR_UNLOCK2 = 0x55;
34 1 *ADDR_UNLOCK1 = 0x20;
35 1 }
36
37 void erase() // 芯片擦除
38 {
39 1 *ADDR_UNLOCK1 = 0xAA;
40 1 *ADDR_UNLOCK2 = 0x55;
41 1 *ADDR_UNLOCK1 = 0x80;
42 1 *ADDR_UNLOCK1 = 0xAA;
43 1 *ADDR_UNLOCK2 = 0x55;
44 1 *ADDR_UNLOCK1 = 0x10;
45 1 }
46
47 void unp_write(unsigned char *Buf, unsigned int len) // 无保护写
48 {
49 1 unsigned int i;
50 1 unsigned char *Des, *Src;
51 1 Des = Buf;
52 1 Src = DataBuf;
53 1 for(i=0; i<len; i++)
54 1 {
55 2 *Des = *Src;
C51 COMPILER V7.06 FLASH 04/04/2009 12:20:10 PAGE 2
56 2 Des++;
57 2 Src++;
58 2 }
59 1 }
60
61 void p_write(unsigned char *Buf, unsigned int len) // 带保护写
62 {
63 1 unsigned int i;
64 1 unsigned char *Des, *Src;
65 1 Des = Buf;
66 1 Src = DataBuf + 63;
67 1 *ADDR_UNLOCK1 = 0xAA;
68 1 *ADDR_UNLOCK2 = 0x55;
69 1 *ADDR_UNLOCK1 = 0xA0;
70 1 for(i=0; i<len; i++)
71 1 {
72 2 *Des = *Src;
73 2 Des++;
74 2 Src--;
75 2 }
76 1 }
77
78 void main()
79 {
80 1 AUXR = 0x2;
81 1 init_data();
82 1
83 1 p_write(START_ADDR, 64); // 带保护写
84 1 delay();
85 1
86 1 unp_write(START_ADDR, 64); // 不带保护写
87 1 delay();
88 1
89 1 unprotect(); // 去除保护
90 1 unp_write(START_ADDR, 64);
91 1 delay();
92 1
93 1 erase(); // 擦除
94 1
95 1 while(1);
96 1 }
97
98
C51 COMPILER V7.06 FLASH 04/04/2009 12:20:10 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION init_data (BEGIN)
; SOURCE LINE # 14
; SOURCE LINE # 15
; SOURCE LINE # 17
;---- Variable 'i' assigned to Register 'R7' ----
0000 E4 CLR A
0001 FF MOV R7,A
0002 ?C0001:
; SOURCE LINE # 18
0002 7400 R MOV A,#LOW DataBuf
0004 2F ADD A,R7
0005 F8 MOV R0,A
0006 A607 MOV @R0,AR7
0008 0F INC R7
0009 BF40F6 CJNE R7,#040H,?C0001
; SOURCE LINE # 19
000C ?C0004:
000C 22 RET
; FUNCTION init_data (END)
; FUNCTION delay (BEGIN)
; SOURCE LINE # 21
; SOURCE LINE # 22
; SOURCE LINE # 24
;---- Variable 'i' assigned to Register 'R6/R7' ----
0000 E4 CLR A
0001 FF MOV R7,A
0002 FE MOV R6,A
0003 ?C0005:
0003 0F INC R7
0004 BF0001 CJNE R7,#00H,?C0022
0007 0E INC R6
0008 ?C0022:
0008 BE03F8 CJNE R6,#03H,?C0005
000B BFE8F5 CJNE R7,#0E8H,?C0005
; SOURCE LINE # 25
000E ?C0008:
000E 22 RET
; FUNCTION delay (END)
; FUNCTION unprotect (BEGIN)
; SOURCE LINE # 27
; SOURCE LINE # 28
; SOURCE LINE # 29
0000 905555 MOV DPTR,#05555H
0003 74AA MOV A,#0AAH
0005 F0 MOVX @DPTR,A
; SOURCE LINE # 30
0006 902AAA MOV DPTR,#02AAAH
0009 7455 MOV A,#055H
000B F0 MOVX @DPTR,A
; SOURCE LINE # 31
000C 905555 MOV DPTR,#05555H
000F 7480 MOV A,#080H
0011 F0 MOVX @DPTR,A
; SOURCE LINE # 32
0012 74AA MOV A,#0AAH
0014 F0 MOVX @DPTR,A
; SOURCE LINE # 33
C51 COMPILER V7.06 FLASH 04/04/2009 12:20:10 PAGE 4
0015 902AAA MOV DPTR,#02AAAH
0018 7455 MOV A,#055H
001A F0 MOVX @DPTR,A
; SOURCE LINE # 34
001B 905555 MOV DPTR,#05555H
001E 7420 MOV A,#020H
0020 F0 MOVX @DPTR,A
; SOURCE LINE # 35
0021 22 RET
; FUNCTION unprotect (END)
; FUNCTION erase (BEGIN)
; SOURCE LINE # 37
; SOURCE LINE # 38
; SOURCE LINE # 39
0000 905555 MOV DPTR,#05555H
0003 74AA MOV A,#0AAH
0005 F0 MOVX @DPTR,A
; SOURCE LINE # 40
0006 902AAA MOV DPTR,#02AAAH
0009 7455 MOV A,#055H
000B F0 MOVX @DPTR,A
; SOURCE LINE # 41
000C 905555 MOV DPTR,#05555H
000F 7480 MOV A,#080H
0011 F0 MOVX @DPTR,A
; SOURCE LINE # 42
0012 74AA MOV A,#0AAH
0014 F0 MOVX @DPTR,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -