死都做不出来的万年历

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条回答
依然落叶飘零
1楼-- · 2019-07-17 04:36
 精彩回答 2  元偷偷看……
柿子红了啊
2楼-- · 2019-07-17 05:51
看看大神的淳淳教诲,温柔不失严谨,冷静不失耐心。整个一个高大上!!!
shujie2014
3楼-- · 2019-07-17 08:40
依然落叶飘零 发表于 2014-4-20 17:00
用万用表检查一下有没短路,电源正确不。实在不行就换一个DS1302试试。

对啦,大神。今天我用PROTUES仿真软件把你的程序烧进去看,发现你的程序仿真也实现不了列~~这是什么原因列?弱弱的问一句,你试了程序真的可以吗?
shujie2014
4楼-- · 2019-07-17 11:26
柿子红了啊 发表于 2014-4-20 19:08
看看大神的淳淳教诲,温柔不失严谨,冷静不失耐心。整个一个高大上!!! ...

就是就是~大神就是好人~~
依然落叶飘零
5楼-- · 2019-07-17 14:20
shujie2014 发表于 2014-4-20 20:42
对啦,大神。今天我用PROTUES仿真软件把你的程序烧进去看,发现你的程序仿真也实现不了列~~这是什么原因 ...

发你的protues工程给我看看。
shujie2014
6楼-- · 2019-07-17 19:34
 精彩回答 2  元偷偷看……

一周热门 更多>