?? time.c
字號:
void ContinueComm(void);
void Centercomm(void);
uint GetPoint(uint spacetemp,uint SumPoint,uint OldPoint,struct TIME_ITEM_D *OldTim,struct TIME_ITEM_D *NowTime);
uint GetPointAppl(uint spacetemp,uint SumPoint,uint OldPoint,struct TIME_ITEM_D *OldTim,struct TIME_ITEM_D *NowTime);
void GetPointNextTime(ulong PointNextNum,uint spacetemp,uchar OldYear
,uchar OldMonth,uchar OldDay,uchar OldHour,uchar OldMinute);
void FmuReupdataHead(void);
/******************************
** 功能:處理連續讀數據命令 **
** 入口:無 **
** 出口:無 **
******************************/
uint GetDayInYear(uchar DYear,uchar DMonth,uchar DDay)
{
uintx day;
ucharx year,year_rday;
FmuPublic_Watchdog();
day=(uint)BCD_HEX(DDay);
year=BCD_HEX(DYear);
if(year%4==0)
year_rday=1;
else year_rday=0;
if(DMonth==1)
return(day);
else if(DMonth==2)
day=day+31;
else if(DMonth==3)
day=day+59+year_rday;
else if(DMonth==4)
day=day+90+year_rday;
else if(DMonth==5)
day=day+120+year_rday;
else if(DMonth==6)
day=day+151+year_rday;
else if(DMonth==7)
day=day+181+year_rday;
else if(DMonth==8)
day=day+212+year_rday;
else if(DMonth==9)
day=day+243+year_rday;
else if(DMonth==0x10)
day=day+273+year_rday;
else if(DMonth==0x11)
day=day+304+year_rday;
else if(DMonth==0x12)
day=day+334+year_rday;
else day=1;
return(day);
}
uint GetPointAppl(uint spacetemp,uint SumPoint,uint OldPoint,struct TIME_ITEM_D *OldTime,struct TIME_ITEM_D *NowTime)
{
//ucharx spacetemp;
uintx itemp,oldtemp,nowtemp;
ulongx ltemp,ltemp1;
uintx point;
FmuPublic_Watchdog();
oldtemp=BCD_HEX((*OldTime).Year);
nowtemp=BCD_HEX((*NowTime).Year);
if((*NowTime).Year<(*OldTime).Year)
{
if((oldtemp-nowtemp)>1)
return(0);
if((nowtemp%4)==0)
itemp=366;
else itemp=365;
oldtemp=GetDayInYear((*OldTime).Year,(*OldTime).Month,(*OldTime).Day)+itemp;
nowtemp=GetDayInYear((*NowTime).Year,(*NowTime).Month,(*NowTime).Day);
}
else if((*NowTime).Year>(*OldTime).Year)
{
if((nowtemp-oldtemp)>1)
return(0);
if((oldtemp%4)==0)
itemp=366;
else itemp=365;
oldtemp=GetDayInYear((*OldTime).Year,(*OldTime).Month,(*OldTime).Day);
nowtemp=GetDayInYear((*NowTime).Year,(*NowTime).Month,(*NowTime).Day)+itemp;
}
else
{
oldtemp=GetDayInYear((*OldTime).Year,(*OldTime).Month,(*OldTime).Day);
nowtemp=GetDayInYear((*NowTime).Year,(*NowTime).Month,(*NowTime).Day);
}
if(oldtemp>nowtemp) //向下一時間查找
{
FmuPublic_Watchdog();
ltemp=(ulong)(oldtemp-nowtemp)*1440;
oldtemp=(uint)(BCD_HEX((*OldTime).Minute))+(uint)(BCD_HEX((*OldTime).Hour))*60;
nowtemp=(uint)(BCD_HEX((*NowTime).Minute))+(uint)(BCD_HEX((*NowTime).Hour))*60;
FmuPublic_Watchdog();
ltemp1=(ulong)(ltemp+oldtemp-nowtemp);
ltemp1=(ulong)(ltemp1/spacetemp);
FmuPublic_Watchdog();
//if(ltemp1>=SumPoint)
// return(OUTPOINT);
PointPreOrNext=POINTPRE;
PointCircleNum=(uchar)(ltemp1/SumPoint);
ltemp1=ltemp1%SumPoint;
point=(uint)ltemp1;
if(OldPoint<point)
{
PointCircleNum++;
point=SumPoint+OldPoint-point;
}
else
point=OldPoint-point;
}
else if(oldtemp<nowtemp) //往上一時間查找
{
FmuPublic_Watchdog();
ltemp=(ulong)(nowtemp-oldtemp)*1440;
oldtemp=(uint)(BCD_HEX((*OldTime).Minute))+(uint)(BCD_HEX((*OldTime).Hour))*60;
nowtemp=(uint)(BCD_HEX((*NowTime).Minute))+(uint)(BCD_HEX((*NowTime).Hour))*60;
FmuPublic_Watchdog();
ltemp=(ulong)(ltemp+nowtemp-oldtemp);
ltemp1=(ulong)(ltemp/spacetemp);
//if((ltemp%spacetemp)!=0)
// ltemp1++;
FmuPublic_Watchdog();
PointCircleNum=(uchar)(ltemp1/SumPoint);
ltemp1=ltemp1%SumPoint;
point=(uint)ltemp1+OldPoint;
PointPreOrNext=POINTNEXT;
//if(ltemp1>=SumPoint)
// return(OUTPOINT);
if(point>=SumPoint)
{
PointCircleNum++;
point-=SumPoint;
}
}
else
{
oldtemp=(uint)(BCD_HEX((*OldTime).Minute))+(uint)(BCD_HEX((*OldTime).Hour))*60;
nowtemp=(uint)(BCD_HEX((*NowTime).Minute))+(uint)(BCD_HEX((*NowTime).Hour))*60;
FmuPublic_Watchdog();
if(oldtemp<nowtemp)
{
itemp=(nowtemp-oldtemp)/spacetemp;
//if(((nowtemp-oldtemp)%spacetemp)!=0)
// itemp++;
FmuPublic_Watchdog();
point=itemp+OldPoint;
PointPreOrNext=POINTNEXT;
PointCircleNum=0;
if(point>=SumPoint)
{
PointCircleNum++;
point-=SumPoint;
}
}
else if(oldtemp>nowtemp)
{
point=(oldtemp-nowtemp)/spacetemp;
//if((nowtemp-oldtemp)%spacetemp)!=0)
//{
// if(point==0)
// point=SumPoint-1;
// else point--;
//}
FmuPublic_Watchdog();
PointPreOrNext=POINTPRE;
PointCircleNum=0;
if(OldPoint<point)
{
PointCircleNum++;
point=SumPoint+OldPoint-point;
}
else
point=OldPoint-point;
}
else
{
PointPreOrNext=POINTPRE;
PointCircleNum=0;
return(OldPoint);
}
}
return(point);
}
uint GetPoint(uint spacetemp,uint SumPoint,uint OldPoint,struct TIME_ITEM_D *OldTime,struct TIME_ITEM_D *NowTime)
{
//ucharx spacetemp;
uintx itemp,oldtemp,nowtemp;
ulongx ltemp,ltemp1;
uintx point;
FmuPublic_Watchdog();
oldtemp=BCD_HEX((*OldTime).Year);
nowtemp=BCD_HEX((*NowTime).Year);
if((*NowTime).Year<(*OldTime).Year)
{
if((oldtemp-nowtemp)>1)
return(0);
if((nowtemp%4)==0)
itemp=366;
else itemp=365;
oldtemp=GetDayInYear((*OldTime).Year,(*OldTime).Month,(*OldTime).Day)+itemp;
nowtemp=GetDayInYear((*NowTime).Year,(*NowTime).Month,(*NowTime).Day);
}
else if((*NowTime).Year>(*OldTime).Year)
{
if((nowtemp-oldtemp)>1)
return(0);
if((oldtemp%4)==0)
itemp=366;
else itemp=365;
oldtemp=GetDayInYear((*OldTime).Year,(*OldTime).Month,(*OldTime).Day);
nowtemp=GetDayInYear((*NowTime).Year,(*NowTime).Month,(*NowTime).Day)+itemp;
}
else
{
oldtemp=GetDayInYear((*OldTime).Year,(*OldTime).Month,(*OldTime).Day);
nowtemp=GetDayInYear((*NowTime).Year,(*NowTime).Month,(*NowTime).Day);
}
if(oldtemp>nowtemp) //向下一時間查找
{
FmuPublic_Watchdog();
ltemp=(ulong)(oldtemp-nowtemp)*1440;
oldtemp=(uint)(BCD_HEX((*OldTime).Minute))+(uint)(BCD_HEX((*OldTime).Hour))*60;
nowtemp=(uint)(BCD_HEX((*NowTime).Minute))+(uint)(BCD_HEX((*NowTime).Hour))*60;
FmuPublic_Watchdog();
ltemp1=(ulong)(ltemp+oldtemp-nowtemp);
ltemp1=(ulong)(ltemp1/spacetemp);
FmuPublic_Watchdog();
//if(ltemp1>=SumPoint)
// return(OUTPOINT);
PointPreOrNext=POINTPRE;
PointCircleNum=(uchar)(ltemp1/SumPoint);
ltemp1=ltemp1%SumPoint;
point=(uint)ltemp1;
if(OldPoint<point)
{
PointCircleNum++;
point=SumPoint+OldPoint-point;
}
else
point=OldPoint-point;
}
else if(oldtemp<nowtemp) //往上一時間查找
{
FmuPublic_Watchdog();
ltemp=(ulong)(nowtemp-oldtemp)*1440;
oldtemp=(uint)(BCD_HEX((*OldTime).Minute))+(uint)(BCD_HEX((*OldTime).Hour))*60;
nowtemp=(uint)(BCD_HEX((*NowTime).Minute))+(uint)(BCD_HEX((*NowTime).Hour))*60;
FmuPublic_Watchdog();
ltemp=(ulong)(ltemp+nowtemp-oldtemp);
ltemp1=(ulong)(ltemp/spacetemp);
if((ltemp%spacetemp)!=0)
ltemp1++;
FmuPublic_Watchdog();
PointCircleNum=(uchar)(ltemp1/SumPoint);
ltemp1=ltemp1%SumPoint;
point=(uint)ltemp1+OldPoint;
PointPreOrNext=POINTNEXT;
//if(ltemp1>=SumPoint)
// return(OUTPOINT);
if(point>=SumPoint)
{
PointCircleNum++;
point-=SumPoint;
}
}
else
{
oldtemp=(uint)(BCD_HEX((*OldTime).Minute))+(uint)(BCD_HEX((*OldTime).Hour))*60;
nowtemp=(uint)(BCD_HEX((*NowTime).Minute))+(uint)(BCD_HEX((*NowTime).Hour))*60;
FmuPublic_Watchdog();
if(oldtemp<nowtemp)
{
itemp=(nowtemp-oldtemp)/spacetemp;
if(((nowtemp-oldtemp)%spacetemp)!=0)
itemp++;
FmuPublic_Watchdog();
point=itemp+OldPoint;
PointPreOrNext=POINTNEXT;
PointCircleNum=0;
if(point>=SumPoint)
{
PointCircleNum++;
point-=SumPoint;
}
}
else if(oldtemp>nowtemp)
{
point=(oldtemp-nowtemp)/spacetemp;
//if((nowtemp-oldtemp)%spacetemp)!=0)
//{
// if(point==0)
// point=SumPoint-1;
// else point--;
//}
FmuPublic_Watchdog();
PointPreOrNext=POINTPRE;
PointCircleNum=0;
if(OldPoint<point)
{
PointCircleNum++;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -