_iicMode = WRDATA;//写数据模式
_iicPt = 0;
_iicData[0] = (U8)addr;
_iicData[1] = (U8)data;
_iicDataCount = 2;//中断里写两个数据(地址)
rIICDS = (U8)slvAddr; //slvAddr=0xa0
rIICSTAT = 0xf0; //11MasTx,1Start,1enable rx/tx(使能中断)首先发送从设备地址,在中断函数里发送数据
//Clearing the pending bit isn't needed because the pending bit has been cleared.
while(_iicDataCount!=-1);//等待主发送模式停止,在中断函数里进行的
到这里 iic发的数据应该就已经发出去了,下面的代码是干嘛用的啊,(看着就是吧slave地址再发一遍,不知道目的何在?)
_iicMode = POLLACK;//MasTx condition has Stoped,等待ACK应答模式,有应答表示从设备已经收到
while(1)
{
rIICDS = slvAddr; //slvAddr=0xa0
_iicStatus = 0x100; //IICSTAT clear?
rIICSTAT = 0xf0; //MasTx,Start
rIICCON = 0xaf; //Resumes IIC operation.
while(_iicStatus==0x100); //Wait until IICSTAT change
if(!(_iicStatus&0x1))
break; //When ACK is received
}