EEPROM为ATMEL公司的AT24C01A。单片机为ATMEL公司的AT89C51。 软件说明 C语言为FranklinCV3"> EEPROM为ATMEL公司的AT24C01A。单片机为ATMEL公司的AT89C51。 软件说明 C语言为FranklinCV3" />
欢迎来到天天文库
浏览记录
ID:24252211
大小:53.50 KB
页数:4页
时间:2018-11-13
《51单片机模拟i2c总线的c语言实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、51单片机模拟I2C总线的C语言实现
2、第1电路原理图 500)this.style.ouseg(this)">EEPROM为ATMEL公司的AT24C01A。单片机为ATMEL公司的AT89C51。 软件说明 C语言为FranklinCV3.2。将源程序另存为testi2c.c,用命令C51testi2c.cL51TESTI2C.OBJOHS51TESTI2C编译,连接,得到TESTI2C.HEX文件,即可由编程器读入并进行写片,实验。3.源程序#include<reg51.h>#include
3、<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineAdd(ucharData[],ucharAddress,ucharNum){uchari;uchar*PData;PData=Data;for(i=0;i<Num;i++){Start();/*发送启动信号*/Send(0xa0);/*发送SLA+(ucharData[],ucharAddress,ucharNum){uchari;uchar*PData;PDa
4、ta=Data;for(i=0;i<Num;i++){Start();Send(0xa0);Ack();Send(Address+i);Ack();Start();Send(0xa1);Ack();*(PData+i)=Read();Scl=0;NoAck();Stop();}}voidmain(){ucharNumber[4]={1,2,3,4};(Number,4,4);/*将初始化后的数值写入EEPROM*/mDelay(20);Number[0]=0;Number[1]=0;Number[2]
5、=0;Number[3]=0;/*将数组中的值清掉,以验证读出的数是否正确*/RdFromROM(Number,4,4);}问题:本程序中未采用块读写的方法,显得有点‘笨’,这是由于项目原因,现项目已完成,程序已写好,短时不会修改,也不会花上一定的精力去做,虽然理论上已很成熟,就这样写一下,未必不对,但与我的本栏目要求不符,所以就未做上去,如果以后我做了,将再补上。
此文档下载收益归作者所有