本帖最后由 涵潇舒雅 于 2013-10-24 15:16 编辑
主机发送数据到从机的程序已经调试成功
void read_iic(uchar add)
{
uchar temp;
SSPIF=0;
SEN=1;
while(!SSPIF);
SSPIF=0;
SSPBUF=add|0x01;
while(!SSPIF);
SSPIF=0;
temp=SSPBUF;
RCEN=1;
while(!BF);
SSPIF=0; //等待接受数据完成
read_data=SSPBUF;
ACKDT=1;
ACKEN=1;
while(!SSPIF);
SSPIF=0;
PEN=1;
while(!SSPIF);
SSPIF=0;
}
void interrupt isr()
{
unsigned char temp,i;
if(SSPIF==1&&SSPIE==1)
{
SSPIF=0;
if(R_nW==0 && D_nA==1) //接受的是数据
{
if(BF==1)
{
receive_data=SSPBUF;
write_flag=1;
}
}
else if(D_nA==0) //接受的是地址
{
if(BF==1)
{
master_add=SSPBUF;
}
count_isr++;
}
else if(R_nW==1&&D_nA==1&&BF==0)//发送数据
{
CKP=0;
SSPBUF=0xaa;
if(BF==0) //判断SSPBUF是否为空
read_flag=1;
}
}
CKP=1;
SSPOV=0;
}
经测试read_flag=1;read_data=66;不管从机发送的数据怎么改变,SDA的波形图都不发送变化,read_data=66!!!
这是SCL
这是SDA波形图,读出的数据就是66,与显示的数据正常,但是为啥就是不能改变呢??
|