-
        

Ergebnis 1 bis 5 von 5

Thema: Programmierfrage

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.07.2007
    Beiträge
    18

    Programmierfrage

    Anzeige

    ich möchte eine unsigned variable von 12 bit in zwei Variablen teilen:
    die erste von 8 Bit und die zweite von 4 Bit.
    wie kann ich es mit C programmieren oder was ist den Befehl,womit ich das machen kann?
    übrigens es geht um Microcontroller Programmierung:ATmega

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    04.07.2007
    Beiträge
    18
    ich formuliere meine Frage:

    ich will ersten 12 Bit eines 16 Bit Timers in 12 Bit Variable kopieren.
    wie soll ich es machen?
    es geht um ATmega mit C-Programmierung

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    32
    Beiträge
    456
    Es gibt keine Variable mit 4bits, das kleinste in ANSI-C ist ein char mit 8 bits. Bei µC wird dann meist aich noch eine zusätzliche Variable bit eingeführt, welcher, wundersamerweise (), 1 bit lang ist.

    Zu deiner Frage, die Antwort versteckt sich hinter und-operatoren, mit denen du die 12-bit weite Variable zuerschneiden und hinter shift-operationen um die obereb 8 bit herauslesen zu können.

    Code:
    unsigned short x=0x0ABC;
    unsigned char hbyte=0x00;    // soll am Ende 0xBC enthalten
    unsigned char lbyte=0x00;     // soll am Ende 0x0A enthalten
    
    lbyte=x&0x00FF;             // lösche die obereb Bits weg und schreibe das Ergebnis in die erste Variable (und sollten Warnungen kommen, ignorieren)
    hbyte=((x>>8)&0x0F);    // shifte die obereb 8 bits um 8 nach oben und lösche den oberen nibble
    Übrigen, wenn es um ATmega und programmieren geht, ist das hier das falsche Forum .
    lg
    Mobius

    €dit: Wie gesagt, es gibt keine 12bit Variable, da der ATmega einen 8bit weiter µC ist (denk ich mal, dass der net 16Bitig ist), also kannst du nur Variablen mit einem _ganzen_ vielfachen von 8 verwenden und dieses Kriterium erfüllt eine Variable mit 12bits net . Da nimmt man eine 16 bit und lösche dir oberen 4 bit weg ( x&0x0FFF), anders geht es nicht und. (außer du baust dir selber einen µC bei dem du die weite des Datenbusses auf 12Bit begrenzt, mit einem FPGA wirst du nur noch einige Monate entwicklungszeit haben , aber dann kannst du wieder keine 16bit weiten Variablen verwenden )

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    06.07.2007
    Ort
    München
    Alter
    32
    Beiträge
    32
    Du könntest dir auch eine struct definieren, in der du die beiden Teile (8bit und 4bit) speicherst. Dann schiebst du eine temporäre Kopie der 12-Bit-Variable 4 Bit nach rechts, weist das Ergebnis dem 8bit-teil der struct zu. Anschließend schiebst du die 12bit-Variable 8bit nach links und weist diesen Teil dem 4bit-Teil der struct zu.

  5. #5
    1hdsquad
    Gast
    Falsches Forum, hier geht es um die Hardware und nicht um die Programmierung. Bitte verschieben!
    @ bob37: Und du könntest mal googlen etc!

Berechtigungen

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