Hallo, Ich arbeite mit dem AT90S4433 und suche nach einer Möglichkeit eine 16Bit Zahl (z.B. 742dezimal) in 2 Register abzulegen. Sieht da jemand mit dem MC überhaupt eine Chance? Hab das ganze schon mit : U_mess1: .DW 742 LDI ADC1_L,low(U_mess1) ; LDI ADC1_H,high(U_mess1) ; probiert. Funktioniert aber nicht. Kann mir jemand helfen?? Gruß Jörg
Falscher Befehl nicht LDI sondern LDS .dseg U_mess1: .dw 742 ;Seit wann hat der 4433 1448 Byte SRAM ;Wert ist zu gross .CSEG LDS ADC1_L,low(U_mess1) LDS ADC1_H,high(U_mess1)
Wie wär's mit: .equ U_mess1 = 742 ldi bla1, LOW(U_mess1) ldi bla2, LOW(U_mess2) Wenn du die Konstante mit .dw oder .db direkt im Flash anlegst, dann musst du zum Lesen den Befehl lpm verwenden. @mikki: Wie kommst du auf ".dseg"?
Nachtrag: Wenn du mit .dw 742 eine 16 Bit Konstante im Flash meinst, funktioniert es so: push ZL push ZH push R0 ldi ZL,low(U_mess1) ldi ZH,high(U_mess1) lpm mov ADC1_L,R0 adiw ZL,1 lpm mov ADC1_H,R0 pop R0 pop ZH pop ZL Die PUSH/POP Befehle sind evtl. nicht unbedingt erforderlich.
@andreas Hatte .dw und .byte verwechselt. Ist schon etwas ungewöhnlich nur ein Wort im FLASH als Tabelle abzulegen.
So gehts: .equ U_mess1 = 742 LDI ADC1_L,low(U_mess1) LDI ADC1_H,high(U_mess1) Peter
Hallo zusammen, Vielen Dank für die vielen Antworten. Ich benutze dieses Forum zum ersten Mal und bin echt überrascht, dass sich so viele melden. Ich hab mich für den Vorschlag von Peter entschieden. Ist einfach und funktioniert (Hatte nicht gewusst, wie sich .EQU mit großen Zahlen verhält) Gruß JOGI
> Ich benutze dieses Forum zum ersten Mal und bin echt überrascht, dass sich so
viele melden.
Tja, das hängt damit zusammen, daß du dich artikulieren kannst.
Die Qualität der Antworten hängt stark mit der Formulierung der Frage(n)
zusammen. Ich hab mir abgewöhnt Postings zu Ende zu lesen, die ich nicht
von Anfang an verstehe.
Schmittchen.
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.