- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Dezimal nach Dual und dann ein Bit auswerten

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    50
    Beiträge
    128

    Dezimal nach Dual und dann ein Bit auswerten

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    ich habe eine etwas komplizierte Farge die vielleicht doch nicht so schwer ist.

    Ich möchte den Status einzelner Bits ausweren.
    Leider liegen diese Bits zunächst nur in einer Binärzahl vor.
    Nun möchte z.B. aus der Zahl 82 erkennen, ob das Bit 2hoch6 (64) enthalten ist. Wie müsste ich dazu in Bascom eine Formel schreiben?

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.055
    Ich kenne mich in Bascom nicht aus, sollte aber mit variablenvergleich funktionieren.
    In C wäre das z.b. If(variable && (1«6)){......}

    MfG Hannes

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    50
    Beiträge
    128
    Hallo Hannes,

    gut möglich dass es so einfach ist. Leider kann ich mit C nichts anfangen

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hey,

    mir ist nicht 100%ig klar worauf Du hinaus willst. Wenn es Dir einfach nur darum geht, möglichst unkompliziert einzelne Bits in einer Variablen abzufragen, bietet Bascom ja eine Punktnotation. Also so zB:

    Code:
    if variable.6 = 1 then
        ' wenn das siebte Bit der Variable variable gesetzt ist, tue irgendwas
    endif
    Hilft Dir das?

    Gruß
    Malte

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    54
    Beiträge
    1.258
    If Byte.6 = 1 Then
    Machwas
    End If

    Gruß, Michael

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Hi Düsentrieb,

    das geht mit Bascom ganz einfach: Mit dem Namen Deiner Byte-Variablen, einem Punkt und einer Ziffer zwischen 0 und 7 kannst Du jedes einzelne der 8 Bits ansprechen. Du kannst die Bits so setzen, löschen, ihren Wert auf eine andere Bit-Variable übertragen, oder auch ganz einfach auf ihren Wert (1 oder 0) überprüfen.

    Kleines Beispiel:

    Code:
    Dim Zahl as Byte
    Zahl = ....
    
    If Zahl.6 = 1 then...  else.... 'Überprüft das 6. Bit auf seinen Wert
    Oder

    Code:
    Dim Zahl as Byte
    Dim MyBit as Bit
    
    Zahl = ...
    
    MyBit = Zahl.6  'Das Bit MyBit übernimmt den Wert des 6. Bits von Zahl
    War es das, was Du suchst?

    Gruß,

    Daniel

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    50
    Beiträge
    128
    Hallo an alle,

    erst mal vielen Dank für eure Unterstützung.
    Leider ist es das aber nicht gewesen.
    Ich versuche es noch mal anders zu erklären.

    Ich habe 8 Schalte die ich abfrage. Um den Zustand der 8 zu übertragen (CAN) wandle ich die 8 Zustande in eine Dezimalzahl um.
    Beispiel:
    S1 - S2 - S3 - S4 - S5 - S6 - S7 - S8
    1 2 4 8 16 32 64 128
    1 0 1 0 0 0 1 0 = 1+4+64 = 69

    Nun möchte ich auswerten ob mein Schalter 7 gesetzt ist.
    Dazu müssten alle übertragenen Werte ausgewerte werden die >63 und <128 sind

    Ich glaube dass ich jetzt die Lösung beim Schreiben selbst gefunden habe

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hi,

    also entweder verstehe ich Dich nicht, oder Du hast es noch nicht ganz verstanden Was Du machen willst müsste so gehen wie wir drei geschrieben haben. Wenn die Zustände Deiner Schalter in einem Byte stehen, dann kannst Du doch einfach abfragen ob das siebte Bit gesetzt ist, eben genau so wie oben dargestellt. Ob das Byte jetzt von einem Port kommt, über igrendeinen Bus oder aus einem Zufallsgenerator spielt dabei keine Rolle ...

    Gruß
    Malte

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    50
    Beiträge
    128
    Hallo Malte,

    jetzt habe ich aber wirklich auf dem Schlauch gestanden. Ihr habt alle Recht und ich habs jetzt kapiert
    Danke euch!

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.651
    Zitat Zitat von Duesentrieb Beitrag anzeigen
    ...
    Beispiel:
    S1 - S2 - S3 - S4 - S5 - S6 - S7 - S8
    1 2 4 8 16 32 64 128
    1 0 1 0 0 0 1 0 = 1+4+64 = 69 ...
    ... jetzt habe ich aber wirklich auf dem Schlauch gestanden. Ihr habt alle Recht und ich habs jetzt kapiert ...
    [Pingelig]Vermutlich ist Dein Beispiel nur so - zum Verständnis - und Du kennst die übliche Bitanordnung von Dualzahlen. Dabei werden die Bits von rechts nach links numeriert, rechtes Bit ist das nullte, und Deine Zahlenfolge binär 1010 0010 hat den Wert dezimal 162
    (die Stellenwerte im Einzelnen 128 0 32 0 0 0 2 0). Erst das "spiegelbildliche" Byte binär 0100 0101 ergibt dann Deinen Wert dez 69.[/Pingelig]
    Ciao sagt der JoeamBerg

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 23
    Letzter Beitrag: 10.10.2012, 15:20
  2. Impulse erzeugen mit Atmega32 und dann nach Line-in Notobook
    Von funkheld im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 19.02.2010, 18:53
  3. Von dezimal zu dual Umrechnung
    Von Killer im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 17.12.2007, 21:55
  4. Geradeaus und dann nach links fahren
    Von Terabyte im Forum Robby CCRP5
    Antworten: 8
    Letzter Beitrag: 16.07.2004, 19:06
  5. Dezimal nach Binär
    Von im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 10
    Letzter Beitrag: 13.01.2004, 21:27

Berechtigungen

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

LiTime Speicher und Akkus