📄 f_write.lst
字号:
C51 COMPILER V6.03 F_WRITE 10/07/2000 00:42:35 PAGE 1
C51 COMPILER V6.03, COMPILATION OF MODULE F_WRITE
OBJECT MODULE PLACED IN .\f_write.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\f_write.c OPTIMIZE(9,SPEED) DEBUG OBJECTEXTEND
stmt level source
1 #include <ADUC812.H>
2 #include "f_adi.h"
3
4 /*---------------------------------------------------------
5 ---------------------------------------------------------*/
6 unsigned long flash_write (
7 const void *buffer, /* Buffer to save */
8 unsigned long len, /* Buffer length */
9 unsigned long address) /* FLASH address to write to */
10 {
11 1 const unsigned char *s = buffer;
12 1 unsigned long i;
13 1 unsigned int addr;
14 1
15 1 /*-------------------------------------
16 1 If the address is too big, exit.
17 1 --------------------------------------*/
18 1 if (address >= ADI_EEMEM_SIZE)
19 1 return (0UL);
20 1
21 1 /*-------------------------------------
22 1 Otherwise, read the starting page.
23 1 --------------------------------------*/
24 1 addr = (unsigned int) address;
25 1
26 1 EADRL = addr >> 2;
27 1 ECON = ADI_EE_READ_PAGE;
28 1
29 1 for (i = 0; i < len; i++)
30 1 {
31 2
32 2 /*-------------------------------------
33 2 Write the appropriate EE byte.
34 2 --------------------------------------*/
35 2 switch (addr & 0x03)
36 2 {
37 3 case 0: EDATA1 = s[i]; break;
38 3 case 1: EDATA2 = s[i]; break;
39 3 case 2: EDATA3 = s[i]; break;
40 3 case 3: EDATA4 = s[i]; break;
41 3 }
42 2
43 2 ++addr;
44 2
45 2 if ((addr & 0x03) == 0)
46 2 {
47 3 ECON = ADI_EE_ERASE_PAGE;
48 3 ECON = ADI_EE_WRITE_PAGE;
49 3 }
50 2
51 2 if (addr >= ADI_EEMEM_SIZE)
52 2 break;
53 2
54 2 if ((addr & 0x03) == 0)
55 2 {
C51 COMPILER V6.03 F_WRITE 10/07/2000 00:42:35 PAGE 2
56 3 EADRL = addr >> 2;
57 3 ECON = ADI_EE_READ_PAGE;
58 3 }
59 2 }
60 1
61 1 if ((addr & 0x03) != 0)
62 1 {
63 2 ECON = ADI_EE_ERASE_PAGE;
64 2 ECON = ADI_EE_WRITE_PAGE;
65 2 }
66 1
67 1 return (i);
68 1 }
69
70 /*---------------------------------------------------------
71 ---------------------------------------------------------*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 263 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
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 + -