Sortiere mal die Abfragen abfsteigend nach den Wertebereichen
1 | if(battery_count >= 180)
|
2 | {
|
3 | PORTB |= (1 << PB4);
|
4 | PORTC |= (1 << PC4);
|
5 | PORTB |= (1 << PB3);
|
6 | }
|
7 |
|
8 |
|
9 | if((battery_count >= 165)&&(battery_count <= 180))
|
10 | {
|
11 | PORTB |= (1 << PB4);
|
12 | PORTC |= (1 << PC4);
|
13 | PORTB |= (1 << PB3);
|
14 | }
|
15 |
|
16 | if((battery_count >= 151)&&(battery_count <= 164))
|
17 | {
|
18 | PORTB &= ~(1 << PB4);
|
19 | PORTC &= ~(1 << PC4);
|
20 | PORTB &= ~(1 << PB3);
|
21 | }
|
22 |
|
23 | if((battery_count >= 139)&&(battery_count <= 150))
|
24 | {
|
25 | PORTB |= (1 << PB4);
|
26 | PORTC |= (1 << PC4);
|
27 | PORTB |= (1 << PB3);
|
28 | }
|
29 |
|
30 | if((battery_count >= 125)&&(battery_count <= 138))
|
31 | {
|
32 | PORTB &= ~(1 << PB4);
|
33 | PORTC &= ~(1 << PC4);
|
34 | PORTB &= ~(1 << PB3);
|
35 | }
|
36 |
|
37 |
|
38 | if((battery_count >= 114)&&(battery_count <= 124))
|
39 | {
|
40 | PORTB |= (1 << PB4);
|
41 | PORTC |= (1 << PC4);
|
42 | PORTB |= (1 << PB3);
|
43 | }
|
44 |
|
45 | if((battery_count >= 100)&&(battery_count <= 113))
|
46 | {
|
47 | PORTB &= ~(1 << PB4);
|
48 | PORTC &= ~(1 << PC4);
|
49 | PORTB &= ~(1 << PB3);
|
50 | }
|
51 |
|
52 | if(battery_count <= 100)
|
53 | {
|
54 | PORTB |= (1 << PB4);
|
55 | PORTC |= (1 << PC4);
|
56 | PORTB |= (1 << PB3);
|
57 | }
|
Dadurch kannst du jetzt jeweils die Obergrenze in den Bereichen
unter den Tisch fallen lassen und die einzelnen Abfragen mit jeweils
einem else-if aneinanderhängen
1 | if(battery_count >= 180)
|
2 | {
|
3 | PORTB |= (1 << PB4);
|
4 | PORTC |= (1 << PC4);
|
5 | PORTB |= (1 << PB3);
|
6 | }
|
7 |
|
8 |
|
9 | else if( battery_count >= 165 )
|
10 | {
|
11 | PORTB |= (1 << PB4);
|
12 | PORTC |= (1 << PC4);
|
13 | PORTB |= (1 << PB3);
|
14 | }
|
15 |
|
16 | else if( battery_count >= 151 )
|
17 | {
|
18 | PORTB &= ~(1 << PB4);
|
19 | PORTC &= ~(1 << PC4);
|
20 | PORTB &= ~(1 << PB3);
|
21 | }
|
22 |
|
23 | else if( battery_count >= 139 )
|
24 | {
|
25 | PORTB |= (1 << PB4);
|
26 | PORTC |= (1 << PC4);
|
27 | PORTB |= (1 << PB3);
|
28 | }
|
29 |
|
30 | else if( battery_count >= 125 )
|
31 | {
|
32 | PORTB &= ~(1 << PB4);
|
33 | PORTC &= ~(1 << PC4);
|
34 | PORTB &= ~(1 << PB3);
|
35 | }
|
36 |
|
37 |
|
38 | else if( battery_count >= 114 )
|
39 | {
|
40 | PORTB |= (1 << PB4);
|
41 | PORTC |= (1 << PC4);
|
42 | PORTB |= (1 << PB3);
|
43 | }
|
44 |
|
45 | else if( battery_count >= 100 )
|
46 | {
|
47 | PORTB &= ~(1 << PB4);
|
48 | PORTC &= ~(1 << PC4);
|
49 | PORTB &= ~(1 << PB3);
|
50 | }
|
51 |
|
52 | else
|
53 | {
|
54 | PORTB |= (1 << PB4);
|
55 | PORTC |= (1 << PC4);
|
56 | PORTB |= (1 << PB3);
|
57 | }
|
Jetzt sieht man auch, dass der Fall 'zwischen 165 und 180'
identisch ist zum Fall 'größer 180'. Hier kann also die
Fallunterscheidung raus. Dazu dann noch die beiden bereits
vorgeschlagenen Hilfsfunktionen
1 | if( battery_count >= 165 )
|
2 | PortOn();
|
3 |
|
4 | else if( battery_count >= 151 )
|
5 | PortOff();
|
6 |
|
7 | else if( battery_count >= 139 )
|
8 | PortOn();
|
9 |
|
10 | else if( battery_count >= 125 )
|
11 | PortOff();
|
12 |
|
13 | else if( battery_count >= 114 )
|
14 | PortOn();
|
15 |
|
16 | else if( battery_count >= 100 )
|
17 | PortOff();
|
18 |
|
19 | else
|
20 | PortOn();
|