1、存储和读取的时间的内容应为BCD码。write_1302(0x8c,0x11);maioh=(miao&0x7f)>>4;……
2、建议上电后,ce=0;clk=0;延时一会儿再操作1302。或者多写两次撤销写保护命令。
write_1302(0x8e,0x10);笔误,应该是 write_1302(0x8e,0x80);
3、建议读写1302的clk速率降低,如datasheet,2MHz最大。
4、建议首次改写时间时,将秒值最高位置为1,时间设置完毕后,清秒值最高位。
5、建议,刷新LCD速率在100mS~500mS。没有必要不停地读1302,写1602。
6、检查硬件连接,及起振晶体。或更换一片1302再看看。
最后调试成功,请告知原因。谢谢!
void write_8bit(uchar ds)//写入8位数据
{
uchar i;
ACC=ds;
for(i=0;i<8;i++) 应改为for(i=8;i>0;i--)
s);
Write_Ds1302_Byte(dat);
这两个函数是网DS1302中写地址和数据的,根据DS1302的时序,可以看明白顺序。