• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 6
    下载次数
  • 2006-06-28 03:15
    上传日期
I2C通用程序可以用于C51单片机的模拟I2C通讯,
I2Cgeneral.rar
  • I2C通用.txt
    3.3KB
  • www.pudn.com.txt
    218B
内容介绍
"reg51.h" #include "intrins.h" unsigned char SystemError; sbit SCL= P1^6; //定义串行时钟线所在口 使用时根据自己的需要来定义 sbit SDA= P1^7; //定义串行数据线所在口 使用时根据自己的需要来定义 #define SomeNOP(); {_nop_();_nop_();_nop_();_nop_();} /*-------------------------------------------------------------------------------- 调用方式:void AD7416_I2CStart(void) 2003/05/04 函数说明:私有函数,I2C专用 ---------------------------------------------------------------------------------*/ void I2CStart(void) { EA=0; SDA=1; SCL=1; SomeNOP();//数据线保持高,时钟线从高到低一次跳变,I2C通信开始 SDA=0; SomeNOP(); SCL=0; } /*-------------------------------------------------------------------------------- 调用方式:void AD7416_I2CStop(void) 2003/05/04 函数说明:私有函数,I2C专用 ---------------------------------------------------------------------------------*/ void I2CStop(void) { SCL=0; SDA=0; SomeNOP(); //数据线保持低,时钟线从低到高一次跳变,I2C通信停止 SCL=1; SomeNOP(); SDA=1; EA=1; } /*-------------------------------------------------------------------------------- 调用方式:I2CAck(void) 2003/05/13 函数说明:私有函数,I2C专用,等待从器件接收方的应答 ACK BY AD7416 ---------------------------------------------------------------------------------*/ WaitAck(void) { unsigned char errtime=255;//因故障接收方无ACK,超时值为255。 SDA=1; SCL=1; SystemError=0x10; while(SDA) { errtime--; if(!errtime) { AD7416_I2CStop(); AD7416_SystemError=0x11; //出错后给全局变量赋值 return; } } SCL=0; } /*-------------------------------------------------------------------------------- 调用方式:void SendAck(void) ﹫2003/05/13 函数说明:私有函数,I2C专用,主器件为接收方,从器件为发送方时,应答信号。 ---------------------------------------------------------------------------------*/ void SendAck(void) { SDA=0; SomeNOP(); //数据线保持低,时钟线发生一次从高低的跳变 发送一个应答信号 SCL=1; SomeNOP(); SCL=0; } /*-------------------------------------------------------------------------------- 调用方式:void SendAck(void) ﹫2003/05/13 函数说明:私有函数,I2C专用,主器件为接收方,从器件为发送方时,非应答信号。 --------------------------------------------------------------------------------*/ void SendNotAck(void) { SDA=1; SomeNOP(); //数据线保持高,时钟线发生一次从高低的跳变 没有应答 SCL=1; SomeNOP(); SCL=0; } /*-------------------------------------------------------------------------------- 调用方式:void I2CSend(uchar ch) 2003/05/13 函数说明:私有函数,I2C专用 ---------------------------------------------------------------------------------*/ void I2CSendByte(Byte ch) { unsigned char i=8; while (i--) { SCL=0;_nop_(); SDA=(bit)(ch&0x80); ch<<=1; SomeNOP(); //时钟保持低可以发送数据 SCL=1; SomeNOP(); } SCL=0; } /*-------------------------------------------------------------------------------- 调用方式:uchar I2CReceive(void) 2003/05/13 函数说明:私有函数,I2C专用 ---------------------------------------------------------------------------------*/ Byte I2CReceiveByte(void) { unsigned char i=8,data=0; SDA=1; while (i--) { data<<=1; SCL=0;SomeNOP(); SCL=1;SomeNOP(); //时钟做一次从低到高的跳变 可以接收数据 data|=SDA; } SCL=0; return data; }
评论
    相关推荐
    • 单片机下的I2C总线学习
      单片机下的I2C总线学习,学习资料齐全,包括文档,源代码,可以供毕业设计参考
    • 通用 单片机 I2C 程序
      通用 单片机 I2C 程序,以ADV7172为例,适当修改可做其他用
    • avr单片机i2c读写
      单片机进行i2c总线的读写 用单片机进行i2c总线的读写 用单片机进行i2c总线的读写
    • 单片机I2C教学课件
      单片机I2C,HR版,控制与实现,液晶显示器始终的制作等等,看看有益,高手绕道
    • 51单片机I2C程序
      STC51系列的单片机I2C程序,该试验功能是单片机复位一次, 自动从24C02中读取数据, 然后加1,最终数码管中的数据就是开机的次数,具有一定的实用意义。 当程序烧写后用手按复位键可以看到数码管每按一下加一。
    • 51单片机I2C读写EEPROM例程
      51单片机I2C读写EEPROM例程,有注释,适合初学者
    • 430单片机I2C程序
      基于430开发的有关I2c协议的代码程序
    • PIC 单片机 i2c从机应用
      PIC 单片机 i2c从机应用 I2C从机
    • STC单片机I2C程序
      STC单片机利用IO模拟I2C程序,晶振22.1184M。
    • STC单片机I2C做从模式代码
      STC8G系列单片机I2C作从模式,采用中断模式,项目已经经过验证,欢迎下载参考,有不足之处欢迎指正。