补充:(上面说的有点复杂了,解决问题可能主要还是看以下的部分吧)
以下是DS1302的初始化部分:
DS1302_portinit(); //初始化DS1302的三根数据线
DS1302_init(); //启动振荡器,DS1302开始工作
DS1302_setT(settime); //设置初始时间
去掉DS1302_setT(settime)这个函数之后,ShowWave() 也是可以正常运行的~~
以下是DS1302_setT(settime)的程序:
/*******************************************
函数名称: DS1302_setT
功 能: 设置DS1302的时间
参 数: ptTimeD--设置时间数组指针
返回值 : 无
*******************************************/
void DS1302_setT(uchar ptTimeD[])
{
uchar i;
uchar addr = 0x80; //写入地址从秒寄存器开始
DS1302_writeD(C_WP|WR,UPROTECT); //控制命令,WP位为0,允许写操作
delay_ms(6);
for(i=0;i<7;i++)
{
DS1302_writeD(addr|WR,ptTimeD[i]); // 秒 分 时 日 月 星期 年
addr+=2;
delay_ms(2);
}
DS1302_writeD(C_WP|WR,PROTECT); //控制命令,WP位为1,不允许写操作
}
|