主机发送数据格式,器件地址+子地址+数据,程序只能接收到 器件地址+子地址,而主机发送数据字节时,从机响应非应答。图为单片机手册给出的接收时序图,思考中……
void initIIC()
{
PORTC=0x02;
LATC=0x00;
TRISC=0x18;
INTCON |=0xC0;
PIE1 |=0x08;
SSPADD =0x90;
SMP=1;
CKE=0;
SSPCON1 =0x3e;
}
void interrupt I2c(void)
{
if (SSPIF){
SSPIF=0;
SSPOV=0;
i2cSlaveInt_Handler();
}
}
void i2cSlaveInt_Handler()
{
uchar command;
command = SSPSTAT & 0x2D;
switch( command )
{
case 0x09: // Master写,接收的字节是地址
tmpSTAT = SSPBUF;
break;
case 0x29: //Master写,接收的字节是数据
data[count++]=SSPBUF;
if(count>=10)
count=0;
else
asm("nop");
break;
case 0x28: //操作完成,释放时钟
CKP=1;
break;
default:
break;
}
}
阅读(2950) | 评论(0) | 转发(0) |