case WRDATA:
if((_iicDataCount--)==0)//首地址 ,内部地址和数据都发送完毕后
{
rIICSTAT = 0xd0;//Stop MasTx condition 产生停止信号
rIICCON= 0xaf;//Resumes IIC operation.恢复IIC总线
Delay(1);//Wait until stop condtion is in effect.
//The pending bit will not be set after issuing stop condition.
break;
}
rIICDS = _iicData[_iicPt++];//_iicData[0] has dummy.第一次中断后将内部地址addr的值存入IICDS第二次存入要写入的数据
for(i=0;i<10;i++);//for setup time until rising edge of IICSCL//延时
rIICCON = 0xaf;//resumes IIC operation.恢复IIC总线
break;
case SETRDADDR:
//Uart_Printf("[ S%d ]",_iicDataCount);
if((_iicDataCount--)==0)
break;//第二次中断跳出//IIC operation is stopped because of IICCON[4]
rIICDS = _iicData[_iicPt++];//第一次中断将内部地址addr存入移位寄存器
for(i=0;i<10;i++);//For setup time until rising edge of IICSCL
rIICCON = 0xaf;//Resumes IIC operation.
break;
default:
break;
}
}
void Delay(int x)
{
int k, j;
while(x)
{
for (k=0;k<=0xff;k++)
for(j=0;j<=0xff;j++);
x--;
}
}