高级会员
主题
回帖0
积分1588
阅读权限30
注册时间2011-3-22
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2011-12-17 23:47
|
显示全部楼层
感谢您提供的思路,这个程序是论坛的抄板翻页钟程序。本人水平有限,主要看不懂函数之间的调用关系以及与底层函数之间的关系,
还有函数括号里参数的含义。比如:
DS1302_GetTime(SYSTEMTIME *Time);
这个 SYSTEMTIME *Time
...
DS1302_SetTime(DS1302_MONTH,(CurrentTime.Month));
这个 (DS1302_MONTH,(CurrentTime.Month));
void DS1302_SetTime(unsigned char Address, unsigned char Value) // 设置时间函数,Value为10 进制.
{
DS1302_SetProtect(0);
Write1302(Address, ((Value/10)<<4 | (Value%10)));
}
void DS1302_GetTime(SYSTEMTIME *Time)
{
unsigned char ReadValue;
ReadValue = Read1302(DS1302_SECOND);
Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
if(Time->Second==0) //当秒为零时才读取 分和小时
{
ReadValue = Read1302(DS1302_MINUTE);
Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
if(Time->Minute==0) //当分为0时,才读取小时数据
{
ReadValue = Read1302(DS1302_HOUR);
Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
}
}
if( (Time->Second==0)&(Time->Minute==0)&(Time->Hour==0) )//当秒、分、时都为零时读取DS1302数据 日、月、年、星期
{
ReadValue = Read1302(DS1302_DAY);
Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_WEEK);
Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_MONTH);
Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_YEAR);
Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
}
}
请指教。 |
|