Gast
#2865804
Hallo.
Bin gerade dabei einen ASM-Code nach WinGCC zu portieren.
Der ATMega hat die Pin-Toggle-Funktion für Ausgänge.
Hab jetzt ein Verständnisproblem:
PINE = (1<<PINE3); Funktioniert
PINE |= (1<<PINE3); Funktioniert nicht
Wenn ich mir den Disassembler-Code ansehe, ist mir klar, dass
der Compiler bei
Variante 1: SBI PINE... übersetzt
und bei
Variante 2: LDS R24, PINE
ORI R24, ...
STS PINE, R24
draus macht. Ich sehe auch, dass die 2. Variante Probleme
macht. ( Weil ich ja alle gesetzen Pins toggle ).
Aber warum macht der Compiler bei Variant 2 das so bzw. gibt es
da noch mehr solche "Stelle", wo maneigentlich nur schreiben müsste,
der Compiler aber vorher liest.
Danke,
Pepe.