📄 24c512.lst
字号:
C51 COMPILER V8.02 24C512 09/22/2008 11:37:51 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 24C512
OBJECT MODULE PLACED IN .\output\bin\24c512.obj
COMPILER INVOKED BY: C:\Keil802\C51\BIN\C51.EXE eeprom\24c512.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gp
-s\;inter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\24c512.lst) OBJECT(.\output\bin\24c
-512.obj)
line level source
1 #include "i2c.h"
2
3 #define READ_CONFIG 0xA1
4 #define WRITE_CONFIG 0xA0
5 /**************************************
6 *配置程序的E2改为128K
7 ***************************************/
8 /*前64K字节*/
9 #define READ_FIRMWARE_FRONT64K 0xA5
10 #define WRITE_FIRMWARE_FRONT64K 0xA4
11 /*后64K字节*/
12 #define READ_FIRMWARE_BACK64K 0xA7
13 #define WRITE_FIRMWARE_BACK64K 0xA6
14
15 void c512_config_write(unsigned int addr, char *ptr, unsigned char len)
16 {
17 1 unsigned char tmp;
18 1 unsigned char i;
19 1 char *tmpPtr;
20 1
21 1 i2c_wp(0);
22 1
23 1 i2c_start();
24 1 i2c_writeByte(WRITE_CONFIG);
25 1 i2c_get_ack();
26 1
27 1 tmp = addr>>8;
28 1 i2c_writeByte(tmp); /*send high address*/
29 1 i2c_get_ack();
30 1
31 1 tmp = addr;
32 1 i2c_writeByte(tmp); /*send low address*/
33 1 i2c_get_ack();
34 1
35 1 tmpPtr = ptr;
36 1 for(i=0; i<len; i++)
37 1 {
38 2 tmp = *tmpPtr ++;
39 2
40 2 i2c_writeByte(tmp);
41 2 i2c_get_ack();
42 2 }
43 1
44 1 i2c_stop();
45 1
46 1 i2c_wp(1);
47 1 }
48
49 void c512_config_read(unsigned int addr, char *ptr, unsigned char len)
50 {
51 1 unsigned char tmp;
52 1 unsigned char i;
53 1 char *tmpPtr;
C51 COMPILER V8.02 24C512 09/22/2008 11:37:51 PAGE 2
54 1
55 1 i2c_wp(1);
56 1
57 1 i2c_start();
58 1 i2c_writeByte(WRITE_CONFIG);
59 1 i2c_get_ack();
60 1
61 1 tmp = addr>>8;
62 1 i2c_writeByte(tmp); /*send high address*/
63 1 i2c_get_ack();
64 1
65 1 tmp = addr;
66 1 i2c_writeByte(tmp); /*send low address*/
67 1 i2c_get_ack();
68 1
69 1 i2c_start();
70 1 i2c_writeByte(READ_CONFIG);
71 1 i2c_get_ack();
72 1
73 1 tmpPtr = ptr;
74 1 for(i=0; i<len; i++)
75 1 {
76 2 tmp = i2c_readByte();
77 2 *tmpPtr ++ = tmp;
78 2
79 2 if( i != (len-1) )
80 2 i2c_send_ack();
81 2
82 2 }
83 1
84 1 i2c_stop();
85 1 }
86
87 /****************************************************
88 *flag:0 前64K,1 后64K//in
89 ****************************************************/
90 void c512_firmware_write(unsigned char flag, unsigned int addr, char *ptr, unsigned char len)
91 {
92 1 unsigned char tmp;
93 1 unsigned char i;
94 1 char *tmpPtr;
95 1
96 1 i2c_wp(0);
97 1
98 1 i2c_start();
99 1 if (0 == flag)
100 1 i2c_writeByte(WRITE_FIRMWARE_FRONT64K);
101 1 else
102 1 i2c_writeByte(WRITE_FIRMWARE_BACK64K);
103 1 i2c_get_ack();
104 1
105 1 tmp = addr>>8;
106 1 i2c_writeByte(tmp); /*send high address*/
107 1 i2c_get_ack();
108 1
109 1 tmp = addr;
110 1 i2c_writeByte(tmp); /*send low address*/
111 1 i2c_get_ack();
112 1
113 1 tmpPtr = ptr;
114 1 for(i=0; i<len; i++)
115 1 {
C51 COMPILER V8.02 24C512 09/22/2008 11:37:51 PAGE 3
116 2 tmp = *tmpPtr ++;
117 2
118 2 i2c_writeByte(tmp);
119 2 i2c_get_ack();
120 2 }
121 1
122 1 i2c_stop();
123 1
124 1 i2c_wp(1);
125 1 }
126
127 void c512_firmware_read(unsigned char flag, unsigned int addr, char *ptr, unsigned char len)
128 {
129 1 unsigned char tmp;
130 1 unsigned char i;
131 1 char *tmpPtr;
132 1
133 1 i2c_wp(1);
134 1
135 1 i2c_start();
136 1 if (0 == flag)
137 1 i2c_writeByte(WRITE_FIRMWARE_FRONT64K);
138 1 else
139 1 i2c_writeByte(WRITE_FIRMWARE_BACK64K);
140 1 i2c_get_ack();
141 1
142 1 tmp = addr>>8;
143 1 i2c_writeByte(tmp); /*send high address*/
144 1 i2c_get_ack();
145 1
146 1 tmp = addr;
147 1 i2c_writeByte(tmp); /*send low address*/
148 1 i2c_get_ack();
149 1
150 1 i2c_start();
151 1 if (0 == flag)
152 1 i2c_writeByte(READ_FIRMWARE_FRONT64K);
153 1 else
154 1 i2c_writeByte(READ_FIRMWARE_BACK64K);
155 1 i2c_get_ack();
156 1
157 1 tmpPtr = ptr;
158 1 for(i=0; i<len; i++)
159 1 {
160 2 tmp = i2c_readByte();
161 2 *tmpPtr ++ = tmp;
162 2
163 2 if( i != (len-1) )
164 2 i2c_send_ack();
165 2
166 2 }
167 1
168 1 i2c_stop();
169 1 }
170
171
172
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 670 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.02 24C512 09/22/2008 11:37:51 PAGE 4
XDATA SIZE = ---- 46
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -