#include<reg51.h>
#define uchar unsigned char
sbit sda3=P3^1;
sbit scl3=P3^0;
void delay() //
{ ;;;}
void start3() //
{ sda3=1;
delay(); //
scl3=1;
delay();
sda3=0;
delay();
}
void stop3() //
{ sda3=0; //
delay();
scl3=1;
delay();
sda3=1;
delay();
}
void response3()
{ uchar i;
scl3=1;
delay();
if((sda3==1)&&i<250) i++; //
scl3=0; //
delay();
}
void noack3()
{ scl3=1;
delay();
scl3=1;
delay();
scl3=0;
delay();
sda3=0;
delay();
}
void init4() //
{ sda3=1;
delay();
scl3=1;
delay();
}
void write_byte3(uchar date) //D′ò»¸ö×Ö½ú
{ uchar i,temp1;
temp1=date;
for(i=0;i<8;i++)
{ temp1=temp1<<1;
scl3=0; //
delay();
sda3=CY; //
delay();
scl3=1;
delay();
scl3=0;
delay();
}
scl3=0;
delay();
sda3=1;
delay();
}
uchar read_byte3()
{ uchar i,k;
scl3=0;
delay();
sda3=1;
delay();
for(i=0;i<8;i++)
{ scl3=1;
delay();
k=(k<<1)|sda3;
scl3=0;
delay();
}
return k;
}
void delay3(uchar x)
{ uchar a,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
void write_add3(uchar address,uchar date)
{ start3();
write_byte3(0xa0); //
response3();
write_byte3(address);
response3();
write_byte3(date);
response3();
stop3();
}
uchar read_add3(uchar address)
{ uchar date;
start3();
write_byte3(0xa0);
response3();
write_byte3(address);
response3();
start3();
write_byte3(0xa1); //
response3();
date=read_byte3();
noack3();
stop3();
return date;
}
void main()
{ uchar kk;
init4();
kk=0;
write_add3(kk,0x55); //写
delay3(100);
P1=read_add3(kk); //读
while(1);
}
|