1回答

0收藏

我的PIC16F887程序始终读不出DS1307中的数据,请高手看程序

其他 其他 3946 人阅读 | 1 人回复 | 2011-05-11

我的PIC16F887程序始终读不出DS1307中的数据,请高手看程序

<div id="postmessage_1087851" class="t_msgfont">读这一部分的程序这样子:
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
分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

彩虹糖

发表于 2011-5-12 13:49:07 | 只看该作者

RE:我的PIC16F887程序始终读不出DS1307中的数据,请高手看程序

DS1307地址和数据是通过两条双向的串行总线传输的,首先发送开始信号并发送器件地址,接着从机检测,继续发送待操作的地址,然后重新发送起始信号,最后读取数据IIC停止,并返回读取的数据。
IIC_SEND(0b11010000); 主机发送的SSPADD与从机的完全相同时,从机最好发送应答信号,主机等待应答信号,加入IIC_Wait_Ack()函数,也就是说发送起始位和重新发送起始位之后都加入等待应答信号。。还有看看你的主函数里有返回语句吗??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条