📄 iic-24c64.lst
字号:
207 1 unsigned char dd=0xa0;
208 1 unsigned char s;
209 1 unsigned char c;
210 1 s=address;
211 1 c=address>>8;
212 1 delay1(600);
213 1 i2c_start();
214 1 i2c_sendbyte(dd);
215 1 if(wait_ack())
216 1 {
217 2 i2c_stop();
218 2 return(0);
219 2 }
220 1 i2c_sendbyte(c);
221 1 if(wait_ack())
222 1 {
223 2 i2c_stop();
224 2 return(0);
225 2 }
226 1 i2c_sendbyte(s);
227 1 if(wait_ack())
228 1 {
229 2 i2c_stop();
230 2 return(0);
231 2 }
232 1 if(su>32)
233 1 {
234 2 for(i=0;i<32;i++)
235 2 {
236 3 i2c_sendbyte(fb[i]);
237 3 if(wait_ack())
238 3 {
239 4 i2c_stop();
240 4 return(0);
241 4 }
C51 COMPILER V7.01 IIC_24C64 08/17/2003 17:24:34 PAGE 5
242 3 }
243 2 i2c_stop();
244 2 delay1(600);
245 2 address=address+32;
246 2 s=address;
247 2 c=address>>8;
248 2 i2c_start();
249 2 i2c_sendbyte(dd);
250 2 if(wait_ack())
251 2 {
252 3 i2c_stop();
253 3 return(0);
254 3 }
255 2 i2c_sendbyte(c);
256 2 if(wait_ack())
257 2 {
258 3 i2c_stop();
259 3 return(0);
260 3 }
261 2 i2c_sendbyte(s);
262 2 if(wait_ack())
263 2 {
264 3 i2c_stop();
265 3 return(0);
266 3 }
267 2 for(i=32;i<su;i++)
268 2 {
269 3 i2c_sendbyte(fb[i]);
270 3 if(wait_ack())
271 3 {
272 4 i2c_stop();
273 4 return(0);
274 4 }
275 3 }
276 2 i2c_stop();
277 2 return(1);
278 2 }
279 1 else {
280 2 for(i=0;i<su;i++)
281 2 {
282 3 i2c_sendbyte(fb[i]);
283 3 if(wait_ack())
284 3 {
285 4 i2c_stop();
286 4 return(0);
287 4 }
288 3 }
289 2 i2c_stop();
290 2 return(1);
291 2 }
292 1 }
293
294 unsigned char i2c_reada(unsigned int address)//单字节读
295 {
296 1 unsigned char dd=0xa0;
297 1 unsigned char dc=0xa1;
298 1 unsigned char s;
299 1 unsigned char c;
300 1 s=address;
301 1 c=address>>8;
302 1 delay1(2000);
303 1
C51 COMPILER V7.01 IIC_24C64 08/17/2003 17:24:34 PAGE 6
304 1 i2c_start();
305 1 i2c_sendbyte(dd);
306 1 if(wait_ack())
307 1 {
308 2 i2c_stop();
309 2 return(0);
310 2 }
311 1 i2c_sendbyte(c);
312 1 if(wait_ack())
313 1 {
314 2 i2c_stop();
315 2 return(0);
316 2 }
317 1 i2c_sendbyte(s);
318 1 if(wait_ack())
319 1 {
320 2 i2c_stop();
321 2 return(0);
322 2 }
323 1 i2c_stop();
324 1
325 1 delay1(300);
326 1 i2c_start();
327 1 i2c_sendbyte(dc);
328 1 if(wait_ack())
329 1 {
330 2 i2c_stop();
331 2 return(0);
332 2 }
333 1 s=i2c_readbyte();
334 1 sendnot_ack();
335 1 i2c_stop();
336 1 return(s);
337 1 }
338
339 bit i2c_writea(unsigned int address,unsigned char fb)//单字节写
340 {
341 1 unsigned char dd=0xa0;
342 1 unsigned char ae;
343 1 unsigned char ar;
344 1 ae=address;
345 1 ar=address>>8;
346 1 delay1(600);
347 1 i2c_start();
348 1 i2c_sendbyte(dd);
349 1 if(wait_ack())
350 1 {
351 2 i2c_stop();
352 2 return(0);
353 2 }
354 1 i2c_sendbyte(ar);
355 1 if(wait_ack())
356 1 {
357 2 i2c_stop();
358 2 return(0);
359 2 }
360 1 i2c_sendbyte(ae);
361 1 if(wait_ack())
362 1 {
363 2 i2c_stop();
364 2 return(0);
365 2 }
C51 COMPILER V7.01 IIC_24C64 08/17/2003 17:24:34 PAGE 7
366 1 i2c_sendbyte(fb);
367 1 if(wait_ack())
368 1 {
369 2 i2c_stop();
370 2 return(0);
371 2 }
372 1 i2c_stop();
373 1 return(1);
374 1 }
375
376 void wirte_24c64(unsigned int address,unsigned char fb[],unsigned char su)
377 {
378 1 unsigned char i;
379 1 for(i=0;i<4;i++)
380 1 {
381 2 if(i2c_write(address,fb,su))
382 2 return;
383 2 }
384 1 }
385
386 void wirte_24c64a(unsigned int address,unsigned char fb)
387 {
388 1 unsigned char i;
389 1 for(i=0;i<4;i++)
390 1 {
391 2 if(i2c_writea(address,fb))
392 2 return;
393 2 }
394 1 }
395
396
397 void read_24c64(unsigned int address,unsigned char fb[],unsigned char su)//多字节读
398 {
399 1 unsigned char i;
400 1 for(i=0;i<4;i++)
401 1 {
402 2 if(i2c_read(address,fb,su))
403 2 return;
404 2 }
405 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1270 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 47
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 + -