nflash.lst
来自「D12和89s52+K9F5608组成的系统」· LST 代码 · 共 417 行 · 第 1/2 页
LST
417 行
195 1 Flash_Write_Sec= 0x00;
196 1 Flash_Write_Col= 0x00;
197 1 Flash_Write_addl= ControlData.dataBuffer[20];
198 1 Flash_Write_addh= ControlData.dataBuffer[19];
199 1 WriteResidueVal=(ControlData.dataBuffer[22]<<8)+ControlData.dataBuffer[23];
200 1 }
201 /************************************************************
202 **函数功能:写FLASH函数
203 **函数输入参数及说明:写入数据
204
205 **函数返回值:无
206 **在本函数以外定义的变量:
207 **调用的函数说明:无
208
209 **修改人:胡琦宗
210 **修改日期:2005.12.9
211 **修改说明:创建
212 *************************************************************/
213 void flashWrite() //需修改***
214 {
215 1 unsigned int i;
216 1 if(WriteResidueVal > 0)
217 1 {
218 2 if(Flash_Write_No == 0)
219 2 {
220 3 fWP = 1;//打开写保护
221 3 fcommand(0x00);//从FRIST部分开始
222 3 fcommand(0x80);//写FLASH命令
223 3 faddr(0x00);//从0列开始
224 3 faddr(Flash_Write_addl);//页地址低位
225 3 faddr(Flash_Write_addh);//页地址高位
226 3 }
227 2
228 2 for(i=0;i<64;i++)//需修改***
229 2 {
230 3 fwedata(ControlData.dataBuffer[i]);//写数据到FLASH指定页里
231 3 }
232 2 Flash_Write_No += 64;
233 2
234 2 if(Flash_Write_No == 512)
235 2 {
236 3 fcommand(0x10);
237 3 while(!fRB);
238 3 fcommand(0x70);//读状态值命令
239 3 i = fredata;//读状态值
240 3 fWP = 0;//写保护
241 3
C51 COMPILER V7.50 NFLASH 12/29/2005 19:53:03 PAGE 5
242 3 Flash_Write_No = 0;
243 3 WriteResidueVal = WriteResidueVal - 1;
244 3 if(Flash_Write_addl== 255)
245 3 {
246 4 Flash_Write_addl= 0x00;
247 4 Flash_Write_addh++;
248 4 }else
249 3 Flash_Write_addl++;
250 3 }
251 2 }
252 1 }
253 /************************************************************
254 **函数功能:FLASH页拷贝命令
255 **函数输入参数及说明:
256 Source_addh:源地址高位
257 Source_addl:源地址低位
258 Destination_addh:目的地址高位
259 Destination_addl:目的地址低位
260
261 **函数返回值:无
262 **在本函数以外定义的变量:
263 **调用的函数说明:无
264
265 **修改人:胡琦宗
266 **修改日期:2005.12.9
267 **修改说明:创建
268 *************************************************************/
269 void flashCopyBLack(unsigned char Source_addh,unsigned char Source_addl,unsigned char Destination_addh,uns
-igned char Destination_addl)
270 {
271 1 unsigned char i;
272 1 fWP = 1;//打开写保护
273 1 fcommand(0x00);//页拷贝命令
274 1 /*源地址*/
275 1 faddr(0x00);
276 1 faddr(Source_addl);
277 1 faddr(Source_addh);
278 1 while(!fRB);
279 1
280 1 fcommand(0x8a);//页拷贝命令
281 1 /*目的地址*/
282 1 faddr(0x00);
283 1 faddr(Destination_addl);
284 1 faddr(Destination_addh);
285 1 while(!fRB);
286 1
287 1 fcommand(0x70);//读状态命令
288 1 i = fredata();//读状态值
289 1 fWP = 0;//写保护
290 1
291 1 }
292 /************************************************************
293 **函数功能:读FLASH预处理函数
294 **函数输入参数及说明:无
295
296 **函数返回值:无
297 **在本函数以外定义的变量:
298 **调用的函数说明:无
299
300 **修改人:胡琦宗
301 **修改日期:2005.12.9
302 **修改说明:创建
C51 COMPILER V7.50 NFLASH 12/29/2005 19:53:03 PAGE 6
303 *************************************************************/
304 void flashReadcmd(void)
305 {
306 1 /****************说明************
307 1 对于FLASH的读原理为:FLASH的读
308 1 可以是随机读取,所以这里只要给
309 1 定读数据的首地址和读写长度
310 1 ********************************/
311 1 Flash_Read_Sec = 0x00;
312 1 Flash_Read_Col = 0x00;
313 1 Flash_Read_addl = ControlData.dataBuffer[20];
314 1 Flash_Read_addh = ControlData.dataBuffer[19];
315 1 ReadResidueVal = (ControlData.dataBuffer[22]<<8) + ControlData.dataBuffer[23];
316 1 ReadResidueVal = ReadResidueVal<<9;
317 1 // fcommand(0xff);
318 1 while(!fRB);
319 1 }
320 /************************************************************
321 **函数功能:读FLASH函数
322 **函数输入参数及说明:无
323
324 **函数返回值:无
325 **在本函数以外定义的变量:
326 **调用的函数说明:无
327
328 **修改人:胡琦宗
329 **修改日期:2005.12.9
330 **修改说明:创建
331 *************************************************************/
332 void flashRead(void)
333 {
334 1 unsigned char i;
335 1 unsigned char temp;
336 1 if(ReadResidueVal > 0)
337 1 {
338 2 ReadResidueVal -= 64;
339 2 temp = (unsigned char)(Flash_Read_Col + 64);
340 2 fcommand(Flash_Read_Sec);
341 2 faddr(Flash_Read_Col);
342 2 faddr(Flash_Read_addl);
343 2 faddr(Flash_Read_addh);
344 2 while(!fRB);
345 2 switch (Flash_Read_Sec)
346 2 {
347 3 case 0x00:
348 3 if(temp == 0)
349 3 {
350 4 Flash_Read_Sec = 0x01;
351 4 Flash_Read_Col = 0x00;
352 4 }else
353 3 {
354 4 Flash_Read_Col += 64;
355 4 }
356 3 break;
357 3 case 0x01:
358 3 if(temp == 0)
359 3 {
360 4 if(Flash_Read_addl == 255){
361 5 Flash_Read_addl = 0x00;
362 5 Flash_Read_addh ++;
363 5 }else
364 4 Flash_Read_addl ++;
C51 COMPILER V7.50 NFLASH 12/29/2005 19:53:03 PAGE 7
365 4 Flash_Read_Sec = 0x00;
366 4 Flash_Read_Col = 0x00;
367 4 }else
368 3 {
369 4 Flash_Read_Col += 64;
370 4 }
371 3 break;
372 3 }
373 2 for(i=0;i<64;i++)
374 2 {
375 3 ControlData.dataBuffer[i] = fredata();
376 3 }
377 2 D12_WriteEndpoint(5,64,ControlData.dataBuffer);
378 2 }
379 1 }
380
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 989 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = 15 20
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?