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;

}

c语言iic通讯编程,I2C总线万能程序(C语言)相关推荐

  1. 河南工业大学c语言考试题库,c语言题库(编程)河南工业大学 河工大 c语言期末考试题库...

    c语言题库(编程)河南工业大学 河工大 c语言期末考试题库 (27页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 C语言题库编程河南工业 ...

  2. 程序设计C语言函数定义,编程函数的定义之C语言

    编程函数的定义之C语言 类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型.接下来,小编为您介绍了编程函数的定义之C语言,感谢您的阅读! 无参函数的定义 无参函数定义的`一般形式如下:类 ...

  3. arduino语言是c语言吗,Arduino编程基础(一)——Arduino语言

    Arduino语言 Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言,C语言是一种面向过程的编程语言,C++是一种面向对象的编程语言.早期的Arduino核心库使用C语言编写 ...

  4. c语言滑稽的编程,12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(5)...

    A,局部变量的返回地址 Q:下面的代码有问题吗?如果有,如何修改? #include int* inc(int val) { int a = val; a++; return &a; } in ...

  5. c语言入门经典必背18个程序,c语言入门经典必背18个程序

    c语言入门经典必背18个程序 1 . /* 输出 9*9 口诀.共 9 行 9 列, i 控制行, j 控制列. */ #include "stdio.h" main() {int ...

  6. nec c语言笔试题,红外NEC编码发射程序_C语言(国外英文资料).doc

    红外NEC编码发射程序_C语言(国外英文资料) 红外NEC编码发射程序_C语言(国外英文资料) * * * * * * * Hardware platform: homemade infrared d ...

  7. Linux下C语言进程通讯编程

    代码: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <sys/shm.h> 4 /********* ...

  8. c语言人机互动编程,单片机人机交互系统的C语言编程简介.ppt

    单片机人机交互系统的C语言编程简介 第5章 单片机人机交互系统的C51语言编程 5.1 单片机的输入/输出端口 5.2 LED数码管显示器 5.3 LED数码管点阵显示器 5.4 液晶显示器 5.5 ...

  9. 大一下c语言期末考试编程题,大一上期末C语言编程题

    大一上期末C语言编程题 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 用公式 π/4 = 1-1/3+1/5-1/7--,编程序 ...

  10. 手机c语言图形界面编程工具,「分享」C语言如何编写图形界面

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面.大家也都有回答,需要其他的库.MFC,GTK,QT. 本人近期刚用GTK库加上纯C ...

最新文章

  1. java中文件操作的工具类
  2. SQL的各种连接(cross join、inner join、full join)的用法理解
  3. 给数据库表字段设置默认值
  4. F12 界面:请求响应内容 Preview 和 Response 不一致、接口返回数据和 jsp 解析到的内容不一致
  5. 'parent.relativePath' points at no local POM
  6. java代码修改触发编译_gcc -O0仍然优化了“未使用”的代码 . 是否有一个编译标志来改变它?...
  7. matlab求解集合覆盖问题,Set Cover Problem (集合覆盖问题)
  8. 使用Java语言如何实现快速文件复制?
  9. 关于jdk11没有jre
  10. string和wstring相互转换以及wstring显示中文问题
  11. EXCEL 趋势图生成的公式应用说明
  12. 互联网公司起名,其实都有套路的!
  13. Peewee 使用手册
  14. python控制泰克示波器捕捉触发波形
  15. Sharding Sphere ~ Sharding-jdbc分库分表、读写分离
  16. Oracle卸载不干净?看这篇就够了
  17. 【算法随记三】小半径中值模糊的急速实现(16MB图7.5ms实现) + Photoshop中蒙尘和划痕算法解读。...
  18. Unity如何完全消除摩擦力
  19. AudioSourse play loop Clip
  20. 稀奇!20多年前的硬盘拆解(附高清图)

热门文章

  1. oracle基本操作语句大全
  2. PS Photoshop 无法识别数位板 钢笔压力 感叹号
  3. 黑马python培训靠谱吗-黑马程序员的Python怎么样?
  4. cmd命令行把bat或exe执行为windows服务
  5. Zookeeper数据同步流程
  6. node的学习过程(菜鸟)
  7. 生成条码 -- jsbarcode
  8. SQLServer用COMPUTE 和 COMPUTE BY 汇总数据
  9. Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
  10. Ruby 从入门到掌握视频教程(31 个视频)