micha schrieb:
1 | > uint8_t Ergebnis = 0x00 + 0x00; // Rechnen
|
2 | >
|
3 | > if (SREG & 0x02) // wenn Zero-Flag gesetzt dann ...
|
4 | > {
|
5 | > PORTC &= ~(1 << PC5); // LED an
|
6 | > }
|
Das kannst du in C so nicht machen!
Entweder du verwendest Assembler, oder schreibt sinnvolles C:
1 | uint8_t Ergebnis = 0x00 + 0x00; // Rechnen
|
2 |
|
3 | if (Ergebnis == 0) // wenn Zero-Flag gesetzt dann ...
|
4 | {
|
5 | PORTC &= ~(1 << PC5); // LED an
|
6 | }
|
Das + muss nicht berechnet werden, weil das Ergenis immer 0 ist und der
Compiler zB ein CLR Rn,0 oder ein LDI Rn,0 verwendn kann oder ein
anderes Register per MOV, von dem er schon weiß, das da eine 0 drinne
ist.
Ein paar Anmerkungen gibt's in [[Compilerfehler#Die häufigsten
Nicht-Fehler]].