|
char l_tmpdate[3]={0,9,12};
char l_tmpdisplay[8];
void Write_Ds1302( unsigned char address,unsigned char dat )
{
RST=0;
_nop_();
SCK=0;
_nop_();
RST=1;
_nop_(); //启动
Write_Ds1302_Byte(address); //发送地址
Write_Ds1302_Byte(dat); //发送数据
RST=0; //恢复
}
void amin()
{
l_tmpdate[1]=((l_tmpdate[1]+1)/16)*10 + ((l_tmpdate[1]+1)%16); //分加1
if(l_tmpdate[1]>59) l_tmpdate[1]=0; //判断
l_tmpdate[1]=l_tmpdate[1]%10+l_tmpdate[1]/10*16; //转十六进制
Write_Ds1302(0x8E,0X00); //开写保护
Write_Ds1302(0x82,l_tmpdate[1]); //写分寄存器
Write_Ds1302(0x8E,0x80); //关写保护
}
void bmin()
{
l_tmpdate[1]=((l_tmpdate[1]-1)/16)*10 + ((l_tmpdate[1]-1)%16); //分减1
if(l_tmpdate[1]<0) l_tmpdate[1]=59; //判断
l_tmpdate[1]=l_tmpdate[1]%10+l_tmpdate[1]/10*16; //转十六进制
Write_Ds1302(0x8E,0X00); //开写保护
Write_Ds1302(0x82,l_tmpdate[1]); //写分寄存器
Write_Ds1302(0x8E,0x80); //关写保护
}
上面是我的相关代码,按键控制,加时间正常显示,减少时,时间从我8减少到0正常,随后变跳到5,在0-5范围内循环
|
|