文档库 最新最全的文档下载
当前位置:文档库 › I2C总线程序

I2C总线程序

I2C总线程序
I2C总线程序

#include

#define uchar unsigned char

sbit sda = P3^6;

sbit scl = P1^5;

void delay()

{;;}

void delay1(uchar x)

{

uchar a,b;

for(a = x;a > 0;a --)

for(b = 100;b > 0;b --);

}

void start() //开始信号

{

sda = 1;

delay();

scl = 1;

delay();

sda = 0;

delay();

scl = 0;

delay();

}

void stop() //停止信号

{

sda = 0;

delay();

scl = 1;

delay();

sda = 1;

delay();

}

void respons() //应答信号

{

uchar i = 1;

scl = 1;

delay();

while((sda == 1)&&(i < 250)) i ++;

scl = 0;

delay();

}

void init()//初始化

{

sda = 1;

delay();

scl = 1;

delay();

}

void write_byte(uchar date)//写一个字节{

uchar i,temp;

temp = date;

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

{

temp = temp << 1;

scl = 0;

delay();

sda = CY;

delay();

scl = 1;

delay();

//scl = 0;

//delay();

}

scl = 0;

delay();

sda = 1;

delay();

}

/*uchar read_byte()//读出8位数

{

uchar i,j,k = 0;

scl = 0;

delay();

sda = 1;

delay();

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

{

delay();

scl = 1;

delay();

if(sda == 1)

j = 1;

else

j= 0;

k = (k << 1) | j;

scl = 0;

}

delay();

return k;

}*/

void write_add(uchar date)//写{

start();

write_byte(0x90);

respons();

write_byte(date);

respons();

stop();

}

/*uchar read(uchar address) {

uchar date;

start();

write_byte(0x90);

respons();

write_byte(address);

respons();

start();

write_byte(0xa1);

respons();

date = read_byte();

stop();

return date;

}*/

void main()

{

//uchar a = 0;

init();

write_add(0xFF);

delay1(100);

while(1);

}

相关文档