本人用430模拟了一个IIC
发现一个问题:
//-----***-无扇区读---多字节-***-----//
//读取指定器件无扇区指定地址多字节数据到指定地址
//Device=器件地址---单字节
//DataAdd=字节地址---单字节
void IicMuchByteRead(unsigned char DataAdd,unsigned char *DataDptr,unsigned char DataLend)
{
unsigned char i;
_DINT();
WDT();
IicInit();
IicStart();
IicSentByte(0xa0);
IicSentByte(DataAdd);
IicStart();
IicSentByte(0xa1);
for(i=DataLend-1;i>0;i--)
{
*DataDptr=IicReceiveByte();
DataDptr++;
SendAcknowledge(0);
}
*DataDptr=IicReceiveByte();
SendAcknowledge(1);
IicStop();
WDT();
Delay(500);
_EINT();
}
当红色延时更改为:Delay(50);
不能读取第一次的数据,以后的都正常!
不清楚是那里的问题
自己分析:
可能是延时时间不够,IIC还没有来得及应答!
不过也很矛盾,这是读取数据的时序,应该不会出现所谓的应答时间
所以,还麻烦各位告诉小弟! |