📄 df.lst
字号:
218 2 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
219 2 DF_CS2 = 0;
220 2 else
221 2 DF_CS3 = 0;
222 2 }
223 1 Spi_write_data(DF_RD_MAIN); /* send read main command */
224 1 Spi_ack_write();
225 1 Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
226 1 Spi_ack_write();
227 1 Spi_write_data(((((Byte*)&gl_ptr_mem)[2] & ~DF_PAGE_MASK) << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] & DF
-_PAGE_MASK));
228 1 Spi_ack_write();
229 1 Spi_write_data(((Byte*)&gl_ptr_mem)[3]);
230 1 Spi_ack_write();
231 1 Spi_write_data(0xFF); /* 4 dummy writes for reading delay */
232 1 Spi_ack_write();
233 1 Spi_write_data(0xFF);
234 1 Spi_ack_write();
235 1 Spi_write_data(0xFF);
236 1 Spi_ack_write();
237 1 Spi_write_data(0xFF);
238 1 Spi_ack_write();
239 1
C51 COMPILER V6.20c DF 07/10/2002 15:17:44 PAGE 5
240 1 return OK;
241 1 }
242
243
244 /*F**************************************************************************
245 * NAME: df_read_close
246 *----------------------------------------------------------------------------
247 * PARAMS:
248 *
249 * return:
250 *----------------------------------------------------------------------------
251 * PURPOSE:
252 * Memory read close: release DF memory
253 *----------------------------------------------------------------------------
254 * EXAMPLE:
255 *----------------------------------------------------------------------------
256 * NOTE:
257 *----------------------------------------------------------------------------
258 * REQUIREMENTS:
259 *****************************************************************************/
260 void df_read_close (void)
261 {
262 1 DF_CS |= DF_DESEL_ALL; /* deselect memory */
263 1 }
264
265
266 /*F**************************************************************************
267 * NAME: df_read_byte
268 *----------------------------------------------------------------------------
269 * PARAMS:
270 *
271 * return:
272 * Data read from memory
273 *----------------------------------------------------------------------------
274 * PURPOSE:
275 * Memory byte read function
276 *----------------------------------------------------------------------------
277 * EXAMPLE:
278 *----------------------------------------------------------------------------
279 * NOTE:
280 * There are no end of page check with this function
281 *----------------------------------------------------------------------------
282 * REQUIREMENTS:
283 *****************************************************************************/
284 Byte df_read_byte (void)
285 {
286 1 /* check if end of page */
287 1 if ((((Byte*)&gl_ptr_mem)[3] == 0x00) && ((((Byte*)&gl_ptr_mem)[2] & DF_PAGE_MASK) == 0x00))
288 1 {
289 2 DF_CS |= DF_DESEL_ALL; /* deselect all memories */
290 2
291 2 /* select right memory */
292 2 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
293 2 {
294 3 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
295 3 DF_CS0 = 0;
296 3 else
297 3 DF_CS1 = 0;
298 3 }
299 2 else
300 2 {
301 3 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
C51 COMPILER V6.20c DF 07/10/2002 15:17:44 PAGE 6
302 3 DF_CS2 = 0;
303 3 else
304 3 DF_CS3 = 0;
305 3 }
306 2 /* select new page */
307 2 Spi_write_data(DF_RD_MAIN); /* read main */
308 2 Spi_ack_write();
309 2 Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
310 2 Spi_ack_write();
311 2 Spi_write_data((((Byte*)&gl_ptr_mem)[2] & ~DF_PAGE_MASK) << DF_SHFT_B1);
312 2 Spi_ack_write();
313 2 Spi_write_data(0x00); /* address 00 of the page */
314 2 Spi_ack_write();
315 2 Spi_write_data(0xFF); /* 4 dummy writes for reading delay */
316 2 Spi_ack_write();
317 2 Spi_write_data(0xFF);
318 2 Spi_ack_write();
319 2 Spi_write_data(0xFF);
320 2 Spi_ack_write();
321 2 Spi_write_data(0xFF);
322 2 Spi_ack_write();
323 2 Spi_ack_write(); /* clear SPI flag */
324 2 }
325 1 gl_ptr_mem++;
326 1 Spi_write_data(0xFF); /* dummy write to read data */
327 1 Spi_ack_read();
328 1 return Spi_read_data(); /* read current data */
329 1 }
330
331
332 /*F**************************************************************************
333 * NAME: df_read_sector
334 *----------------------------------------------------------------------------
335 * PARAMS:
336 * global: gl_ptr_mem
337 *
338 * return:
339 * OK read done
340 *----------------------------------------------------------------------------
341 * PURPOSE:
342 * This function is an optimized function that writes 512 bytes from
343 * DataFlash memory to USB controller
344 *----------------------------------------------------------------------------
345 * EXAMPLE:
346 *----------------------------------------------------------------------------
347 * NOTE:
348 * - First call must be preceded by a call to df_read_open function
349 * - As 512 is always a sub-multiple of page size, there is no need to check
350 * page end for each bytes
351 * - Interrupts are disabled during transfer to avoid timer interrupt
352 *----------------------------------------------------------------------------
353 * REQUIREMENTS:
354 *****************************************************************************/
355 bit df_read_sector (void)
356 {
357 1 Byte i;
358 1
359 1 /* check if end of page */
360 1 if ((((Byte*)&gl_ptr_mem)[3] == 0x00) && ((((Byte*)&gl_ptr_mem)[2] & DF_PAGE_MASK) == 0x00))
361 1 {
362 2 DF_CS |= DF_DESEL_ALL; /* deselect all memories */
363 2
C51 COMPILER V6.20c DF 07/10/2002 15:17:44 PAGE 7
364 2 /* select right memory */
365 2 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
366 2 {
367 3 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
368 3 DF_CS0 = 0;
369 3 else
370 3 DF_CS1 = 0;
371 3 }
372 2 else
373 2 {
374 3 if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
375 3 DF_CS2 = 0;
376 3 else
377 3 DF_CS3 = 0;
378 3 }
379 2 /* select new page */
380 2 Spi_write_data(DF_RD_MAIN); /* read main */
381 2 Spi_ack_write();
382 2 Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
383 2 Spi_ack_write();
384 2 Spi_write_data((((Byte*)&gl_ptr_mem)[2] & ~DF_PAGE_MASK) << DF_SHFT_B1);
385 2 Spi_ack_write();
386 2 Spi_write_data(0x00); /* address 00 of the page */
387 2 Spi_ack_write();
388 2 Spi_write_data(0xFF); /* 4 dummy writes for reading delay */
389 2 Spi_ack_write();
390 2 Spi_write_data(0xFF);
391 2 Spi_ack_write();
392 2 Spi_write_data(0xFF);
393 2 Spi_ack_write();
394 2 Spi_write_data(0xFF);
395 2 Spi_ack_write();
396 2 Spi_ack_write(); /* clear SPI flag */
397 2 }
398 1 for (i = 8; i != 0; i--) /* read 8x64b = 512b */
399 1 {
400 2 Disable_interrupt(); /* global disable */
401 2 Spi_write_data(0xFF); Spi_ack_read();
402 2 /* read 1st data while receiving the 2nd DO NOT MODIFY */
403 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
404 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
405 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
406 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
407 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
408 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
409 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
410 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
411 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
412 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
413 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
414 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
415 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
416 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
417 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
418 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
419 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
420 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
421 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
422 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
423 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
424 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
425 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
C51 COMPILER V6.20c DF 07/10/2002 15:17:44 PAGE 8
426 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
427 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
428 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
429 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
430 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
431 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
432 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
433 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
434 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
435 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
436 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
437 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
438 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
439 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
440 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
441 2 Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -