Hallo, ich nutze den Arduino Uno und programmiere durch den AVR Studio in Assembler. Die Konfiguration habe ich hingekriegt. Die Ports einzustellen auch. Aber in Hexadezimalschreibweise scheints nicht zu klappen. Jemand ne Idee? .include "m328Pdef.inc" ;Hauptfunktion start: ldi r16, 0b00001111 out DDRB, r16 ldi r15, 0b00001111 out PORTB, r15 Schleife: rjmp Schleife So läufts, aber statt 0b00001111 Schreibweise will ich 0x01 schreiben. Da tut der Arduino aber nicht.
Teddy schrieb: > So läufts, aber statt 0b00001111 Schreibweise will ich 0x01 schreiben. > Da tut der Arduino aber nicht. Das kann wohl kaum am Arduino liegen, der Code wird ja im AVR Studio übersetzt, gibt dieses Fehlermeldungen raus? BTW: 0b00001111 = 0x0f nicht 0x01
Load immediate funktioniert nicht mit Registern kleiner r16 So wäre es richtig: ldi r16, 0b00001111 out DDRB, r16 ldi r16, 0b00001111 out PORTB, r16
Max M. schrieb: > Teddy schrieb: >> aber statt 0b00001111 Schreibweise will ich 0x01 schreiben. > > 0b00001111 != 0x01 >.< Natürlich :D wb1 schrieb: > Load immediate funktioniert nicht mit Registern kleiner r16 > > So wäre es richtig: > > ldi r16, 0b00001111 > out DDRB, r16 > ldi r16, 0b00001111 > out PORTB, r16 Alles klar, danke.
wb1 schrieb: > Load immediate funktioniert nicht mit Registern kleiner r16 > > So wäre es richtig: > > ldi r16, 0b00001111 > out DDRB, r16 > ldi r16, 0b00001111 > out PORTB, r16 Ähh nochmal zu dir. Wo steht das denn? in der Anleitung findet ich beim Befehl LDI dazu nichts.
Hi >Ähh nochmal zu dir. Wo steht das denn? >in der Anleitung findet ich beim Befehl LDI dazu nichts. Was für eine Anleitung? Es gibt eine Ausführliche Beschreibung der Assembler-Befehle: www.atmel.com/images/Atmel-0856-AVR-Instruction-Set-Manual.pdf MfG Spess
Hi Der Wortlaut des ausgegebenen Fehler sollte Das ungefähr aber auch ausdrücken. Somit ist nicht die Darstellung der Zahl der Fehler, sondern das unpassende Register. Als kleine Zusatzinformation: Wenn man den Wert eines eingebbaren ASCII-Zeichen in das Register laden will, pack das Zeichen in zwei Hochkomma/einfache Anführungszeichen. ldi r16,'9' lädt somit das Register r16 mit dem Wert 0x39 57d 0b00111001 Klappt im Atmel-Studio 4.x MfG
Hallo Teddy, ich hab erst jetzt bemerkt, daß Du auch noch ein Problem mit den Zahlensystemen hast. Du schreibst: "So läufts, aber statt 0b00001111 Schreibweise will ich 0x01 schreiben." "0b" bedeutet binär, "0x" bedeutet hexadezimal also 0b00001111 ist in hexa 0x0F wenn Du also 0x01 benötigst ist das in binärer schreibweise 0b00000001. Bitte etwas besser in Mathematik aufpassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.