网站大量收购独家精品文档,联系QQ:2885784924

经典的24c01--24c256读写操作程序(The classic 24c01--24c256 read and write operations).doc

经典的24c01--24c256读写操作程序(The classic 24c01--24c256 read and write operations).doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
经典的24c01--24c256读写操作程序(The classic 24c01--24c256 read and write operations)

经典的24c01--24c256读写操作程序(The classic 24c01--24c256 read and write operations) # pragma OT(6尺寸) #包括 #包括 #定义错误数量10 普通SDA = P0 ^ 0; 普通SCL = P0 ^ 1; 枚举eepromtype { 2401 m2402 m2404 m2408 m2416 m2432 m2464 M24128 M24256 }; 枚举eepromtype EepromType; / / databuff为读写数据输入/输出缓冲区的首址 / / bytequantity为要读写数据的字节数量 / /地址为EEPROM的片内地址 / / controlbyte为EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R / W)其中R/W = 1 / /表示读操作R / W = 0为写操作A2 A1 A0为EEPROM的页选或片选地址; / / eepromtype为枚举变量需为2401至M24256中的一种分别对应24C01至24C256; / /函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功; / /错误数量为允许最大次数,若出现错误数量次操作失效后,则函数中止操作,并返回1 / / SDA和SCL由用户自定义,这里暂定义为P0 ^ 0和P0 ^ 1; / /其余的用户不用管,只要把只子程序放在你的程序中并调用它就可以了; *********************************************************************************** / / 点rw24xx(unsigned char * databuff unsigned char bytequantity unsigned int地址 unsigned char controlbyte枚举eepromtype EepromType) { 虚空Delay(unsigned char delaycount); 虚空(void)IICStart; 虚空(void)IICStop; 位IICRecAck(void); 虚空(void)IICNoAck; 虚空(void)IICAck; 无符号char IICReceiveByte(void); 虚空IICSendByte(unsigned char sendbyte); unsigned char数据我=错误数量; 点errorflag = 1; 而(我) { iicstart(); IICSendByte(controlbyte和0XFE); 如果(iicrecack()) 继续; 如果(eepromtype m2416) { IICSendByte((unsigned char)(地址 8)); 如果(iicrecack()) 继续; } IICSendByte((unsigned char)地址); 如果(iicrecack()) 继续; 如果(!(controlbyte 0x01)) { J = bytequantity; errorflag = 0;// ******** CLR errorflag 而(J) { IICSendByte(* databuff + +); 如果(!iicrecack()) 继续; errorflag = 1; 打破; } 如果(errorflag = = 1) 继续; 打破; } 其他的 { iicstart(); IICSendByte(controlbyte); 如果(iicrecack()) 继续; 而(-- bytequantity) { * DataBuff + + = iicreceivebyte(); iicack(); } * databuff = iicreceivebyte();//读最后一个字节的数据 iicnoack(); errorflag = 0; 打破; } } iicstop(); 如果(!(controlbyte 0x01)) { Delay(255); Delay(255); Delay(255); Delay(255); } 返回(errorflag); } The following is the /***************** IIC bus operation ***/ subroutine /***************** start **********************/ bus Void IICStart (void) { SCL=0; / / SDA=1; SCL=1; (_nop_); (_nop_); (_nop

您可能关注的文档

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档