Ejemplo n.º 1
0
void InitClock(void)
{
	uint8_t	tmp;
	uint8_t flag;

	flag=Read1302(0x81);
	if(flag&0x80)
	{      //判断时钟芯片是否关闭
	  Write1302(0x8E,0x00);                 //根据写状态寄存器命令字,写入不保护指令 
   	Write1302(0x80,((51/10)<<4|(51%10)));   //根据写秒寄存器命令字,写入秒的初始值
	Write1302(0x82,((2/10)<<4|(2%10)));   //根据写分寄存器命令字,写入分的初始值
	Write1302(0x84,((12/10)<<4|(12%10))); //根据写小时寄存器命令字,写入小时的初始值
	Write1302(0x86,((27/10)<<4|(27%10))); //根据写日寄存器命令字,写入日的初始值
	Write1302(0x88,((7/10)<<4|(7%10))); //根据写月寄存器命令字,写入月的初始值
	Write1302(0x8c,((15/10)<<4|(15%10)));  //根据写年寄存器命令字,写入年的初始值
	Write1302(0x8E,0x80);			   //根据写状态寄存器命令字,写入保护指令
  }
	
	
	tmp = ReadDS1302Ram(0);
	if(tmp^0xa5)
	{
		WriteDS1302Ram(0,0xa5);
		Write1302(DS1302_WRITE,0x00);		//关闭写保护
		Write1302(0x90,0x03);				//禁止涓流充电
		Write1302(DS1302_HOUR,0x00);		//设置成24小时制
		Write1302(DS1302_SECOND,0x00);		//使能时钟运行
		
		
		Write1302(DS1302_WRITE,0x80);		//打开写保护
	}
}
Ejemplo n.º 2
0
void ReadDSRam(uint8_t *p,uint8_t add,uint8_t cnt)
{
	uint8_t i;
	
	if(cnt>30) return;
	for(i=0;i<cnt;i++)
	{
		*p = ReadDS1302Ram(add+1+i);
		p++;
	}
}
void ReadDSRam(u8 *p,u8 add,u8 cnt)
{
	u8 i;
	
	if(cnt>30) return;
	for(i=0;i<cnt;i++)
	{
		*p = ReadDS1302Ram(add+1+i);
		p++;
	}
}
void InitClock(void)
{
	u8	tmp = 0;

	DS1302_Configuration();
	tmp = ReadDS1302Ram(0);
	
	if(tmp != 0x25)
	{
		WriteDS1302Ram(0,0x25);
		Write1302(DS1302_WRITE,0x00);		//关闭写保护
		Write1302(0x90,0x03);				//禁止涓流充电
		Write1302(DS1302_HOUR,0x00);		//设置成24小时制
		Write1302(DS1302_SECOND,0x00);		//使能时钟运行		
		Write1302(DS1302_WRITE,0x80);		//打开写保护
		WriteDS1302ClockASCII("20160115023500");
	}
		//WriteDS1302ClockASCII("20140116084000");
}