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?
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.
> Die Abbruchbedingung i < 16 ist jedoch korrekt.
Nö. i < 15 ist richtig. Er will von 0..14 ausgeben (15 Bytes)
Grüße, Freakazoid
aber das geht, dass man eine Hex und eine Decimale addiert? Es muss wieder eine Hex ergeben.
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...
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.