大家帮看看AVR单片机24C02的多字节读程序,在读数据的时候为什么只能读出一个数据,求指教

voidread_page_24c02(uchar*b,ucharaddr,uintlen){uinti;start_signed();write_byte(0xA0);... void read_page_24c02(uchar *b,uchar addr,uint len)
{
uint i;
start_signed();
write_byte(0xA0);//写标志位
if(ACK_signed() != 0)
{
return;
}
write_byte(addr);//指定地址
if(ACK_signed() != 0)
{
return;
}
start_signed();
write_byte(0xA1);
if(ACK_signed() != 0)
{
return;
}
for(i = 0;i < len-1;i++)
{
*b = read_byte();
putchar0(*b);
b++;
delay(10);
if(ACK_signed() != 0)
{
break;
//continue;
}
}
*b = read_byte();
SDA_high();
delay_us(10);
SCL_high();
delay_us(10);
SCL_low();
delay_us(10);
putchar0(*b);
stop_signed();
delay(1); //延时1MS等待写操作完成
}
展开
 我来答
杭电王同学
2012-09-20 · TA获得超过166个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人:75.2万
展开全部
*b = read_byte();为什麽不取地址?
b++了,指针地址是加了,可数据存储地址并没装在指针裏面,怎麼让它读下一位数据。
追问
我这个因为是24C02的,24C02里说在读数据时,地址是自动加的,但是那是产生应答以后,可是我这边的读数据应答没能产生,检查了好多次也没能看到是哪错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1c88cc1
2013-01-14
知道答主
回答量:4
采纳率:0%
帮助的人:3.3万
展开全部
for(i = 0;i < len-1;i++)
{
*b = read_byte();
putchar0(*b);
b++;
delay(10);
if(ACK_signed() != 0)
{
break;
//continue;
}
}

把 delay(10); 延时去掉。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-09-20
展开全部
不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式