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);
}