哈搂各位高手们好,小弟刚接触M051买了温子棋老师的书看,可是有一点真的是一直搞不清楚
以下是成是範例
*****************************************
*函数名称:
timed_Write_Cycle
*输 入:无
*输 出:无
*功 能:同步的写周期
******************************************/
void Timed_Write_Cycle(void)
{
while (I2STATUS != 0x18) //0x18=00011000 Master Transmit Address ACK
{
//启动
I2CON |= STA;
I2CON |= SI;
while ((I2CON SI) != SI);
I2CON = ((~STA) (~SI)); //请问这是i2c清零的动作吗??但是I2C清零不是要写1吗?还是说先写进i2con,等下次I2CON |= SI;发生时在写入
//设备地址
I2DAT = EEPROM_SLA | EEPROM_WR; //set address and read/write mode.
I2CON |= SI; //怪怪的,是I2C清零还是还是启动I2C下个状态,应该是启动I2C下个状态,但是那由谁来写1清零呢
while ((I2CON SI) != SI);
}
if (I2STATUS != 0x18) //检查应答
{
DEBUGMSG("Not ACK returned!");
}
//停止
I2CON |= STO; //why stop?? don't know
I2CON |= SI; //请问是清零 还是下个状态启动
while (I2CON STO);
}
小弟看了新唐的技术参考手册,可是还是摸不清楚I2C SI触发和status的关係
文件上都是说SI触发后下个周期status反映,但是SI是不是会一直维持到下个status要发生的时候,写一次1进去,作清零,跟触发下次status阿
有没有详细的时序关係图阿,小弟找好多资料都找不到耶
希望这裡的高手可以帮忙一下
感激不尽