📄 flash.lst
字号:
C51 COMPILER V8.08 FLASH 02/25/2009 00:36:12 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN flash.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE flash.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "head.h"
2 #include "AT89X52.H"
3
4 sfr ISP_DATA =0xe2;
5 sfr ISP_ADDRH =0xe3;
6 sfr ISP_ADDRL =0xe4;
7 sfr ISP_CMD =0xe5;
8 sfr ISP_TRIG =0xe6;
9 sfr ISP_CONTR =0xe7;
10
11 #define ISP_BYTE_READ 0x01
12 #define ISP_BYTE_PROGRAM 0x02
13 #define ISP_SECTOR_ERASE 0x03
14 #define WAIT_TIME 0x01
15 #define FLASH_BASE_ADD 0x8000
16
17 void flashB(uint dataadd ) //读写操作
18 {
19 1 ISP_ADDRH=(uchar)(dataadd>>8); //传递高地址
20 1 ISP_ADDRL=(uchar)(dataadd&0x00ff); //传递低地址
21 1 ISP_CONTR=WAIT_TIME; //设置等待时间
22 1 ISP_CONTR|=0x80; //允许ISP_IAP操作
23 1 ISP_TRIG=0X46; //触发
24 1 ISP_TRIG=0XB9; //触发
25 1 _nop_();
26 1 ISP_CONTR=0;
27 1 ISP_TRIG=0;
28 1 ISP_ADDRH=0xff;
29 1 ISP_ADDRL=0xff;
30 1 }
31
32 void flashByteR(uchar *buf,uchar sq,uint sta,uint len) //字节读
33 {
34 1 uint fdaadd;
35 1 uint ty;
36 1 fdaadd =FLASH_BASE_ADD+sq*512+sta;
37 1 ISP_CMD =ISP_BYTE_READ;
38 1 for(ty=0;ty<len;ty++)
39 1 {
40 2 flashB(fdaadd);
41 2 buf[ty]=ISP_DATA;
42 2 fdaadd++;
43 2 }
44 1 }
45 void flashWB(uchar*buf,uchar sq,uint len)//字节写
46 {
47 1 uint dataadd;
48 1 uint ty;
49 1 uchar t=0;
50 1 for(ty=0;ty<len;ty++)
51 1 {
52 2 if(ty==512*t)
53 2 {
54 3 dataadd =FLASH_BASE_ADD+sq*0X200;
55 3 ISP_CMD =ISP_SECTOR_ERASE;
C51 COMPILER V8.08 FLASH 02/25/2009 00:36:12 PAGE 2
56 3 flashB(dataadd);
57 3 sq++;
58 3 t++;
59 3 }
60 2 ISP_DATA =buf[ty];
61 2 ISP_CMD =ISP_BYTE_PROGRAM;
62 2 flashB(dataadd);
63 2 dataadd++;
64 2 }
65 1 ISP_DATA =0x55;
66 1 ISP_CMD =ISP_BYTE_PROGRAM;
67 1 flashB(dataadd);
68 1 dataadd++;
69 1 ISP_DATA =0xaa;
70 1 ISP_CMD =ISP_BYTE_PROGRAM;
71 1 flashB(dataadd);
72 1 }
73
74 void flashFByteR(float *buf,uchar sq,uint sta,uint len) //4字节读
75 {
76 1 uint fdaadd;
77 1 uint ty;
78 1 union ITOC
79 1 {
80 1 uchar cda[4];
81 1 float ida;
82 1 } crc;
83 1 fdaadd =FLASH_BASE_ADD+sq*512+sta;
84 1 ISP_CMD =ISP_BYTE_READ;
85 1 for(ty=0;ty<len;ty++)
86 1 {
87 2 flashB(fdaadd);
88 2 crc.cda[0]=ISP_DATA;
89 2 fdaadd++;
90 2 flashB(fdaadd);
91 2 crc.cda[1]=ISP_DATA;
92 2 fdaadd++;
93 2 flashB(fdaadd);
94 2 crc.cda[2]=ISP_DATA;
95 2 fdaadd++;
96 2 flashB(fdaadd);
97 2 crc.cda[3]=ISP_DATA;
98 2 buf[ty]=crc.ida;
99 2 fdaadd++;
100 2
101 2 }
102 1 }
103
104 void flashW(float*buf,uchar sq,uint len) //四个字节写
105 {
106 1 uint dataadd;
107 1 uchar tt=0;
108 1 union ITOC
109 1 {
110 1 uchar cda[4];
111 1 float ida;
112 1 } crc;
113 1 uint ty;
114 1 for(ty=0;ty<len;ty++)
115 1 {
116 2 if((ty*4)==512*tt)
117 2 {
C51 COMPILER V8.08 FLASH 02/25/2009 00:36:12 PAGE 3
118 3 dataadd =FLASH_BASE_ADD+sq*0X200;
119 3 ISP_CMD =ISP_SECTOR_ERASE;
120 3 flashB(dataadd);
121 3 sq++;
122 3 tt++;
123 3 }
124 2 crc.ida=buf[ty];
125 2 ISP_DATA =crc.cda[0];
126 2 ISP_CMD =ISP_BYTE_PROGRAM;
127 2 flashB(dataadd);
128 2 dataadd++;
129 2 ISP_DATA =crc.cda[1];
130 2 ISP_CMD =ISP_BYTE_PROGRAM;
131 2 flashB(dataadd);
132 2 dataadd++;
133 2 ISP_DATA =crc.cda[2];
134 2 ISP_CMD =ISP_BYTE_PROGRAM;
135 2 flashB(dataadd);
136 2 dataadd++;
137 2 ISP_DATA =crc.cda[3];
138 2 ISP_CMD =ISP_BYTE_PROGRAM;
139 2 flashB(dataadd);
140 2 dataadd++;
141 2 }
142 1 ISP_DATA =0x55;
143 1 ISP_CMD =ISP_BYTE_PROGRAM;
144 1 flashB(dataadd);
145 1 dataadd++;
146 1 ISP_DATA =0xaa;
147 1 ISP_CMD =ISP_BYTE_PROGRAM;
148 1 flashB(dataadd);
149 1 }
150
151
152 void flashtW(int *buf,uchar sq,uint len)
153 {
154 1 uint dataadd;
155 1 uchar t=0;
156 1 uint Tn;
157 1 union ITOC
158 1 {
159 1 char cda[2];
160 1 int ida;
161 1 } crc;
162 1 for(Tn=0;Tn<len;Tn++)
163 1 {
164 2 if(Tn==128*t)
165 2 {
166 3 dataadd =FLASH_BASE_ADD+sq*0X200;
167 3 ISP_CMD =ISP_SECTOR_ERASE;//擦除一个扇区
168 3 flashB(dataadd);//擦除
169 3 sq++;
170 3
171 3 }
172 2 crc.ida=buf[Tn];
173 2 ISP_DATA =crc.cda[0];
174 2 ISP_CMD =ISP_BYTE_PROGRAM; //写入操作
175 2 flashB(dataadd);
176 2 dataadd++;
177 2 ISP_DATA =crc.cda[1];
178 2 ISP_CMD =ISP_BYTE_PROGRAM; //写入操作
179 2 flashB(dataadd);
C51 COMPILER V8.08 FLASH 02/25/2009 00:36:12 PAGE 4
180 2 dataadd++;
181 2 }
182 1 ISP_DATA =0x55;
183 1 ISP_CMD =ISP_BYTE_PROGRAM; //写入操作
184 1 flashB(dataadd);
185 1 dataadd++;
186 1 ISP_DATA =0xaa;
187 1 ISP_CMD =ISP_BYTE_PROGRAM; //写入操作
188 1 flashB(dataadd);
189 1 }
190
191 void flashtR(int*buf,uchar sq,uint sta,uint len)
192 {
193 1 uint fdaadd;
194 1 uint ty;
195 1 union ITOC
196 1 {
197 1 char cda[2];
198 1 int ida;
199 1 } crc;
200 1 fdaadd =FLASH_BASE_ADD+sq*512+sta;
201 1 ISP_CMD =ISP_BYTE_READ;
202 1 for(ty=0;ty<len;ty++)
203 1 {
204 2 flashB(fdaadd);
205 2 crc.cda[0]=ISP_DATA;
206 2 fdaadd++;
207 2 flashB(fdaadd);
208 2 crc.cda[1]=ISP_DATA;
209 2 buf[ty]=crc.ida;
210 2 fdaadd++;
211 2 }
212 1 }
213
214
215
216
217
218
219
220
221
222
223
224
225
226
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 933 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 81
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -