支持i2c外设的函数.doc

支持i2c外设的函数.doc

ID:51469349

大小:60.00 KB

页数:7页

时间:2020-03-25

支持i2c外设的函数.doc_第1页
支持i2c外设的函数.doc_第2页
支持i2c外设的函数.doc_第3页
支持i2c外设的函数.doc_第4页
支持i2c外设的函数.doc_第5页
资源描述:

《支持i2c外设的函数.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2.4I²C函数下列函数支持I2C外设:函数简述AckI2C生成I2C总线应答信号(Acknowledgecondition)。CloseI2C屏蔽SSP(同步串行口)模块。DataRdyI2CI2C缓存中的数据是否可用?getsI2C在主I2C模式下,从I2C总线读取1个字符串。IdleI2C循环直到I2C总线出现空闲。NotAckI2C生成I2C总线不应答信号(NotAcknowledgecondition)。OpenI2C设置SSP模块。WriteI2CputcI2C向I2C总线写入1个字节。putsI2C在主或从模式下,向I2C总线写入1个字

2、符串。ReadI2CgetcI2C从I2C总线读取1个字节。RestartI2C生成I2C总线Restart信号。StartI2C生成I2C总线START信号。StopI2C生成I2C总线STOP信号。2.4.1函数详解#include原型:voidAckI2C(void);功能:生成I2C总线应答信号源文件:acki2c.c///////////////////acki2c.c//////////////////////////////////////voidAckI2C(void){SSPCON2bits.ACKDT=0;//set

3、acknowledgebitstateforACKSSPCON2bits.ACKEN=1;//initiatebusacknowledgesequence}//////////////////////////////////////////////////////////////////////=======================================#include原型:voidCloseI2C(void);功能:屏蔽SSP(同步串行口)模块。源文件:closei2c.c//////////////closei2c

4、.c://////////////////////////////////voidCloseI2C(void){SSPCON1&=0xDF;//屏蔽SSP(同步串行口)模块}/////////////////////////////////////////////////////////////////=======================================#include原型:unsignedcharDataRdyI2C(void);功能:在I2C缓存中的数据是否可用?确定在SSP(同步串行口)模块的缓存中是否有

5、1字节的待读数据。如果有数据在SSP模块缓存中则返回1;否则返回0。源文件:dtrdyi2c.c//////////////dtrdyi2c.c://////////////////////////////////unsignedcharDataRdyI2C(void){if(SSPSTATbits.BF)//测试缓存满的标志位是否为1return(+1);//数据在寄存器SSPBUF中elsereturn(0);//数据不在寄存器SSPBUF}/////////////////////////////////////////////////////

6、/////////范例:if(DataRdyI2C()){var=getcI2C();}=======================================#include原型:unsignedchargetsI2C(unsignedchar*rdptr,unsignedcharlength);功能:在主I2C模式下,从I2C总线读取1个指定长度的字符串。rdptr指向PICmicroRAM的字符型指针,用来存放从I2C器件读取来的数据。length指定从I2C器件读取的字节数。如果全部字节已发送完毕则返回0;如总线冲突则返回

7、-1。源文件:getsi2c.c//////////////://////////////////////////////////unsignedchargetsI2C(unsignedchar*rdptr,unsignedcharlength){while(length--)//performgetcI2C()for'length'numberofbytes{*rdptr++=getcI2C();//savebytereceivedwhile(SSPCON2bits.RCEN);//checkthatreceivesequenceisoverif(

8、PIR2bits.BCLIF)//testforbuscollision{return(-1);//retu

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

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

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