I2C总线C语言源程序
#pragma
#include
#include
#define
#define
#define
void
void
void
void
void
void
void
void
uchar
void
源程序由9个函数组成,程序清单如下:
voidsta(
{
SDA=1;
SCL=1;
NOP;
SDA=0;
NOP;
SCL=0;
}
void
*/
{
SDA=0;
SCL=1;
NOP;
SDA=1;
NOP;
SCL=0;
}
void
{
SDA=0;
SCL=1;
NOP;
SCL=0;
SDA=1;
}
void
{
SDA=1;
SCL=1;
NOP;
SCL=0;
SDA=0;
}
void
{
SDA=1;
SCL=1;
F0=0;
if(SDA==1)
F0=1;
SCL=0;
nop(
}
/*向虚拟I2C总线上发送1个数据字节*/
void
{
uchar
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个数据字节*/
uchar
{
uchar
uchar
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);
}
void
{
do{
sta(
wrbyt(slaw);
cack(
}while(F0==1);
wrbyt(gg[n]);
cack(
}
/*向虚拟I2C总线上发送n个字节的数据*/
void
{
uchar
do{
sta(
wrbyt(slaw);
?cack(
}while(F0==1);
for(k=0;k
cack(
while(F0==1)
wrnbyta(slaw,ff,k);
}
stop(
}
/*从虚拟I2C总线上读取n个字节的数据*/
void
{
uchar
do{
sta(
wrbyt(slar);
cack(
}while(F0==1);?
for(l=0;l
qq[l]=data0;
mack(
}
data0=rdbyt(
qq[l]=data0;
mnack(
stop(
}
I2C总线C语言源程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)