查看: 3715|回复: 1

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

[复制链接]

该用户从未签到

发表于 2011-5-11 20:11:42 | 显示全部楼层 |阅读模式
分享到:
我的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
回复

使用道具 举报

该用户从未签到

发表于 2011-5-12 13:49:07 | 显示全部楼层

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

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

使用道具 举报

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

本版积分规则

关闭

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



手机版|小黑屋|与非网

GMT+8, 2025-1-9 10:49 , Processed in 0.128683 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.