-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Wie kann ich Integer in Hex wandeln ?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2005
    Beiträge
    15

    Wie kann ich Integer in Hex wandeln ?

    Anzeige

    Habe folgendes Problem.

    int pos=41;

    P2=0x29; //funktioniert
    P2=0xpos; //geht nicht

    Ich möchte P2 über eine Variable pos einen Hex wert zuweisen!

    Kann mir bitte jemand helfen?
    MFG Easy Rider

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.11.2004
    Ort
    München
    Alter
    30
    Beiträge
    447
    Hi,
    P2=pos; // geht

    Hab grad keine Zeit zu erklären warum... sry
    MfG Alex

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Darf ich fragen, was Du vor hast?
    geht es sich um die Darstellung der Zahl, oder was ?

    Gruß Sebastian

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    Hamburg <-> Bremen
    Alter
    37
    Beiträge
    112
    Ähm, sorry das ich das so sage, aber da fehlen ganz klar die Grundlagen.

    Hex, Dezimal, Binär, Octal und was es da noch so alles gibt sind alles nur andere Darstellungsformen für ein und die selbe Zahl. Es ist also sch.... egal ob du sagst P2=41; P2=0x29; usw für den PC/Compiler/uC ist das alles genau das gleich und speichern tut er es eh nur in binärem Format.

    Was soll den Deiner Meinung nach der Unterschied sein ? Denke Du hängst da an einem völlig anderem Problem.
    Philipp

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2005
    Beiträge
    15
    Geht leider doch nicht so einfach.
    Am Controller hängt ein Grafik Display von Noritake.
    Das Display akzeptiert für die Cusor Positionierung
    nur direkte Hex zuweisungen wie P2=0x41;

    Das Programm funktioniert aber nur mit Integer variablen die ich über
    eine Funktion übergebe.

    Das Display setzt den Cursor nur z.B. mit P2=0x41;
    an dir richtige stelle.

    Für mein Programm muss aber anstelle 0x41 eine Variable stehen.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Wie übergibst Du dieses P2=0x41 an das Display? als String, oder wie?

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2005
    Beiträge
    15
    Nein nicht als String.
    Die Hex Zahl wird direkt so übergeben.
    z.B.

    P2=0x41;

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    Hamburg <-> Bremen
    Alter
    37
    Beiträge
    112
    Kenn das Display jetzt nicht...
    Wie wird das den Übergeben ?? Nehme mal an parallel ? und P2 steht für einen Port am Atmel ?
    Poste doch mal Deinen Code und ein Link auf das Datenblatt. Und vor allem Deinen Schaltplan nicht vergessen
    Aber wenn P2=0x42; geht, gehat auf jeden falle auch P2=pos; mit zB pos=0x42;

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    also ich kann mir das mit der Datenübertragung als hex-wert
    irgendwie nicht vorstellen ... gibt meine phantasie nicht her.
    Das Display hängt irgendwie am Controller, soweit so gut,
    die Daten werden aber wie auch immer in Form von Bits übertragen
    1 oder 0, Saft auf der Leitung oder nicht, ob parallel oder
    seriell ist relativ. Ob der Wer der Konstanten binär, oktal, dezimal oder hex
    eingegeben wird bei der programmierung der Controllers es müssen dabei
    schlussendlich Bits rauskommen sonst läuft da nix.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Wenn Deine Variable pos den int-Wert 41 hat, was willst Du dann an das Display übergeben?
    a) 0x29 oder
    b) 0x41?

    Fall a)
    Dann geht's einfach mit P2 = pos;

    Fall b)
    Dafür müsstest Du eine kleine Funktion zum umrechnen schreiben:
    Code:
    unsigned char dec2hex (int x)
    {
           unsigned char y;
           y = (x/10)*16 + (x%10);
           return y;
    }
    
    //Funktions-Aufruf:
    P2 = dec2hex(pos);
    Damit wäre dex2hex(41) = 65 = 0x41.
    Allerdings kannst Du so dann keine Hex- Werte ans Display übergeben, die Buchstaben enthalten, wie z.B. 0xD3. Schließlich kennt int keine Buchstaben.

    askazo

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •