打印

ds1302读出的数据都是85,不知道是什么原因,求大神帮解决

[复制链接]
3310|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阿飞507|  楼主 | 2015-6-2 21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
地址、数据发送子程序
void Write1302 ( unsigned char addr,dat )
{
unsigned char i,temp;
CE=0;
//CE
引脚为低,
数据传送
中止
SCLK=0;
//
清零时钟总线
CE = 1;
//CE引脚为高,逻辑控制有效
//发送地址
  for
( i=8; i>0; i-- )
//循环8次移位
{
SCLK = 0;
temp = addr;
DIO = (bit)(temp&0x01);          //每次传输低字节
addr >>= 1;                //右移一位
SCLK = 1;
}
//发 送数据
for ( i=8; i>0; i-- )
{
SCLK = 0;
temp = dat;
DIO = (bit)(temp&0x01);         
dat >>= 1;                  
SCLK = 1;
}
CE = 0;
}
//数据读取子程序
unsigned char Read1302 ( unsigned char addr )
{
unsigned
char i,temp,dat1,dat2;
CE=0;
SCLK=0;
CE = 1; //发送地址
for ( i=8; i>0; i-- ) //循环8次移位
{
SCLK = 0;
temp = addr;
DIO = (bit)(temp&0x01);          //每次传输低字节
addr >>= 1;                              //右移一位
SCLK = 1;
}//读取数据
for ( i=8; i>0; i-- )
{
ACC_7=DIO;
SCLK = 1;
ACC>>=1;
SCLK = 0;
}
CE=0;
dat1=ACC;
dat2=dat1/16; //数据进制转换
dat1=dat1%16; //十六进制转十进制
dat1=dat1+dat2*10;
return (dat1);
}//初始化DS1302
void Initial(void)
{
Write1302 (WRITE_PROTECT,0X00);         //禁止写保护
   Write1302 (WRITE_SECOND,0x56);          //秒位初始化
Write1302 (WRITE_MINUTE,0x34);         //分钟初始化
Write1302 (WRITE_HOUR,0x12);                     //小时初始化
Write1302 (WRITE_PROTECT,0x80);                 //允许写保护
}

相关帖子

沙发
xuyaqi| | 2015-6-3 07:02 | 只看该作者
设置一下时间就好了

使用特权

评论回复
板凳
ningling_21| | 2015-6-3 08:06 | 只看该作者
读写时序可能不对

使用特权

评论回复
地板
阿飞507|  楼主 | 2015-6-3 11:03 | 只看该作者
xuyaqi 发表于 2015-6-3 07:02
设置一下时间就好了

时间已经设了

使用特权

评论回复
5
阿飞507|  楼主 | 2015-6-3 11:03 | 只看该作者
ningling_21 发表于 2015-6-3 08:06
读写时序可能不对

就是不知道哪里不对

使用特权

评论回复
6
youimiss| | 2015-6-3 20:35 | 只看该作者
曾经遇到过没加上拉电阻也是这种情况

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

221

帖子

7

粉丝