读这一部分的程序这样子:
char READ (char addr)
{ char R;
SEN=1; //产生起始位
while (SEN==1); //检测起始位完成
IIC_SEND(0b11010000); //与从机的SSPADD要完全相同,才能正确通信
IIC_SEND(addr); //此值为内部地址,从0-0xFF可选
PEN=1; //发送停止位
while (PEN==0); //检查停止位结束
RSEN=1; //发送重新启始位
while(RSEN==1); //检测重新起始位完成
IIC_SEND(0b11010001); //读
SSPIF=0;
RCEN=1;
while (SSPIF==0); //等待读完成
R=SSPBUF;
PEN=1; //发送停止位
while (PEN==0); //检查停止位结束
return (R); }
主程序部分: .... while(1)
{ for(i=0;i<7;i++)
{ TEMP(k)=READ(k);
DELAY(100);}
[
本帖最后由 温柔的绳索 于 2011-5-10 23:08 编辑 ]
此帖出自
小平头技术问答
IIC_SEND(0b11010000); 主机发送的SSPADD与从机的完全相同时,从机最好发送应答信号,主机等待应答信号,加入IIC_Wait_Ack()函数,也就是说发送起始位和重新发送起始位之后都加入等待应答信号。。还有看看你的主函数里有返回语句吗??
一周热门 更多>