www.mikrocontroller.net

Forum: Compiler & IDEs addition


Autor: hORST (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moinmoin in die Runde

Ich habe einen externen EEPROM dran und will mal das Auslesen testen.
(Muss 16Bit Register angeben)
Und zwar die ersten 15 Bytes hinternander.
Ich weis nicht ob die folgende Addition richtig ist:


  uint8_t i;
  for(i=1;i<16;i++)
  {
  ausgabe(eeprom_read_register(0x0000+i));
  }

Weil der hängt irgendwo. Ist das erstmal richtig?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Addition ist richtig, aber sinnlos: wenn du zu irgendeiner
Zahl eine Null addierst (auch wenn du sie noch so kunstvoll als
0x0000 schreibst :), kommt nur wieder diese Zahl raus.

Dein Anfangswert ist aber falsch: du musst mit i = 0 anfangen.
Das adressiert die erste Zelle.  Die Abbruchbedingung i < 16
ist jedoch korrekt.

Autor: André Kronfeldt (freakazoid)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Abbruchbedingung i < 16 ist jedoch korrekt.
Nö. i < 15 ist richtig. Er will von 0..14 ausgeben (15 Bytes)

Grüße, Freakazoid

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Er will von 0..14 ausgeben (15 Bytes)

Ach ja, ich war von 16 Bytes ausgegangen.

Autor: hORST (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber das geht, dass man eine Hex und eine Decimale addiert?
Es muss wieder eine Hex ergeben.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob Du eine Zahl in Deinem Programm als Hexadezimal- oder Dezimal- oder
Oktal-Wert eingibst, ist völlig unerheblich. Der Compiler macht aus
allen Zahlen zum rechnen Binär-Werte (bzw. Hexadezimal-Werte, wie mans
nimmt, ist auch nur wieder ne andere Schreibweise), da ein
Mikrprozessor nun mal nur mit Binärwerten was anfangen kann! Es ist
lediglich eine andere Schreibweise. Eine als Dezimal eingegebene Zahl
wird nicht im BCD-Format oder ähnlich abgespeichert! Wenn man eine
Zahl als Dezimalzahl auf irgendeinem Display ausgeben will, muss man
sie erst in Dezimalstellen umwandeln. Wenn man im Compiler eine
Konstante zuweist, ist es völlig unerheblich, ob man 15, 017 oder 0x0F
schreibt. Für den Rechner ist alles 1111...

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.