Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

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

Thema: nibble aus byte ausmaskieren

  1. #1
    Registriert seit
    31.03.2006
    Ort
    Horb
    Beiträge
    20
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich muss aus einem Byte die Ziffern ausmaskieren. Wenn z.B. im Byte 38 steht muß ich die Zahl 38 in 3 und 8 zerlegen. Hat jemand eine Idee, wie man das am besten anstellt.

    Gruß
    chopper
    Geändert von chopper (09.11.2009 um 22:15 Uhr)
    Zitieren Zitieren Ziffer aus byte ausmaskieren  

  2. #2
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von chopper Beitrag anzeigen
    Hallo,

    ich muss aus einem Byte die Ziffern ausmaskieren. Wenn z.B. im Byte 38 steht muß ich die Zahl 38 in 3 und 8 zerlegen. Hat jemand eine Idee, wie man das am besten anstellt.

    Gruß
    chopper
    Hallo Chopper,

    das wäre der Befehl:
    ITB Ganzzahl nach BCD
    dann hast in einem Byte die 3 und in dem anderen die 8
    Aber im BCD Format, doch das kannst Du ja dann wieder zurück wandeln
    Byte trennen und dann:
    BTI
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  3. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    chopper (09.11.2009)

  4. #3
    chopper ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.03.2006
    Ort
    Horb
    Beiträge
    20
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke,

    werde ich morgen gleich mal ausprobieren.

  5. #4
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    mein Vorschlag:

    Code:
    FUNCTION "FC_Byte_Nibble" : VOID
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      In_Byte : BYTE ; 
    END_VAR
    VAR_OUTPUT
      Nibble_High : BYTE ; 
      Nibble_Low : BYTE ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          L     #In_Byte; //Eingangsbyte laden
          L     B#16#F; //Maskieren
          UW    ; 
          T     #Nibble_Low; //Ausgang zuweisen
          L     #In_Byte; //Eingangsbyte laden
          SRW   4; //Byte schieben
          T     #Nibble_High; //Ausgang zuweisen
    END_FUNCTION

  6. Folgender Benutzer sagt Danke zu Dotzi für den nützlichen Beitrag:

    chopper (09.11.2009)

  7. #5
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Rotes Gesicht

    Hallo Chopper,

    ich habe Mist geschrieben!
    Zieh das Danke bei mir ab und gib es Dotzi.

    Nach meiner Variante hast Du nicht die 3 und die 8 in einem separaten Byte sondern im gleichen nur als BCD.

    38 als Int == 0010 0110
    38 als BCD == 0011 1000
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  8. #6
    chopper ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.03.2006
    Ort
    Horb
    Beiträge
    20
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    @ Paule
    Das Danke ist trotzdem o.k, hast dir ja schließlich Gedanken für ne Lösung gemacht.

    @Dotzi
    Geht wohl so auch nicht, da die Zahl nicht HEX sondern DEZ ist.
    Z.B. 12 == 0000 1100
    Dann steht im Low Nibble c und in High nibble 0.
    Ich brauch das Ganze deziimal.

    Gruß
    chopper
    Geändert von chopper (09.11.2009 um 22:47 Uhr)

  9. Folgender Benutzer sagt Danke zu chopper für den nützlichen Beitrag:

    Dotzi (09.11.2009)

  10. #7
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Hallo Chopper,

    nächster Versuch

    Kombiniere meine Variante mit Dotzi's.
    Sprich erst in BCD wandeln und dann ausmaskieren und schieben.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  11. Folgende 2 Benutzer sagen Danke zu Paule für den nützlichen Beitrag:

    chopper (09.11.2009),Dotzi (09.11.2009)

  12. #8
    chopper ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.03.2006
    Ort
    Horb
    Beiträge
    20
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Genau so muß es gehen
    Danke

  13. #9
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    so wie Paule es sagt sollte es nun funktionieren

    Code:
    FUNCTION "FC_Byte_Nibble" : VOID
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      In_Byte : BYTE ; 
    END_VAR
    VAR_OUTPUT
      Nibble_High : BYTE ; 
      Nibble_Low : BYTE ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          L     #In_Byte; //Eingangsbyte laden
          ITB
          L     B#16#F; //Maskieren
          UW    ; 
          T     #Nibble_Low; //Ausgang zuweisen
          L     #In_Byte; //Eingangsbyte laden
          ITB
          SRW   4; //Byte schieben
          T     #Nibble_High; //Ausgang zuweisen
    END_FUNCTION

  14. Folgende 2 Benutzer sagen Danke zu Dotzi für den nützlichen Beitrag:

    Paule (09.11.2009),roadrunner (04.04.2012)

  15. #10
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Lächeln


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ha das war doch mal Teamwork.

    Eins fehlt aber noch:
    Zum Schluss noch Nibble High und Low in Dezimal zurückwandeln.
    Chopper will es ja in Dezimal.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

Ähnliche Themen

  1. Wie kann man Hi-Byte Low-Byte spiegeln?
    Von Klärmolch im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 11.12.2010, 20:58
  2. Umwandeln von INT nach Byte u Byte + n
    Von Gerold im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.04.2009, 10:07
  3. Antworten: 4
    Letzter Beitrag: 08.07.2008, 08:52
  4. Einzelne Bits ausmaskieren
    Von zwerg77 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.12.2007, 07:14
  5. HI-Byte und LOW-Byte
    Von Danielegger im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.08.2004, 00:41

Lesezeichen

Berechtigungen

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