|
/*******************************************************
主機(jī)給從機(jī)發(fā)送數(shù)據(jù)
*******************************************************/
void IIC_Send_Pack(unsigned char fuc_Data)
{
/* Step1 */
IICCON &=~ 0x08;
IICCON |= 0x20;
while((!(IICCON&0x08))&&(IICSTA!=0x08));
/* Step2 */
IICCON &=~ 0x20;
IICCON &=~ 0x08;
IICDAT = DEVICEADD;
while((!(IICCON&0x08))&&(IICSTA!=0x18));
/* Step3 */
IICCON &=~ 0x08;
IICDAT = fuc_Data;
while((!(IICCON&0x08))&&(IICSTA!=0x28));
IICCON &=~ 0x08;
IICCON |= 0x10;
}
/***************************************************************************************
從機(jī)接收數(shù)據(jù)
***************************************************************************************/
void IIC_Rpt(void) interrupt IIC_VECTOR
{
switch (IICSTA)
{
case 0x00:
IICCON |= 0x10;
break;
case 0x60:
IICCON |= 0x04;
break;
case 0x68:
while(1);
break;
case 0x80:
IIC_RED_BUF[IIC_CNT] = IICDAT;
IIC_CNT++;
IIC_DECODE_EN =1;
if(IIC_CNT>6)
{
IIC_CNT =0;
IIC_DECODE_EN =1;
}
IICCON|=0x04;
break;
case 0x88:
IIC_RED_BUF[IIC_CNT] = IICDAT;
IIC_CNT++;
IIC_DECODE_EN =1;
if(IIC_CNT>6)
{
IIC_CNT =0;
IIC_DECODE_EN =1;
}
IICCON|=0x04;
break;
case 0xA8:
IICDAT = temperature;
IICCON|=0x04;
break;
case 0xB8:
IICDAT = temperature;
IICCON|=0x04;
break;
case 0xC0:
IICCON|=0x04;
break;
case 0xC8:
IICCON|=0x04;
break;
}
IICCON&=~ 0x08;
}
請問主機(jī)讀取從機(jī)數(shù)據(jù)該如何操作
|
|