|
楼主 |
发表于 2014-12-8 22:26:23
|
显示全部楼层
电波授时是接收无线电波信号,只要离信号发射塔不是太远的话都没问题,GPS授时比较有局限性,必须在室外,接收卫星信号,软件校时比较简单,源代码里加几句就行,每天固定的时间根据需要加减几秒,保存进1302。
void BiasAmend() //时间修正函数
{
hhh = (read_clock(0x85)/16)*10+read_clock(0x85)%16; //读取1302小时
mmm = (read_clock(0x83)/16)*10+read_clock(0x83)%16; //读取1302分钟
sss = (read_clock(0x81)/16)*10+read_clock(0x81)%16; //读取1302秒
timp0= 30+((fwc/16)*10+fwc%16); //调整菜单里需要增加的秒数
timp= 30-((fwc/16)*10+fwc%16); //调整菜单里需要减少的秒数
if((hhh==0)&&(mmm==1)&&(sss==0)){CKTIME_1=0;} //如果时间等于00:01:00,校时标志清零
if((hhh==0)&&(mmm==0)&&(sss==30)&&CKTIME_1==0) //如果时间等于00:00:30,开始校时
{
if( zwc==0) //如果加减标志为0,加调整
{
write_clock(0x8e,0x00); //允许写操作
write_clock(0x80,(timp0/10)*16+timp0%10); //对1302里秒进行调整。
write_clock(0x8e,0x80); //禁止写操作
CKTIME_1=1; //保证只调整一次
}
if( zwc==1) // 如果加减标志为1减调整
{
write_clock(0x8e,0x00); //允许写操作
write_clock(0x80,(timp/10)*16+timp%10); //对1302里秒进行调整
write_clock(0x8e,0x80); //禁止写操作
CKTIME_1=1; //保证只调整一次
}
}
}
|
|