大家好
连续读24C512时,只能读出第一个数据,其他均为0xFF,写操作没问题,看程序是否有致命问题,采用的是c8051f020单片机
Rd_nbyte_FromROM24(uint address,uchar num)
{
uchar xdata rdata=0;
uchar xdata i=8;
uchar xdata j=0;
uchar xdata msb=0,lsb=0;
EA=0;
start_bit();
write_8bit(0xA0); ack();
msb = address/256;
lsb = address%256;
write_8bit(msb); ack();
write_8bit(lsb); ack();
start_bit();
write_8bit(0xA1); ack();
for(j=0;num>0;num--,j++)
{
while(i--)
{
SCL=0;
rdata<<=1;
delay_iic(1);
SCL=1;
delay_iic(1);
if(SDA) rdata|=0x01;
}
ack();
i=8;
rec_tmp24_nbyte[j] = rdata;
rdata= 0;
// if((j+lsb)>=256)//此部分为超过128字节时使用
// {
// msb++; lsb=0;
// no_ack();
// stop_bit();
// write_8bit(0xA0); ack(); //写地址
// write_8bit(msb);ack();
// write_8bit(lsb); ack(); //设置首地址
// start_bit();
// write_8bit(0xA1);
// ack();
// }
}
no_ack();
stop_bit();
EA=1;
} |