c51单片机模拟i2c总线驱动程序

c51单片机模拟i2c总线驱动程序

ID:5994643

大小:101.89 KB

页数:9页

时间:2017-12-30

c51单片机模拟i2c总线驱动程序_第1页
c51单片机模拟i2c总线驱动程序_第2页
c51单片机模拟i2c总线驱动程序_第3页
c51单片机模拟i2c总线驱动程序_第4页
c51单片机模拟i2c总线驱动程序_第5页
资源描述:

《c51单片机模拟i2c总线驱动程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/**********************************I2C总线驱动*************************************模块名:I2C总线驱动型号:I2C创建人:陈曦日期:2005-6-15修改人:陈曦日期:2005-6-19功能描述:此模块包括发送数据及接收数据,应答位发送,并提供了几个直接面对器件的操作函数,能很方便的与用户程序进行连接并扩展。需要注意的是,函数是采用延时方法产生SCL脉冲,对高晶振频率要做一定的修改!!在写E2PROM的时候一定要延时!!!说明:1us机器周期,晶振频率要小于12MHz返

2、回1则操作成功,返回0则操作失败。sla为器件从地址,suba为器件子地址。*************************************************************************************/#include"AT89X52.h"#include#defineSomeNOP();{_nop_();_nop_();_nop_();_nop_();_nop_();}//定义空指令sbitSDA=P1^3;//模拟I2C数据传输位sbitSCL=P1^2;//模拟I2C时钟控

3、制位bitbdataI2C_Ack;//应答标志位/************************************I2C_Start************************************函数名:voidI2C_Start()入口:出口:功能描述:启动I2C总线,即发送I2C初始条件解释:在I2C总线协议中规定的起始位格式是:在SCL高电平期间,SDA发生从高到低的电平跳变.它与其它数据格式的区别在于,协议中规定有效的数据必须在SCL的高电平期间保持不变,只有在SCL的低电平期间才能发生跳变.所以这一有别与其它格式的数据

4、才能做为起始位.调用函数:全局变量:**********************************************************************************/voidI2C_Start(){SDA=1;//发送起始条件的数据信号_Nop();SCL=1;SomeNOP();//起始条件建立时间大于4.7us,延时SDA=0;//发送起始信号SomeNOP();//起始条件建立时间大于4us,延时SCL=0;//钳住I2C总线准备发送或接收数据/******解释:I2C总线在空闲状态下都是被上拉为高电平的

5、,所以当它们处于低电平时就表示忙的状态.***/_nop_();_nop_();}/************************************I2C_Stop************************************函数名:voidI2C_Stop()入口:出口:功能描述:结束I2C总线,即发送I2C结束条件解释:同起始条件的格式类似,结束条件的格式是在SCL高电平期间,SDA由低电平向高电平跳变.调用函数:全局变量:***************************************************

6、*******************************/voidI2C_Stop(){SDA=0;//发送结束条件的数据信号_Nop();SCL=1;//发送结束条件的时钟信号SomeNOP();//结束条件建立时间大于4us,延时SDA=1;//发送I2C总线结束信号SomeNOP();}/************************************I2C_CheckAck************************************函数名:bitI2C_CheckAck(void)入口:出口:0(无应答),1(有

7、应答)功能描述:检验I2C总线应答信号,有应答则返回1,否则返回0,超时值取255.解释:I2C总线协议中规定传输的每个字节之后必须跟一个应答位,所以从器件在接收到每个字节之后必须反馈一个应答信号给主控制器,而主控制器就需要检测从器件回传的应答信号,根据其信息做出相应的处理.另外,主从之别是相对的,接收数据的即为从,发送数据的及为主.再看看应答信号的格式:在由发送器产生的时钟响应周期里,发送器先释放SDA(置高),然后由接受器将SDA拉低,并在这个时钟脉冲周期的高电平期间保持稳定的低电平.即表示从器件做出了应答.调用函数:voidI2C_Stop

8、()全局变量:*************************************************************

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。