- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Problem mit Variable

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Anzeige

    Praxistest und DIY Projekte
    Dafür gibts die Funktionen AND und OR zum Maskieren.
    Will man von einem Byte z.B. nur die oberen 4 Bits haben, man
    spricht da oft von einem Nibble blendet man zunächst die unteren
    4 Bits aus

    Bytewert = bytewert AND &B11110000

    dann shiftet man, also schiebt man die Bits an die richtige Stelle, in diesem Fall nach rechts

    shift bytewert,right,4

    also um 4 Stellen nach rechts.

    Das Ergebnis sieht dann in etwa so aus:
    originalbyte = &B10100101
    originalbyte = originalbyte AND &B11110000
    dann ist das Ergebnis:
    originalbyte = &B10100000
    shift 1malriginalbyte = &B01010000
    shift 2malriginalbyte = &B00101000
    shift 3malriginalbyte = &B00010100
    shift 4malriginalbyte = &B00001010

    Will man die unteren 4 Bits geht das einfacher, indem man einfach
    die oberen 4 löscht über

    bytewert = bytewert AND &B00001111
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    03.08.2009
    Ort
    SFB
    Beiträge
    60
    Und die beiden Zahlen kann ich dann einfach Addieren damit ich die an die Uhr senden kann.
    Und dann noch was wenn ich die Zahl eingeben also zb 12 Uhr ( wenn ich die Uhr einstellen will)
    Ist dies ja eine Dez Zahl 12 als Bit 00001100 Wie bekomme ich aus dieser 00010010 (Hex 12)
    Oder kann ich die 12 auch zerlegen in 1sten 4Bit 0001 ; 2 2sten 4Bit 0010
    Wenn ja wie das?

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Und die beiden Zahlen kann ich dann einfach Addieren damit ich die an die Uhr senden kann.
    Nein, Du hast dann die Einer und die Zehner, also bei Überlauf der Einer den Zehner hoch zählen oder zusammensetzen über Zehner mal Zehn plus die EIner dann.

    Das Schreiben ...

    tja, dafür brauchts dann etwas mehr Rechenarbeit ...

    die 2 bekommst du ganz einfach über MOD

    Also

    Byte1 = 12
    Byte2 = Byte1 MOD 10

    -> Byte 2 ist dann 2

    Es wird da automatisch ein durch 10 teilbarer Betrag abgezogen und nur der
    Rest (nicht durch 10 teilbar) bleibt übrig.

    das ist dann dein low-nibble
    Dann gehts weiter an den high-nibble

    byte3= byte1 / 10 das währe dann 1,2, da aber bytes keine Kommastellen können ergo nur 1
    oder binär dann &B00000001

    das shiften wir dann einfach nach links um 4 Stellen, also

    shift byte3,left,4

    Und dann setzen wir die Nibbles zusammen

    ausgabebyte = byte2 OR byte3

    und fertig ist die Laube
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    03.08.2009
    Ort
    SFB
    Beiträge
    60
    Habe mal noch eine Frage

    Warum geht das nicht so wie ich will...

    Habe in Bascom eingegeben:
    Dim wert1 as byte
    dim wert2 as byte
    ....


    Wert1 = 0
    Wert2 = 48 <- ist Hex 30
    wert1 = hex(wert2)
    print hex(wert2) -> zeigt mit 33 an <- Warum

    Wollte zum testen das die Hintergrundbeleuchtung bei 30s aus geht. Tut Sie auch aber erst bei 33s

    Warum rechnet es den so komisch

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Das Ergebnis einer Hex()-Funktion muss in einer String-Variable gespeichert werden. Nicht in einer Byte! Wert1 wird nie das korrekte Ergebnis erhalten, solangs ein Byte ist.
    #ifndef MfG
    #define MfG

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Befass Dich mal mit den verschiedenen Typen, den Wertebereichen ...

    liest Du auch was geantwortet wird?

    Das Ding gibt Dir auch mitnichten Hexwerte aus, sondern
    eine Bitfolge von der Länge 8, ergo ein Byte, dessen
    Hexdarstellung der Zeichfolge &Hirgednwas entspricht

    Zahlensysteme wären da mal ein Einstieg ...

    Binär, Oktal, Dazimal, Hexadezimal


    Bild hier  
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress