接Mega8学习笔记(10.2.1)-------cocoguojia 原创
//----------------------------------
//发送一个字节 temp
void send(u8 temp)
{
u8 i;
for(i=0;i<=7;i++)
{
if((temp&0x80)==0x80)
{
SDA=1;
}
else
{
SDA=0;
}
temp=temp<<1;
delay_us(2);
SCL=1;
delay_us(2);
SCL=0;
delay_us(2);
}
SCL=0;
delay_us(5);
while(!ack())
{
;
}
}
//----------------------------------
//----------------------------------
void stop(void)
{
SDA=0;
delay_us(2);
SCL=1;
delay_us(2);
SDA=1;
delay_us(2);
SCL=0;
delay_us(2);
}
//----------------------------------
//----------------------------------
u8 read(void)
{
u8 data_read=0;
u8 i;
SDA=1;
delay_us(2);
DDRC.5=0;
delay_us(2);
for(i=0;i<=7;i++)
{
SCL=1;
delay_us(2);
if(PINC.5==1)
{
data_read|=0X01;
}
else
{
;
}
if(i!=7)
{
data_read=data_read<<1;
}
SCL=0;
delay_us(2);
}
DDRC.5=1;
delay_us(2);
SDA=0;
delay_us(2);
SCL=1;
delay_us(2);
SCL=0;
delay_us(2);
return data_read;
}
//----------------------------------
//----------------------------------
void main(void)
{
init();
start();
send(0xa0);
send(0x02);
send(0x55);
stop();
delay_ms(15);
start();
send(0xa0);
send(0x02);
stop();
start();
send(0xa1);
PORTB=read();
stop();
while(1)
{
;
}
}
//----------------------------------