📄 flash.lst
字号:
C51 COMPILER V7.02b FLASH 01/03/2006 09:50:07 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN .\output\flash.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE flash.c LARGE BROWSE DEBUG OBJECTEXTEND TABS(3) OBJECT(.\output\flash.obj)
stmt level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安铭朗电子科技有限责任公司
3 * All rights reserved.
4 *
5 * 文件名称: flash.C
6 * 文件标识: none
7 * 适用器件: w29c020
8 *
9 * 摘 要: 本文件是字库(GB2312)读写子程序;使用外部22.1184MHz晶振.
10 *
11 * 当前版本:1.0
12 * 作 者:卢 阳
13 * 完成日期:2004年11月14日
14 *
15 * 历史版本:0.9
16 * 原作者 : 李林利
17 * 完成日期:2004年1月1日
18 *************************************************************************************/
19
20 /************************************************************************************/
21 // 引用外部头文件
22
23 #include "c8051f040.h"
24 #include "flash.h"
25 #include "delay.h"
26
27 /************************************************************************************/
28
29 /***********************************************************************************
30 * 函数名称:write_protect_enable;
31 *
32 * 函数功能描述:Flash写保护函数;1:打开保护进行读写,0:进入保护状态模式;
33 *
34 * 输入参数:Flash写保护开关;
35 *
36 * 返回数据:none;
37 *
38 * 注意: none;
39 ************************************************************************************/
40
41 void write_protect_enable(bool flag)
42 {
43 1 unsigned char xdata *ad;
44 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
45 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
46 1 if(flag==0)
47 1 {
48 2 P4&=0xf5;
49 2 P4|=0x05;
50 2 ad=0xd555;
51 2 *ad=0xaa;
52 2
53 2 P4&=0xf2;
54 2 P4|=0x02;
55 2 ad=0xeaaa;
C51 COMPILER V7.02b FLASH 01/03/2006 09:50:07 PAGE 2
56 2 *ad=0x55;
57 2
58 2 P4&=0xf5;
59 2 P4|=0x05;
60 2 ad=0xd555;
61 2 *ad=0x80;
62 2
63 2 P4&=0xf5;
64 2 P4|=0x05;
65 2 ad=0xd555;
66 2 *ad=0xaa;
67 2
68 2 P4&=0xf2;
69 2 P4|=0x02;
70 2 ad=0xeaaa;
71 2 *ad=0x55;
72 2
73 2 P4&=0xf5;
74 2 P4|=0x05;
75 2 ad=0xd555;
76 2 *ad=0x20;
77 2
78 2 Delay_ms(10);
79 2 }
80 1 else
81 1 {
82 2 P4&=0xf5;
83 2 P4|=0x05;
84 2 ad=0xd555;
85 2 *ad=0xaa;
86 2
87 2 P4&=0xf2;
88 2 P4|=0x02;
89 2 ad=0xeaaa;
90 2 *ad=0x55;
91 2
92 2 P4&=0xf5;
93 2 P4|=0x05;
94 2 ad=0xd555;
95 2 *ad=0xa0;
96 2 }
97 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
98 1 }
99
100 /***********************************************************************************
101 * 函数名称:chip_erase;
102 *
103 * 函数功能描述:Flash芯片擦除程序;
104 *
105 * 输入参数:none;
106 *
107 * 返回数据:none;
108 *
109 * 注意: none;
110 ************************************************************************************/
111
112 void chip_erase(void)
113 {
114 1 unsigned char xdata *ad;
115 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
116 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
117 1
C51 COMPILER V7.02b FLASH 01/03/2006 09:50:07 PAGE 3
118 1 P4&=0xf5;
119 1 P4|=0x05;
120 1 ad=0xd555;
121 1 *ad=0xaa;
122 1
123 1 P4&=0xf2;
124 1 P4|=0x02;
125 1 ad=0xeaaa;
126 1 *ad=0x55;
127 1
128 1 P4&=0xf5;
129 1 P4|=0x05;
130 1 ad=0xd555;
131 1 *ad=0x80;
132 1
133 1 P4&=0xf5;
134 1 P4|=0x05;
135 1 ad=0xd555;
136 1 *ad=0xaa;
137 1
138 1 P4&=0xf2;
139 1 P4|=0x02;
140 1 ad=0xeaaa;
141 1 *ad=0x55;
142 1
143 1 P4&=0xf5;
144 1 P4|=0x05;
145 1 ad=0xd555;
146 1 *ad=0x10;
147 1
148 1 Delay_ms(50);
149 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
150 1 }
151
152 /***********************************************************************************
153 * 函数名称:bootblocklockout_enable;
154 *
155 * 函数功能描述:导入块停止使能函数程序;
156 *
157 * 输入参数:导入块停止使能标志;
158 *
159 * 返回数据:none;
160 *
161 * 注意: none;
162 ************************************************************************************/
163
164 void bootblocklockout_enable(bool flag)
165 {
166 1 unsigned char xdata *ad;
167 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
168 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
169 1 if(flag==0)
170 1 {
171 2 P4&=0xf5;
172 2 P4|=0x05;
173 2 ad=0xd555;
174 2 *ad=0xaa;
175 2
176 2 P4&=0xf2;
177 2 P4|=0x02;
178 2 ad=0xeaaa;
179 2 *ad=0x55;
C51 COMPILER V7.02b FLASH 01/03/2006 09:50:07 PAGE 4
180 2
181 2 P4&=0xf5;
182 2 P4|=0x05;
183 2 ad=0xd555;
184 2 *ad=0x80;
185 2
186 2 P4&=0xf5;
187 2 P4|=0x05;
188 2 ad=0xd555;
189 2 *ad=0xaa;
190 2
191 2 P4&=0xf2;
192 2 P4|=0x02;
193 2 ad=0xeaaa;
194 2 *ad=0x55;
195 2
196 2 P4&=0xf5;
197 2 P4|=0x05;
198 2 ad=0xd555;
199 2 *ad=0x40;
200 2
201 2 P4&=0xf0;
202 2 ad=0xc000;
203 2 *ad=0x00;
204 2
205 2 Delay_ms(10);
206 2 }
207 1 else
208 1 {
209 2 P4&=0xf5;
210 2 P4|=0x05;
211 2 ad=0xd555;
212 2 *ad=0xaa;
213 2
214 2 P4&=0xf2;
215 2 P4|=0x02;
216 2 ad=0xeaaa;
217 2 *ad=0x55;
218 2
219 2 P4&=0xf5;
220 2 P4|=0x05;
221 2 ad=0xd555;
222 2 *ad=0x80;
223 2
224 2 P4&=0xf5;
225 2 P4|=0x05;
226 2 ad=0xd555;
227 2 *ad=0xaa;
228 2
229 2 P4&=0xf2;
230 2 P4|=0x02;
231 2 ad=0xeaaa;
232 2 *ad=0x55;
233 2
234 2 P4&=0xf5;
235 2 P4|=0x05;
236 2 ad=0xd555;
237 2 *ad=0x40;
238 2
239 2 P4&=0xf3;
240 2 ad=0xffff;//
241 2 *ad=0xff;
C51 COMPILER V7.02b FLASH 01/03/2006 09:50:07 PAGE 5
242 2 Delay_ms(10);
243 2 }
244 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
245 1 }
246
247 /***********************************************************************************
248 * 函数名称:write_byte;
249 *
250 * 函数功能描述:Flash写入字节函数程序;
251 *
252 * 输入参数:;
253 *
254 * 返回数据:none;
255 *
256 * 注意: none;
257 ************************************************************************************/
258
259 void write_byte(unsigned char section,unsigned int addr, unsigned char dat)
260 {
261 1 unsigned char xdata *x;
262 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
263 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
264 1 P4=section;
265 1 x=addr;
266 1 *x=dat;
267 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
268 1 }
269
270 /***********************************************************************************
271 * 函数名称:write_string;
272 *
273 * 函数功能描述:Flash写入字符串函数程序;
274 *
275 * 输入参数:;
276 *
277 * 返回数据:none;
278 *
279 * 注意: none;
280 ************************************************************************************/
281
282 void write_string(unsigned char section,unsigned int addr, unsigned char *dat_sta, unsigned char *dat_end)
283 {
284 1 while(dat_sta<=dat_end)
285 1 {
286 2 write_byte(section,addr++,*dat_sta++);
287 2 if(addr==0x0000)
288 2 {
289 3 section++;
290 3 addr=0xc000;
291 3 if(section>15)
292 3 return;
293 3 }
294 2 }
295 1 }
296
297 /***********************************************************************************
298 * 函数名称:write_page;
299 *
300 * 函数功能描述:Flash按页写入函数;
301 *
302 * 输入参数:;
303 *
C51 COMPILER V7.02b FLASH 01/03/2006 09:50:07 PAGE 6
304 * 返回数据:none;
305 *
306 * 注意: none;
307 ************************************************************************************/
308
309 void write_page(unsigned char section,unsigned int addr, unsigned char *dat)
310 {
311 1 unsigned char i;
312 1 i=0;
313 1 while(i<128)
314 1 {
315 2 write_byte(section,addr++,*dat++);
316 2 if(addr==0x0000)
317 2 {
318 3 section++;
319 3 addr=0xc000;
320 3 if(section>15)
321 3 return;
322 3 }
323 2 i++;
324 2 }
325 1 }
326
327 /***********************************************************************************
328 * 函数名称:read_byte;
329 *
330 * 函数功能描述:Flash读取字节函数程序;
331 *
332 * 输入参数:;
333 *
334 * 返回数据:none;
335 *
336 * 注意: none;
337 ************************************************************************************/
338
339 unsigned char read_byte(unsigned char section,unsigned int addr)
340 {
341 1 unsigned char xdata *x;
342 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
343 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
344 1
345 1 if(section>16)
346 1 return 0xff;
347 1
348 1 P4=section;
349 1 x=addr;
350 1
351 1 return *x;
352 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
353 1 }
354
355 /***********************************************************************************/
356 // 文件结束
357 /***********************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1083 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 20
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
C51 COMPILER V7.02b FLASH 01/03/2006 09:50:07 PAGE 7
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 + -