打印

DS1302读出来全是0

[复制链接]
1987|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nicker88|  楼主 | 2011-1-2 13:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define SCLK_RT(n) {PORTF=((PORTF&0XEF)^(n<<4));}
#define DIO_RT(n) {PORTF=((PORTF&0XDF)^(n<<5));}
#define RST_RT(n) {PORTF=((PORTF&0XBF)^(n<<6));}
//寄存器宏定义
#define W_SEC 0x80
#define W_MIN 0x82
#define W_HOUR 0x84
#define R_SEC 0x81
#define R_MIN 0x83
#define R_HOUR 0x85
#define W_PROTECT 0x8E

/***********************************DS1302******************************************/
void Write_RT(unsigned char add,unsigned char dat)
{
unsigned char i;
RST_RT(0);
SCLK_RT(0);
RST_RT(1);    //允许操作芯片
for(i=0;i<8;i++)      //送地址
{
  SCLK_RT(0);
  DIO_RT((add&0x01)?1:0);
  add=(add>>1);
  SCLK_RT(1);
}
for(i=0;i<8;i++)      //送数据
{
  SCLK_RT(0);
  DIO_RT((dat&0x01)?1:0);
  dat=(dat>>1);
  SCLK_RT(1);
}
RST_RT(0);
}
unsigned char Read_RT(unsigned char add)
{
unsigned char i,dat;
RST_RT(0);
SCLK_RT(0);
RST_RT(1);    //允许操作芯片
for(i=0;i<8;i++)      //送地址
{
  SCLK_RT(0);
  DIO_RT((add&0x01)?1:0);
  add=(add>>1);
  SCLK_RT(1);
}
DDRF=0XDF;     //PORTD为输入
dat=0;
for(i=0;i<8;i++)      //读数据
{
  dat=(dat|((PORTF&0x20)?0x80:0x00));
  SCLK_RT(1);
  dat=(dat>>1);
  SCLK_RT(0);
}
DDRF=0XFF;     //PORTD为输出
return(((dat/16)*10)+(dat%16));
RST_RT(0);
}
void Init_RT(void)
{
Write_RT(W_PROTECT,0X00); //禁止写保护
Write_RT(W_SEC,0x11); //秒位初始化
Write_RT(W_MIN,0x11); //分钟初始化
Write_RT(W_HOUR,0x11); //小时初始化
Write_RT(W_PROTECT,0x80); //允许写保护
}
主函数里

Init_RT();

                 while(1)
                   {
                 sec=Read_RT(R_SEC);
                 min=Read_RT(R_MIN);
                 hour=Read_RT(R_HOUR);
                 show_word(0x80,(hour/10+'0'),(hour%10+'0'));
                 show_word(0x90,(min/10+'0'),(min%10+'0'));
                 show_word(0x88,(sec/10+'0'),(sec%10+'0'));
                }

应该没错啊,求指教

相关帖子

沙发
老鱼探戈| | 2011-1-3 13:10 | 只看该作者
时序有问题。
另外告诉LZ:
读出来的数据不是十进制,而是十六进制的

使用特权

评论回复
板凳
nicker88|  楼主 | 2011-1-4 19:25 | 只看该作者
dat=(dat|((PORTF&0x20)?0x80:0x00));是这个有问题,因为读数据要用PIN寄存器,不过还是谢谢了

使用特权

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

本版积分规则

0

主题

98

帖子

1

粉丝