|
下边是时钟程序,我本来是想着四位数转BCD码,千位除以1000再乘以16,不过那样不对
void DS1302_SetTime()
{
DS1302_WriteByte(DS1302_WP,0x00);
DS1302_WriteByte(Year,DS1302_Time[0]/10*16+DS1302_Time[0]%10);
DS1302_WriteByte(Month,DS1302_Time[1]/10*16+DS1302_Time[1]%10);
DS1302_WriteByte(Date,DS1302_Time[2]/10*16+DS1302_Time[2]%10);
DS1302_WriteByte(Hour,DS1302_Time[3]/10*16+DS1302_Time[3]%10);
DS1302_WriteByte(Minute,DS1302_Time[4]/10*16+DS1302_Time[4]%10);
DS1302_WriteByte(Second,DS1302_Time[5]/10*16+DS1302_Time[5]%10);
DS1302_WriteByte(Day,DS1302_Time[6]/10*16+DS1302_Time[6]%10);
DS1302_WriteByte(DS1302_WP,0x80);
}
void DS1302_ReadTime()
{
unsigned char Temp;
Temp=DS1302_ReadByte(Year);
DS1302_Time[0]=Temp/16*10+Temp%16;
Temp=DS1302_ReadByte(Month);
DS1302_Time[1]=Temp/16*10+Temp%16;
Temp=DS1302_ReadByte(Date);
DS1302_Time[2]=Temp/16*10+Temp%16;
Temp=DS1302_ReadByte(Hour);
DS1302_Time[3]=Temp/16*10+Temp%16;
Temp=DS1302_ReadByte(Minute);
DS1302_Time[4]=Temp/16*10+Temp%16;
Temp=DS1302_ReadByte(Second);
DS1302_Time[5]=Temp/16*10+Temp%16;
Temp=DS1302_ReadByte(Day);
DS1302_Time[6]=Temp/16*10+Temp%16;
}
|
|