hallo,
ich versuche folgendes programm auf einem atmega8 zum laufen zubekommen
1 | //alle variablen sind unsigned long (aus verzweifelung :P)
|
2 |
|
3 | jahr=1970;
|
4 | monat=2;
|
5 | tag=2;
|
6 | stunde=0;
|
7 | minute=0;
|
8 | sekunde=0;
|
9 |
|
10 | for(int j=1970;j<jahr;j++)
|
11 | {
|
12 | if(j%4==0 && j%100!=0 || j%400==0) {unix_sekunden+=(366*24*60*60);}
|
13 | else {unix_sekunden+=(365*24*60*60);}
|
14 | }
|
15 |
|
16 | for(int j=1;j<monat;j++)
|
17 | {
|
18 | if(j==1 || j==3 || j==5 || j==7 || j==8 || j==10 || j==12) {unix_sekunden+=(31*24*60*60);}
|
19 | if(j==4 || j==6 || j==9 || j==11) {unix_sekunden+=(30*24*60*60);}
|
20 | if(j==2) {if(j%4==0 && j%100!=0 || j%400==0){unix_sekunden+=(29*24*60*60);} else {unix_sekunden+=(28*24*60*60);}}
|
21 | }
|
22 |
|
23 | unix_sekunden+=((tag-1)*24*60*60);
|
24 | unix_sekunden+=(stunde*60*60)-3600;
|
25 | unix_sekunden+=minute*60;
|
26 | unix_sekunden+=sekunde;
|
vorweg: das programm ist richtig und läuft! nur tut es das nicht auf dem
µC :/
ich vermute das es irgendwas mit den 32ig bitigen long variablen zutun
hat, da die niederwertigsten 4byte richtig dargestellt werden... die
anderen 4sind meistens null bzw das 4te zeigt manchmal etwas an(aber
falsch)
gruß