Hiho ich habe nun meine DCF Uhr am laufen, momentan berechne ich meine Zeit so:
1 | volatile int dcf_Stunde; |
2 | ....
|
3 | |
4 | ....
|
5 | void dcf_calc(void) |
6 | {
|
7 | // Calc Stunde
|
8 | dcf_Stunde = 0; |
9 | if(dcf_bitmask[29] == 1) dcf_Stunde = dcf_Stunde + 1; |
10 | if(dcf_bitmask[30] == 1) dcf_Stunde = dcf_Stunde + 2; |
11 | if(dcf_bitmask[31] == 1) dcf_Stunde = dcf_Stunde + 4; |
12 | if(dcf_bitmask[32] == 1) dcf_Stunde = dcf_Stunde + 8; |
13 | if(dcf_bitmask[33] == 1) dcf_Stunde = dcf_Stunde + 10; |
14 | if(dcf_bitmask[34] == 1) dcf_Stunde = dcf_Stunde + 20; |
15 | |
16 | // Calc Minuten
|
17 | dcf_Minuten = 0; |
18 | if(dcf_bitmask[21] == 1) dcf_Minuten = dcf_minuten + 1; |
19 | if(dcf_bitmask[22] == 1) dcf_Minuten = dcf_minuten + 2; |
20 | if(dcf_bitmask[23] == 1) dcf_Minuten = dcf_minuten + 4; |
21 | if(dcf_bitmask[24] == 1) dcf_Minuten = dcf_minuten + 8; |
22 | if(dcf_bitmask[25] == 1) dcf_Minuten = dcf_minuten + 10; |
23 | if(dcf_bitmask[26] == 1) dcf_Minuten = dcf_minuten + 20; |
24 | if(dcf_bitmask[27] == 1) dcf_Minuten = dcf_minuten + 40; |
25 | |
26 | // Calc Datum Tag
|
27 | dcf_Tag = 0; |
28 | if(dcf_bitmask[36] == 1) dcf_Tag = dcf_Tag + 1; |
29 | if(dcf_bitmask[37] == 1) dcf_Tag = dcf_Tag + 2; |
30 | if(dcf_bitmask[38] == 1) dcf_Tag = dcf_Tag + 4; |
31 | if(dcf_bitmask[39] == 1) dcf_Tag = dcf_Tag + 8; |
32 | if(dcf_bitmask[40] == 1) dcf_Tag = dcf_Tag + 10; |
33 | if(dcf_bitmask[41] == 1) dcf_Tag = dcf_Tag + 20; |
34 | |
35 | // Calc Datum Monat
|
36 | dcf_Monat = 0; |
37 | if(dcf_bitmask[45] == 1) dcf_Monat = dcf_Monat + 1; |
38 | if(dcf_bitmask[46] == 1) dcf_Monat = dcf_Monat + 2; |
39 | if(dcf_bitmask[47] == 1) dcf_Monat = dcf_Monat + 4; |
40 | if(dcf_bitmask[48] == 1) dcf_Monat = dcf_Monat + 8; |
41 | if(dcf_bitmask[49] == 1) dcf_Monat = dcf_Monat + 10; |
42 | |
43 | // Calc Datum Jahr
|
44 | dcf_Jahr = 0; |
45 | if(dcf_bitmask[50] == 1) dcf_Jahr = dcf_Jahr + 1; |
46 | if(dcf_bitmask[51] == 1) dcf_Jahr = dcf_Jahr + 2; |
47 | if(dcf_bitmask[52] == 1) dcf_Jahr = dcf_Jahr + 4; |
48 | if(dcf_bitmask[53] == 1) dcf_Jahr = dcf_Jahr + 8; |
49 | if(dcf_bitmask[54] == 1) dcf_Jahr = dcf_Jahr + 10; |
50 | if(dcf_bitmask[55] == 1) dcf_Jahr = dcf_Jahr + 20; |
51 | if(dcf_bitmask[56] == 1) dcf_Jahr = dcf_Jahr + 40; |
52 | if(dcf_bitmask[57] == 1) dcf_Jahr = dcf_Jahr + 80; |
53 | }
|
Das scheint mir jedoch sehr umständlich zu sein, gibt es da eine bessere Möglichkeit?