死都做不出来的万年历

2019-07-15 20:07发布

郁闷了,做了一个月连和万年历都做不出来!好烦躁。现在把程序烧进自己制作的板子的单片机里,LCD显示时间部分有问号出现,我用的是DS1302的时钟芯片。要死了,不知道该怎么调试啊~~现在就是不能确定是程序问题还是板子问题。各位大神知道该怎么调试吗?附上时钟芯片的部分程序,各位看下有不有错~~求助。
sbit bit7=ACC^7;
sbit bit0=ACC^0;
sbit rst=P1^5;
sbit sclk=P1^6;
//sbit rst=P1^6;
//sbit sclk=P1^5;
sbit IO=P1^7;
void input(uchar);
uchar output(void);
void wr1302(uchar, uchar);
uchar re1302(uchar);
void set1302(uchar *p);
void get1302(uchar curtime[]);
uchar time[7];
void input(uchar date)
{
uchar i;
rst=1;
ACC=date;
for(i=8;i>0;i--)
{
IO=bit0;
sclk=0;
sclk=1;
ACC=ACC>>=1;
}
}
uchar output(void)
{
uchar i;
rst=1;
for(i=8;i>0;i--)
{
ACC=ACC>>=1;
IO=1;
sclk=1;
sclk=0;
bit7=IO;
}
return(ACC);
}
void wr1302(uchar add, uchar date)
{
rst=0;
sclk=0;
rst=1;
input(add);
input(date);
sclk=1;
rst=0;
}
uchar re1302(uchar add)
{
uchar date;
rst=0;
sclk=0;
rst=1;
input(add);
date=output();
sclk=1;
rst=0;
return(date);
}
void set1302(uchar *p)
{
uchar i;
uchar add=0x80;
wr1302(0x8e,0x00);
for(i=7;i>0;i--)
{
wr1302(add,*p);
p++;
add+=2;
}
wr1302(0x8e,0x00);
}
void get1302(uchar curtime[])
{
uchar i;
uchar add=0x81;
for(i=0;i<7;i++)
{
curtime[i]=re1302(add);
add+=2;
}
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
依然落叶飘零
2019-07-17 03:02
shujie2014 发表于 2014-4-19 22:11
消息不能添加附件,还是在这里发给你吧~~原谅我写的程序,再难看懂你也帮我看看哈~~万分感谢 ...

你程序的可读性真不是一般的差,看到我头都晕了。我排版了一下,管脚有修改,你改回来。亲测能正常显示时间和温度。如果还不能显示你就检查一下硬件。发修改过的程序给你。另外附一份我自己写的程序供你参考一下。引脚引脚定义不一样。写程序的时候注意一下格式啊。我看到都头晕了都不知你怎么受到了。

修改 (3).rar 下载积分: 积分 -1 分

72.73 KB, 下载次数: 27, 下载积分: 积分 -1 分

DS1302 LCD.rar 下载积分: 积分 -1 分

57.93 KB, 下载次数: 28, 下载积分: 积分 -1 分

一周热门 更多>