完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 eehome 于 2013-1-5 09:54 编辑
24C01--24C256读写操作C语言程序 #pragma ot(6,SIZE) #i nclude #i nclude #define ERRORCOUNT 10 ***it SDA=P0^0; ***it SCL=P0^1; enum eepromtype {M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256}; enum eepromtype EepromType; //DataBuff为读写数据输入/输出缓冲区的首址 //ByteQuantity 为要读写数据的字节数量 //Address 为EEPROM的片内地址 //ControlByte 为EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0) (R/W),其中R/W=1, //表示读操作,R/W=0为写操作,A2,A1,A0为EEPROM的页选或片选地址; //EepromType为枚举变量,需为M2401至M24256中的一种,分别对应24C01至24C256; //函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功; //ERRORCOUNT为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作, 并返回1 //SDA和SCL由用户自定义,这里暂定义为P0^0和P0^1; //其余的用户不用管,只要把只子程序放在你的程序中并调用它就可以了; bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address, unsigned char ControlByte,enum eepromtype EepromType)www.11hero.com { void Delay(unsigned char DelayCount); void IICStart(void); void IICStop(void); bit IICRecAck(void); void IICNoAck(void); void IICAck(void); unsigned char IICReceiveByte(void); void IICSendByte(unsigned char sendbyte); unsigned char data j,i=ERRORCOUNT; bit errorflag=1; while(i--) { IICStart(); IICSendByte(ControlByte&0xfe); if(IICRecAck()) continue; if(EepromType>M2416) { IICSendByte((unsigned char)(Address>>8)); if(IICRecAck()) continue; } IICSendByte((unsigned char)Address); if(IICRecAck()) continue; if(!(ControlByte&0x01)) { j=ByteQuantity; |
|
|
|
782 浏览 0 评论
4050 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2502 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2919 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31346 浏览 11 评论
72889 浏览 21 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 21:58 , Processed in 0.323147 second(s), Total 33, Slave 25 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号