首先谢谢版主耐心的指导,关于DS1302,新的问题出现了。

2019-03-24 17:46发布

对于1302的秒寄存器的读取和显示已经实现了。
但新的问题出现了,当秒为奇数时,显示正常,当秒为偶数时就会闪烁。
有没有人知道是哪里的问题呢?

/*****1302写入一字节*****/
void writebyte(u8 dat)
{
u8 i;
for(i=0;i<8;i++)
{
  IO=dat&0x01;
  delay(1);
  SCLK=1;
  delay(1);
  SCLK=0;
  dat>>=1;
}
}
/*****1302读出一字节*****/
u8 readbyte()
{
u8 i,dat;
for(i=0;i<8;i++)
{
  dat>>=1;
  if(IO==1)
  dat|=0x80;
  SCLK=1;
  delay(1);
  SCLK=0;
  delay(1);
}
return dat;
}
/*****读1302数据*****/
u8 read(u8 num)
{
u8 dat,i;
for(i=0;i<1;i++)
{
  CE=0;
  SCLK=0;
  CE=1;
  writebyte(num);
  dat=readbyte();
  CE=0;
  delay(1);
}
return dat;
}
/*****定义BCD转换*****/
u8 BCD(u8 num)
{
u8 dat;
dat=read(num);
delay(1);
dat=dat&0x0f;
delay(1);
return dat;
}
/*****主函数*****/
void main()
{
P1=0;
while(1)
{
  P2=0x00;
  P1=table[BCD(0x81)];
  delay(100);
}
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。