IIC通信读写EEPROM,能收到应答,但是不能读写 ?

IIC通信读写EEPROM,能收到应答,但是不能读写 

#include <STC15F2K60S2.H>
#include <intrins.h>
#include <math.h>

sbit scl=P2^0;
sbit sda=P2^1;
float xi;
unsigned int ys=0;
unsigned char cs=121;
unsigned char xh_w=0XA0;
unsigned char xh_r=0XA1;
unsigned char wx=0X88;
unsigned char code smg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void gbfmq (void)
{
	P0=0;
	P2=0XA0;
	P2=0;
}
void ys_6us()
{
	unsigned char i;
	i = 14;
	while (--i);
}
void ys_10ms()
{
	unsigned char x, j;

	x = 108;
	j = 145;
	do
	{
		while (--j);
	} while (--x);
}
void zhs_ksxh ()
{
	scl=1;
	sda=1;
	ys_6us();
	sda=0;
	ys_6us();
}
unsigned char zhs_fs (unsigned char fs)
{
	unsigned char fspd=0X80;
	char wm;
	unsigned char n;
	for(wm=0;wm<8;wm++)
	{
		scl=0;
		ys_6us();
		if(fspd&fs)
			sda=1;
		else
			sda=0;
		ys_6us();
		scl=1;
		ys_6us();
		fspd=_cror_(fspd,1);
	}
	scl=0;
	ys_6us();
	sda=1;
	ys_6us();
	scl=1;
	n = 14;
	while (--n)
	{
		if(sda==0)
			return(0);
	}
	return(1);
}
unsigned char zhs_js (unsigned char yd)
{
	unsigned char js=0X00;
	char rm;
	for(rm=0;rm<8;rm++)
	{
		scl=0;
		ys_6us();
		scl=1;
		ys_6us();
		if(sda==1)
		{
			js=js|0X01;
		}
		js=_crol_(js,1);
	}
	scl=0;
	ys_6us();
	if(yd==0)
		sda=0;
	else
		sda=1;
	scl=1;
	ys_6us();
	scl=0;
	ys_6us();
	sda=1;
	ys_6us();
	js=_cror_(js,1);
	return js;
}
void zhs_jsxh ()
{
	sda=0;
	ys_6us();
	scl=1;
	ys_6us();
	sda=1;
	ys_6us();
}
void xs () interrupt 1
{
	for(xi=0;xi<4;xi++)
	{
		P0=0;
		P2=0XC0;//位选
		P0=_cror_(wx,xi);
		P2=0X80;//锁存
		P0=0XFF;
		P2=0XE0;//段选
		P0=smg[(cs/((unsigned int)(pow(10,xi)+0.1)))%10];
		P2=0X80;//锁存
		ys=70;
	  while(ys--);
	}
	P2=0XC0;
	P0=0;
}
void zdsz (void)
{
	EA=1;
	ET0=1;
}
void dsqsz (void)
{
	TMOD=0;
	TH0=0XD4;
	TL0=0XCC;
	TR0=1;
}
void main ()
{
	unsigned char fh=0;
	unsigned char xh=0;
	gbfmq();
	zdsz();
	dsqsz();
	EA=0;
	P2=0XFF;
	zhs_ksxh();
	fh=zhs_fs(xh_w);
	if(fh==1)
		goto j;
	fh=zhs_fs(0X00);
	if(fh==1)
		goto j;
	zhs_ksxh();
	fh=zhs_fs(xh_r);
	if(fh==1)
		goto j;
	cs=zhs_js(1);
	zhs_jsxh();
	/***************/
	cs++;
	ys_10ms();
	zhs_ksxh();
	fh=zhs_fs(xh_w);
	if(fh==1)
		goto j;
	fh=zhs_fs(0X00);
	if(fh==1)
		goto j;
	fh=zhs_fs(cs);
	if(fh==1)
		goto j;
	zhs_jsxh();
	ys_10ms();
	/*************************/
	EA=1;
	j:
	while(1);
}