📄 24c02srtest.lst
字号:
C51 COMPILER V8.08 24C02SRTEST 02/28/2008 14:19:16 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 24C02SRTEST
OBJECT MODULE PLACED IN 24C02SRTest.OBJ
COMPILER INVOKED BY: d:\Keil3\C51\BIN\C51.EXE 24C02SRTest.C ROM(COMPACT) OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /*** 引用yajou整理的I2C万能驱动程序 **************************************/
2 /*** 整理:yajou 2008-01-07 || http://hi.baidu.com/yajou/ ****************/
3 /*-------------------------------------------------------------------------*/
4
5 #include "reg51.h"
6 #include "intrins.h"
7 #include "24C02SRTest.h"
8
9
10 /********************************************************
11 * Main *
12 ********************************************************/
13 main(void)
14 {
15 1 uint i;
16 1 uchar j;
17 1
18 1
19 1 SDA = 1;
20 1 SCL = 1;
21 1
22 1 // data_shengyu = 12345678;
23 1 // data_leiji = 87654321;
24 1 // data_zongji = 99999999;
25 1 // data_baojing = 3058;
26 1 // data_guanfa = 30;
27 1 // data_ciganrao= 8;
28 1 // data_kaigai = 5;
29 1
30 1
31 1
32 1 if(ReadAllData()) //从AT24C02读出数据
33 1 {
34 2 data_shengyu = 111;
35 2 }
36 1
37 1 data_shengyu = data_shengyu - 1;
38 1 data_leiji = data_leiji + 1;
39 1 data_zongji = data_shengyu +data_leiji;
40 1 data_baojing = data_baojing + 1;
41 1 data_guanfa = data_guanfa + 1;
42 1 data_ciganrao= data_ciganrao + 1;
43 1 data_kaigai = data_kaigai + 1;
44 1
45 1
46 1 if(SaveAllData()) //写入数据到AT24C02
47 1 {
48 2 data_shengyu = 222;
49 2 }
50 1
51 1
52 1 temp1 = data_shengyu;
53 1 datasw();
54 1 while(1)
55 1 {
C51 COMPILER V8.08 24C02SRTEST 02/28/2008 14:19:16 PAGE 2
56 2 i++;
57 2 if(i > 100)
58 2 {
59 3 i = 0;
60 3 j++;
61 3 if(j == 7) j = 0;
62 3 switch(j)
63 3 {
64 4 case 0:{temp1 = data_shengyu;break;}
65 4 case 1:{temp1 = data_leiji;break;}
66 4 case 2:{temp1 = data_zongji;break;}
67 4 case 3:{temp1 = data_baojing;break;}
68 4 case 4:{temp1 = data_guanfa;break;}
69 4 case 5:{temp1 = data_ciganrao;break;}
70 4 case 6:{temp1 = data_kaigai;break;}
71 4 default:{temp1 = data_shengyu;break;}
72 4 }
73 3 datasw();
74 3 }
75 2 ledplay();
76 2 }
77 1 }
78
79
80
81
82
83 /********************************************************
84 * 读取剩余量、运行参数、各报警标志及数据校验 *
85 ********************************************************/
86 bit ReadAllData(void)
87 {
88 1 uchar *ptr_ulint;
89 1 ulint temp=0;
90 1 uint data_crc1=0,data_crc2=0;
91 1
92 1 ptr_ulint = &temp;
*** WARNING C182 IN LINE 92 OF 24C02SRTEST.C: pointer to different objects
93 1
94 1
95 1 if(ReadData_ulint(ptr_ulint,0x00,4)) //剩余量
96 1 {
97 2 return 1;
98 2 }
99 1 data_shengyu = temp;
100 1 data_crc1 = CalCRC_ulint(ptr_ulint,4);
101 1 if(ReadData_ulint(ptr_ulint,0x04,4))
102 1 {
103 2 return 1;
104 2 }
105 1 data_crc2 = temp;
106 1
107 1 if(data_crc1 != data_crc2)
108 1 {
109 2 return 1;
110 2 }
111 1
112 1
113 1 if(ReadData_ulint(ptr_ulint,0x08,4)) //累计量
114 1 {
115 2 return 1;
116 2 }
C51 COMPILER V8.08 24C02SRTEST 02/28/2008 14:19:16 PAGE 3
117 1 data_leiji = temp;
118 1 data_crc1 = CalCRC_ulint(ptr_ulint,4);
119 1 if(ReadData_ulint(ptr_ulint,0x0c,4))
120 1 {
121 2 return 1;
122 2 }
123 1 data_crc2 = temp;
124 1
125 1 if(data_crc1 != data_crc2)
126 1 {
127 2 return 1;
128 2 }
129 1
130 1
131 1 if(ReadData_ulint(ptr_ulint,0x10,4)) //总计量
132 1 {
133 2 return 1;
134 2 }
135 1 data_zongji = temp;
136 1 data_crc1 = CalCRC_ulint(ptr_ulint,4);
137 1 if(ReadData_ulint(ptr_ulint,0x14,4))
138 1 {
139 2 return 1;
140 2 }
141 1 data_crc2 = temp;
142 1
143 1 if(data_crc1 != data_crc2)
144 1 {
145 2 return 1;
146 2 }
147 1
148 1
149 1 if(ReadData_ulint(ptr_ulint,0x20,4)) //报警量
150 1 {
151 2 return 1;
152 2 }
153 1 data_baojing = temp;
154 1 data_crc1 = CalCRC_ulint(ptr_ulint,4);
155 1 if(ReadData_ulint(ptr_ulint,0x24,4))
156 1 {
157 2 return 1;
158 2 }
159 1 data_crc2 = temp;
160 1
161 1 if(data_crc1 != data_crc2)
162 1 {
163 2 return 1;
164 2 }
165 1
166 1
167 1 if(ReadData_ulint(ptr_ulint,0x28,4)) //关阀量
168 1 {
169 2 return 1;
170 2 }
171 1 data_guanfa = temp;
172 1 data_crc1 = CalCRC_ulint(ptr_ulint,4);
173 1 if(ReadData_ulint(ptr_ulint,0x2c,4))
174 1 {
175 2 return 1;
176 2 }
177 1 data_crc2 = temp;
178 1
C51 COMPILER V8.08 24C02SRTEST 02/28/2008 14:19:16 PAGE 4
179 1 if(data_crc1 != data_crc2)
180 1 {
181 2 return 1;
182 2 }
183 1
184 1 if(ReadData_ulint(ptr_ulint,0x30,4)) //磁扰数
185 1 {
186 2 return 1;
187 2 }
188 1 data_ciganrao = temp;
189 1 data_crc1 = CalCRC_ulint(ptr_ulint,4);
190 1 if(ReadData_ulint(ptr_ulint,0x34,4))
191 1 {
192 2 return 1;
193 2 }
194 1 data_crc2 = temp;
195 1
196 1 if(data_crc1 != data_crc2)
197 1 {
198 2 return 1;
199 2 }
200 1
201 1
202 1 if(ReadData_ulint(ptr_ulint,0x38,4)) //开盖次数
203 1 {
204 2 return 1;
205 2 }
206 1 data_kaigai = temp;
207 1 data_crc1 = CalCRC_ulint(ptr_ulint,4);
208 1 if(ReadData_ulint(ptr_ulint,0x3c,4))
209 1 {
210 2 return 1;
211 2 }
212 1 data_crc2 = temp;
213 1
214 1 if(data_crc1 != data_crc2)
215 1 {
216 2 return 1;
217 2 }
218 1
219 1 return(0);
220 1 }
221
222
223
224 /********************************************************
225 * 保存计量数据 *
226 ********************************************************/
227 bit SaveJiliangData(void)
228 {
229 1 uchar *ptr_ulint;
230 1 ulint temp;
231 1
232 1 ptr_ulint = &temp;
*** WARNING C182 IN LINE 232 OF 24C02SRTEST.C: pointer to different objects
233 1
234 1 temp = data_shengyu; //剩余量
235 1 if(WriteData_ulint(ptr_ulint,0x00,4))
236 1 {
237 2 return 1;
238 2 }
239 1 temp = CalCRC_ulint(ptr_ulint,4);
C51 COMPILER V8.08 24C02SRTEST 02/28/2008 14:19:16 PAGE 5
240 1 if(WriteData_ulint(ptr_ulint,0x04,4))
241 1 {
242 2 return 1;
243 2 }
244 1
245 1 temp = data_leiji; //累计量
246 1 if(WriteData_ulint(ptr_ulint,0x08,4))
247 1 {
248 2 return 1;
249 2 }
250 1 temp = CalCRC_ulint(ptr_ulint,4);
251 1 if(WriteData_ulint(ptr_ulint,0x0c,4))
252 1 {
253 2 return 1;
254 2 }
255 1
256 1 temp = data_zongji; //总计量
257 1 if(WriteData_ulint(ptr_ulint,0x10,4))
258 1 {
259 2 return 1;
260 2 }
261 1 temp = CalCRC_ulint(ptr_ulint,4);
262 1 if(WriteData_ulint(ptr_ulint,0x14,4))
263 1 {
264 2 return 1;
265 2 }
266 1 return(0);
267 1 }
268
269 /********************************************************
270 * 保存所有数据 *
271 ********************************************************/
272 bit SaveAllData(void)
273 {
274 1 uchar *ptr_ulint;
275 1 ulint temp;
276 1
277 1 ptr_ulint = &temp;
*** WARNING C182 IN LINE 277 OF 24C02SRTEST.C: pointer to different objects
278 1
279 1 temp = data_shengyu; //剩余量
280 1 if(WriteData_ulint(ptr_ulint,0x00,4))
281 1 {
282 2 return 1;
283 2 }
284 1 temp = CalCRC_ulint(ptr_ulint,4);
285 1 if(WriteData_ulint(ptr_ulint,0x04,4))
286 1 {
287 2 return 1;
288 2 }
289 1
290 1 temp = data_leiji; //累计量
291 1 if(WriteData_ulint(ptr_ulint,0x08,4))
292 1 {
293 2 return 1;
294 2 }
295 1 temp = CalCRC_ulint(ptr_ulint,4);
296 1 if(WriteData_ulint(ptr_ulint,0x0c,4))
297 1 {
298 2 return 1;
299 2 }
300 1
C51 COMPILER V8.08 24C02SRTEST 02/28/2008 14:19:16 PAGE 6
301 1 temp = data_zongji; //总计量
302 1 if(WriteData_ulint(ptr_ulint,0x10,4))
303 1 {
304 2 return 1;
305 2 }
306 1 temp = CalCRC_ulint(ptr_ulint,4);
307 1 if(WriteData_ulint(ptr_ulint,0x14,4))
308 1 {
309 2 return 1;
310 2 }
311 1
312 1 temp = data_baojing; //报警量
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -