unsigned long High_Data;
unsigned int Low_Data;
unsigned long long Elapsed_Milliseconds;
unsigned long Elapsed_Days;
unsigned char Elapsed_Years;
unsigned char Elapsed_Years_Leap;
unsigned int Days_Of_Year;
unsigned char Month, Day, Hour, Minute, Second, Millisecond;
unsigned int Year;
unsigned long Milliseconds_Day;
int main (int argc, char * argv[]){
//125F18457C0
// PIC 8-bits, C18.-
//High_Data=0x012A828F;
//Low_Data=0xFE28;
Elapsed_Milliseconds=0x012A828FFE28;//((unsigned long long)(High_Data*65536)+ Low_Data);
Elapsed_Days=Elapsed_Milliseconds/86400000;
Elapsed_Years=Elapsed_Days/365;
Elapsed_Years_Leap=(Elapsed_Years + 1)/4;
Days_Of_Year=Elapsed_Days -((Elapsed_Years_Leap*366)+(Elapsed_Years-Elapsed_Years_Leap)*365);
Year=1970+Elapsed_Years;
// 31 59 90 120 151 181 212 243 273 304 334 365
if((Year%4)!=0){
if(Days_Of_Year<182){
Month=6;
Day=Days_Of_Year-150;
if(Days_Of_Year<91){
if(Days_Of_Year<32){Month=1;Day=Days_Of_Year+1;}
else if(Days_Of_Year<60){Month=2;Day=Days_Of_Year-30;}
else{Month=3;Day=Days_Of_Year-58;}
}else{
if(Days_Of_Year<121){Month=4;Day=Days_Of_Year-89;}
else if(Days_Of_Year<152){Month=5;Day=Days_Of_Year-119;}
}
}else{
Month=12;
Day=Days_Of_Year-333;
if(Days_Of_Year<274){
if(Days_Of_Year<213){Month=7;Day=Days_Of_Year-180;}
else if(Days_Of_Year<244){Month=8;Day=Days_Of_Year-211;}
else{Month=9;Day=Days_Of_Year-242;}
}else{
if(Days_Of_Year<305){Month=10;Day=Days_Of_Year-272;}
else if(Days_Of_Year<335){Month=11;Day=Days_Of_Year-303;}
}
}
}else{
if(Days_Of_Year<183){
Month=6;
Day=Days_Of_Year-151;
if(Days_Of_Year<92){
if(Days_Of_Year<32){Month=1;Day=Days_Of_Year+1;}
else if(Days_Of_Year<61){Month=2;Day=Days_Of_Year-30;}
else{Month=3;Day=Days_Of_Year-59;}
}else{
if(Days_Of_Year<122){Month=4;Day=Days_Of_Year-90;}
else if(Days_Of_Year<153){Month=5;Day=Days_Of_Year-120;}
}
}else{
Month=12;
Day=Days_Of_Year-334;
if(Days_Of_Year<275){
if(Days_Of_Year<214){Month=7;Day=Days_Of_Year-181;}
else if(Days_Of_Year<245){Month=8;Day=Days_Of_Year-212;}
else{Month=9;Day=Days_Of_Year-243;}
}else{
if(Days_Of_Year<306){Month=10;Day=Days_Of_Year-273;}
else if(Days_Of_Year<336){Month=11;Day=Days_Of_Year-304;}
}
}
}
Milliseconds_Day=Elapsed_Milliseconds - ((unsigned long long)Elapsed_Days*86400000);
Hour=Milliseconds_Day/3600000;
Minute=(Milliseconds_Day/60000)-((unsigned int)Hour*60);
Second=(Milliseconds_Day/1000)-((unsigned int)Minute*60)-((unsigned long)Hour*3600);
Millisecond=Milliseconds_Day-((unsigned int)Second*1000)-((unsigned long)Minute*60000)-((unsigned long)Hour*3600000);
while(1);
}