请问用PIC写EEPROM24LC16时,如何判断write cycle结束呀?(附源程序)
连续执行写操作的时候总是不行,估计是eeprom的write cycle的问题。除了延时之外,有什么节约时间的方法么?请高手指点。
eeprom write的子程序如下所示,还应该作什么修改那?
void Idle(void) //I2C IDLE FUNCTION
{
while((SSPCON2 & 0x1F)|(STAT_RW))
continue;
}
void write_eeprom(char word, char data_address)
{
SEN = 1; //START ENABLED
while(SEN); //WAIT UNTIL START IS OVER
SSPBUF = 0b10100000; //CONTROL BYTE
Idle(); //ENSURE MODULE IS IDLE
if(!ACKSTAT); //ack
else
return;
SSPBUF=data_address; //ENSURE MODULE IS IDLE
Idle();
if(!ACKSTAT);
else
return ;
SSPBUF = word; //DATA BYTE (ZONES: 1,2,3 or 4)
Idle(); //ENSURE MODULE IS IDLE
if(!ACKSTAT); //LOOK FOR ACK
else
return ;
PEN = 1; //STOP ENABLED
while(PEN); //WAIT UNTIL STOP IS OVER
}
发表时间:2004年4月16日11:50:30