#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit sda=P2^1;
sbit scl=P2^0;
void delay()
{
;;;
}
void delay1(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void start()
{
sda=1;
scl=1;
delay();
sda=0;
delay();
}
void stop()
{
sda=0;
scl=1;
delay();
sda=1;
delay();
}
void answer()
{
scl=1;
delay();
while(sda==1);
scl=0;
delay();
}
void write_dat(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
dat=dat<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_dat()
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
return k;
}
void main()
{
start();
write_dat(0xa0);
answer();
write_dat(22);
answer();
write_dat(0xa8);
answer();
stop();
delay1(10);
start();
write_dat(0xa0);
answer();
write_dat(22);
answer();
start();
write_dat(0xa1);
answer();
P0=read_dat();
stop();
while(1);
|