//ROM定义
(rom)const unsigned char time_read_list[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x0c};//读秒分时日月周年地址
(rom)const unsigned char time_write_list[]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};};//写秒分时日月周年地址
(rom)const unsigned char time_limits[]={59,59,23,31,12,7,99};//最大值限制
//RAM定义
unsigned char time_buf;
unsigned char choose_byte;
/************************************
时间选择子程序
input:
output:
************************************/
void ds1302_change(void)
{
if(choose_byte<6)
{
choose_byte++;
}
else
{
choose_byte=0;
}
}
/************************************
时间更改加子程序
input:
output:
************************************/
void ds1302_add(void)
{
time_buf=read_ds1302(*(time_read_list+choose_byte));//读取要更改的时间
time_buf=(((time_buf>>4)*10)+(time_buf&0x0f));
if(time_buf<*(time_limits+choose_byte))
{
time_buf++;
}
else
{
time_buf=0;
}
time_buf=((time_buf/10)<<4)|(time_buf&10));
write_ds1302(*(time_write_list+choose_byte),time_buf);
}
减同理,更新显示与标志哪个数据要改相信你会驱动应该会了,我就pass了。
(ps)百度打程序TAB键不好用啊,空格狂按。手工直接网页码字,没调试过,不能过告诉我或者自己改,望满意。
你得先去理解下12864的显示原理,如果你想修改时间,日期等就先按下功能键,然后进入暂停模式即功能键按下就如中断,再来对时间定为修改,修改完后可以再次按下功能键中断返回,进行正常的显示。
以前用1602写过一个,网上程序都很成熟了,可以通过外部中断进入修改模式。
同志,还是需要了解12864呀!