C51单片机模I2C总线驱动程序.pdfVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C51单片机模I2C总线驱动程序

/********************************** I2C 总 线 驱 动 ************************************* 模块名:I2C总线驱动 型号:I2C 创建人:陈曦 日期:2005-6-15 修改人:陈曦 日期:2005-6-19 功能描述: 此模块包括发送数据及接收数据,应答位发送,并提供了几个直接面对器件的操作函数,能 很 方便的与用户程序进行连接并扩展。 需要注意的是,函数是采用延时方法产生 SCL 脉冲,对高晶振频率要做一定的修改!! 在写E2PROM的时候一定要延时!!! 说明: 1us 机器周期,晶振频率要小于12MHz 返回 1 则操作成功,返回 0 则操作失败。 sla 为器件从地址,suba 为器件子地址。 ******************************************************************************* ******/ #include AT89X52.h #include intrins.h #define SomeNOP();{_nop_();_nop_();_nop_();_nop_();_nop_();}//定义空指令 sbit SDA=P1^3; //模拟I2C 数据传输位 sbit SCL=P1^2; //模拟I2C时钟控制位 bit bdataI2C_Ack; //应答标志位 /************************************ I2C_Start ************************************ 函数名:void I2C_Start() 入口: 出口: 功能描述:启动I2C 总线,即发送I2C 初始条件 解释: 在I2C总线协议中规定的起始位格式是:在SCL高电平期间,SDA发生从高到低的电平 跳变.它与其它数据格式的区别在于,协议中规定有效的数据必须在SCL 的高电平期间保持 不变,只有在SCL 的低电平期间才能发生跳变.所以这一有别与其它格式的数据才能做为起 始位. 调用函数: 全局变量: ******************************************************************************* ***/ void I2C_Start() { SDA=1; //发送起始条件的数据信号 _Nop(); SCL=1; SomeNOP(); //起始条件建立时间大于4.7us,延时 SDA=0; //发送起始信号 SomeNOP();//起始条件建立时间大于4us,延时 SCL=0; //钳住I2C 总线准备发送或接收数据 /******解释:I2C总线在空闲状态下都是被上拉为高电平的,所以当它们处于低电平时就表示 忙的状态.***/ _nop_(); _nop_(); } /************************************ I2C_Stop ************************************ 函数名:void I2C_Stop() 入口: 出口: 功能描述:结束I2C 总线,即发送I2C 结束条件 解释:同起始条件的格式类似,结束条件的格式是在SCL高电平期间,SDA由低电平向高电平 跳变. 调用函数: 全局变量: ******************************************************************************* ***/ void I2C_Stop() { SDA=0; //发送结束条件的数据信号 _Nop(); SCL=1; //发送结束条件的时钟信号 SomeNOP();//结束条件建立时间大于4us,延时 SDA=1; //发送I2C总线结束信号 SomeNOP(); } /************************************ I2C_CheckAck ************************************ 函数名:bitI

您可能关注的文档

文档评论(0)

woai118doc + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档