mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FRAGE: 16Bit-Zahl in 2 8Bit-Register mit AT90S4433


Autor: Jörg Straile (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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"?

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@andreas
Hatte .dw und .byte verwechselt. Ist schon etwas ungewöhnlich nur ein 
Wort im FLASH als Tabelle abzulegen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So gehts:

.equ U_mess1 = 742

LDI ADC1_L,low(U_mess1)
LDI ADC1_H,high(U_mess1)


Peter

Autor: Jörg Straile (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Schmittchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.