电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

I2C总线程序

I2C总线程序_第1页
1/6
I2C总线程序_第2页
2/6
I2C总线程序_第3页
3/6
标签: 无标签 i2c 程序(调试通过) 本程序是在周立功网上的程序的基础上修改的,原例里的ACK 时序有点问题 /*************************************************************************** 此程序是I2C 操作平台(主方式的软件平台)的底层的C 子程序,如发送数据 及接收数据,应答位发送,并提供了几个直接面对器件的操作函数,它很方便的与用 户程序连接并扩展。 注意:函数是采用软件延时的方法产生 SCL 脉冲,对高晶振频率要作一定的修改 (本例是3us 机器周期,如果系统对时间要求不是很重要的话,最好在每个单元读写结束时加个延时, 测试有子地址器件函数,未测试无地址的器件,适合器件地址和子地址小于256 的器件, 大于 256 的单元的器件可以自己改写)。 **************************************************************************/ #include /*头文件的包含*/ #include #define uchar unsigned char /*宏定义*/ #define uint unsigned int /*端口位定义*/ sbit BELL_OUT=P3^5; sbit SCL="P1"^3;/*模拟 I2C 数据传送位*/ sbit SDA="P1"^4;/*模拟 I2C 时钟控制位*/ bit ack; /*应答标志位*/ /********************************************************************* 起动总线函数 函数原型: void Start_I2c(); 功能:启动 I2C 总线,即发送I2C 起始条件 ********************************************************************/ void Start_I2c() { SDA="1"; /*发送起始条件的数据信号*/ _nop_(); SCL="1"; /*起始条件建立时间大于 4.7us,延时*/ _nop_(); SDA="0"; /*发送起始信号*/ _nop_(); /* 起始条件锁定时间大于 4μs*/ SCL="0"; /*钳住 I2C 总线,准备发送或接收数据 */ _nop_(); } /*********************************************** 结束总线函数 函数原型: void Stop_I2c(); 功能:结束I2C 总线,即发送I2C 结束条件 ***********************************************/ void Stop_I2c() { SDA="0"; /*发送结束条件的数据信号*/ _nop_(); /*发送结束条件的时钟信号*/ SCL="1"; /*结束条件建立时间大于4μs*/ _nop_(); SDA="1"; /*发送I2C 总线结束信号*/ _nop_(); } /******************************************************************* 字节数据传送函数 函数原型: void SendByte(uchar c); 功能:将数据c 发送...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部