I2C总线C语言源程序

来源:本站
导读:目前正在解读《I2C总线C语言源程序》的相关信息,《I2C总线C语言源程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《I2C总线C语言源程序》的详细说明。
简介:本文主要介绍了I2C总线C语言源程序。

/*VIICC.H*/

#pragmadbcdsmall

#include<intrins.h>

#include<reg52.h>

#defineNOPnop();nop();nop();nop()

#defineSDAP1^7

#defineSCLP1^6

voidsta();

voidcack();

voidstop();

voidmnack();

voidmack();

voidwrbyt(ucharshu);

voidwrnbyta(ucharslaw,uchargg[],ucharn);

voidwrnbyt(ucharslaw,ucharff[],ucharnumber);

ucharrdbyt();

voidrdnbyt(ucharslar,ucharqq[],ucharnumber);

源程序由9个函数组成,程序清单如下:

voidsta()/*启动I2C总线*/

{

SDA=1;

SCL=1;

NOP;

SDA=0;

NOP;

SCL=0;

}

voidstop()/*停止I2C总线

*/

{

SDA=0;

SCL=1;

NOP;

SDA=1;

NOP;

SCL=0;

}

voidmack()/*发送应答位*/

{

SDA=0;

SCL=1;

NOP;

SCL=0;

SDA=1;

}

voidmnack()/*发送非应答位*/

{

SDA=1;

SCL=1;

NOP;

SCL=0;

SDA=0;

}

voidcack()/*应答位检查*/

{

SDA=1;

SCL=1;

F0=0;

if(SDA==1)

F0=1;

SCL=0;

nop();

}

/*向虚拟I2C总线上发送1个数据字节*/

voidwrbyt(ucharshu)

{

uchari;

for(i=0;i<8;i++){

if((shu&0x80)>0){

SDA=1;

SCL=1;

NOP;

SCL=0;

SDA=0;

}

else{

SDA=0;

SCL=1;

NOP;

SCL=0;

}

shu=shu<<1;

}

}

/*从I2C总线上读取1个数据字节*/

ucharrdbyt()

{

ucharnn=0xff,mm=0x80,uu=0x7f;

ucharj;

for(j=0;j<8;j++){

SDA=1;

SCL=1;

if(SDA==0)

nn=(nn&uu);

else

nn=(nn|mm);。

nn=crol(nn,1);

SCL=0;

}

return(nn);

}

voidwrnbyta(ucharslaw,uchargg[],ucharn)

{

do{

sta();

wrbyt(slaw);

cack();

}while(F0==1);

wrbyt(gg[n]);

cack();

}

/*向虚拟I2C总线上发送n个字节的数据*/

voidwrnbyt(ucharslaw,ucharff[],ucharnumber)

{

ucharidatak;

do{

sta();

wrbyt(slaw);

?cack();

}while(F0==1);

for(k=0;k<number;k++){。

wrbyt(ff[k]);

cack();

while(F0==1)

wrnbyta(slaw,ff,k);

}

stop();

}

/*从虚拟I2C总线上读取n个字节的数据*/

voidrdnbyt(ucharslar,ucharqq[],ucharnumber)

{

ucharidatadata0,l;

do{

sta();

wrbyt(slar);

cack();

}while(F0==1);?

for(l=0;l<number-1;l++){

data0=rdbyt();

qq[l]=data0;

mack();

}

data0=rdbyt();

qq[l]=data0;

mnack();

stop();

}

提醒:《I2C总线C语言源程序》最后刷新时间 2024-03-14 01:02:52,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《I2C总线C语言源程序》该内容的真实性请自行鉴别。