ohne mir jetzt direkt über die "Stell"-Funktion gedanken gemacht zu
haben, pointer wären ne möglichkeit:
1 | int min_stell(void)
|
2 | {
|
3 | int *temp;
|
4 | if (flags.wecker_stellen==1) //wecker wird gestellt
|
5 | {
|
6 | temp=&w_min;
|
7 | }
|
8 | else //uhrzeit...
|
9 | {
|
10 | temp=&min;
|
11 | }
|
12 | _delay_ms(100);
|
13 |
|
14 | if (bit_is_set(PINC,0))
|
15 | {
|
16 | (*temp)++;
|
17 | if (*temp==60)
|
18 | {
|
19 | *temp=0;
|
20 | }
|
21 | }
|
22 | loop_until_bit_is_clear(PINC,0);
|
23 | _delay_ms(100);
|
24 |
|
25 | }
|
Und wo du schon einen Rückgabewert-Datentyp angegeben hast:
1 | int min_stell(int temp)
|
2 | {
|
3 |
|
4 | _delay_ms(100);
|
5 |
|
6 | if (bit_is_set(PINC,0))
|
7 | {
|
8 | temp++;
|
9 | if (temp==60)
|
10 | {
|
11 | temp=0;
|
12 | }
|
13 | }
|
14 | loop_until_bit_is_clear(PINC,0);
|
15 | _delay_ms(100);
|
16 |
|
17 | return temp;
|
18 | }
|
Aber auch ohne Rückgabewert:
1 | void min_stell(int *temp)
|
2 | {
|
3 |
|
4 | _delay_ms(100);
|
5 |
|
6 | if (bit_is_set(PINC,0))
|
7 | {
|
8 | (*temp)++;
|
9 | if (*temp==60)
|
10 | {
|
11 | *temp=0;
|
12 | }
|
13 | }
|
14 | loop_until_bit_is_clear(PINC,0);
|
15 | _delay_ms(100);
|
16 |
|
17 | return;
|
18 | }
|
.. sollte es gehen.
Funktionaufruf einmal mit z.B.:
1 | w_min = min_stell(w_min);
|
oder doch etwas hübscher:
hoffe, das stimmt so ...
mfg
see4far