Was die Symbole statusbyte, RC5_INP und RC5_PIN bedeuten, ist wohl dein
Geheimnis, also kann man nur raten. Ich habe versucht, die fehlende
Information aus dem generierten Assemblercode zu rekonstruieren.
Wenn ich damit richtig liege, tut folgender C-Code dasselbe:
1 | uint8_t rc5inp = RC5_INP;
|
2 | if(statusbyte.rc5_bit)
|
3 | rc5inp = ~rc5inp;
|
4 | if(rc5inp & RC5_PIN) {
|
5 | ...
|
6 | }
|
GCC 6.2.0 macht daraus
1 | in r24,0x13
|
2 | sbic 0x10,4
|
3 | com r24
|
4 | sbrs r24,2
|
5 | rjmp ...
|
was IMHO nicht weiter optimiert werden kann.
Übrigens:
Statt
kann man auch schreiben