#include<stc15.h>
#define delay ;;;;;;;;
sbit scl=P3^3;
sbit sda=P3^2;
void start() //起始
{
scl=1;
delay;
sda=1;
delay;
sda=0;
delay;
}
void stop() //停止
{
sda=0;
delay;
scl=1;
delay;
sda=1;
}
void ack() //应答
{
unsigned char i;
scl=1;
delay;
while((sda=1)&&(i<50))
scl=0;
delay;
}
void write_byte(unsigned char date)
{
unsigned char i,temp;
temp=date;
scl=0;
for(i=0;i<8;i++)
{
if(temp&0x80)sda=1;
else sda=0;
delay;
scl=1;
delay;
scl=0;
temp=temp<<1;
}
sda=1;
delay;
}
unsigned char read_byte()
{
unsigned char i,j;
scl=0;
delay;
for(i=0;i<8;i++)
{
scl=1;
delay;
j=sda|j;
j=j<<1;
scl=0;
delay;
}
return j;
}
void main()
{
start();
write_byte(0xa0);ack();
write_byte(0x00);ack();
write_byte(0x00);ack();
write_byte(0x55);ack();
stop();
for(;;);
}