Hallo Ich schreibe in C mit einem olimexino (arduino). Ich bin mit dem folgenden Code 2 Register zu laden (ATmega328):atmega: Registerdaten werden durch Divisionsoperation beschädigt
asm (
"ldi r20, 0 \n" //load register r20 with 0
"ldi r21, 16 \n" //load register r21 with 16
: : : "r20","r21" //compiler directive to reserve the two registers);
dann verwende ich diese:
asm ("out 0x05, r21 \n"); //write '0' to portB
asm ("out 0x05, r20 \n"); //write '10000' to portB
aus den beiden Registern zu Port B zu schreiben, aber unter Verwendung der beiden Register r20 und r21 erzeugt ein Problem. Ein Konflikt tritt auf, wenn ich eine Divisionsoperation mache. Wenn zum Beispiel irgendein Teil meines Programms eine Aussage wie "x = x/6" oder "y = x% 9" hat, scheinen sich die Zahlen, die ich in diesen Registern gespeichert habe, zu ändern. Wenn ich eine einfache Division wie "x/4" oder "x% 8" mache, gibt es kein Problem. aber jede Operation, die komplexer ist als eine einfache Schichtteilung, macht mir zu schaffen.
Irgendwelche Hilfe? Dank