关于24C16

来源:互联网 发布:知乎什么是互联网数据 编辑:程序博客网 时间:2024/05/16 17:37


总线空闲

总线 空闲的时候,两条线SDASCL都是高电平

关于24C16 

void ster24()

{

sda_24=1;

usdealy();

scl_24=1;

usdelay();

sda_24=0;

usdelay();

scl_24=0;

}

关于24C16 

void stop24()

{

sda_24=0;

usdelay();

scl_24=1;

usdelay();

sda_24=1;

usdelay();

}

写入逻辑信号0

关于24C16 

写入逻辑信号1

关于24C16 

void write_byte(uchar dat)

{

uchar i;

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

{

scl_24=0;

usdelay();

sda_24=(bit)(dat&0x80);

usdelay();

scl_24=1;

usdelay();

dat<<1;

}

scl_24=0;

usdelay();

sda_24=1;

usdelay();

}

读一个字节

uchar read_byte()

{

uchar i,k;

scl_24=0;

usdelay();

sda_24=1;

usdelay();

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

{

scl_24=1;

usdelay();

k=(k<<1)|sda_24;

scl_24=0;

usdelay();

}

return k;

}

 

 

void write_add(uchar add,uchar dat)

{

star24();

write_byte(0xa0);//呼叫哪一个器件

Ack24();

write_byte(add);//往器件内部的地址写

Ack24();

write_byte(dat);//写入数据

Ack24();

stop24();

}

 

uchar read_add(uchar add)

{

uchar dat;

star24();

write_byte(0xa0);呼叫那个器件

Ack24();

write_byte(add);要读器件内部地址

Ack24();

star24();

write_byte(0xa1);//呼叫器件

Ack24();

dat=read_byte();

stop24();

return dat;

}

原创粉丝点击