- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 11 bis 20 von 27

Thema: Einfache Schreibweise einer 5-Bit Wahrheitstabelle

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Nein, die beiden Codezeilen sind etwas anders zu verstehen.

    Wenn Du in Bascom X = A schreibst, bezeichnet "X" eine Variable um die es geht, und "A" den Wert, den sie haben soll. Konkret also z.B.

    Dim Zähler as Byte
    Zähler = 20
    Zähler = Zähler + 1

    (Zähler hätte am Schluss den Wert 21.)

    Da ein Byte 8 Bits hat, könnte man statt der 20 auch den Binärwert schreiben:
    Zähler = &b00010100

    Oder Hexadezimal:
    Zähler = &h14

    Du kannst einer Variablen aber nicht nur einen numerischen Wert (also eine Zahl) zuweisen, sondern auch gleich direkt den Inhalt eines Registers:
    Dim Programmwahl as byte
    Programmwahl = PINA

    Damit nimmt die Variable Programmwahl den Wert an, der gerade im 8-bit-Register PINA steht.

    Zur Erinnerung: Im Register PINA steht das Muster aus Einsen und Nullen, das an den Anschlüssen A.7 bis A.0 anliegt (vorausgesetzt sie sind per DDR-Register als Eingänge konfiguriert). Diesem Register kannst Du also nicht auf Befehlsebene einen Wert zuweisen, sondern sein Inhalt hängt ausschließlich von den Highs und Lows an den Anschlüssen ab. PINA = XYZ macht also keinen Sinn - man kann dieses Register nur auslesen, d.h. XYZ = PINA.
    Liegt also z.B. an den Anschlüssen A.4, A.2 und A.0 ein High (und an den anderen ein Low), stünde im Register PINA der Wert &b00010101. Mit dem Befehl Programmwahl = PINA übernimmst Du also das "Muster" aus Highs und Lows aus dem Register PINA direkt in Deine Variable Programmwahl. Klar?

    Jetzt könnte es ja aber sein, dass Du die Anschlüsse A.7, A.6 und A.5 für was ganz anderes brauchst - zu den Bits, die die Programmwahl steuern, gehören sie ja definitiv nicht. Du kannst aber nur das ganze Register PINA auf die Variable Programmwahl übertragen. Wenn also nur die Bits Programmwahl.4 bis Programmwahl.0 ausgewertet werden sollen, musst Du gegebenenfalls die höchsten 3 Bits der Variable Programmwahl auf 0 setzen. Das geht entweder einzeln:

    Programmwahl.7 = 0
    Programmwahl.6 = 0
    Programmwahl.5 = 0

    oder eben am Stück, indem Du die oberen 3 Bits mit einer 0 Und-verknüpfst (das Ergebnis einer UND-Verknüpfung mit 0 ist immer 0), und die unteren 5 Bits mit einer 1 UND-Verknüpfst (das Ergebnis ist immer die Ausgangsvariable selbst: 0 UND 1 = 0, 1 UND 1 = 1).

    Kurz und gut: Programmwahl = Programmwahl AND &b00011111 setzt die obersten 3 Bits der Variable auf 0, egal was vorher drin gewesen war, während die unteren 5 Bits unverändert bleiben.
    Geändert von Sauerbruch (14.12.2014 um 14:37 Uhr)

Ähnliche Themen

  1. Kurze Schreibweise bei If- Bedingung in Bascom?
    Von rylix im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 17.06.2011, 16:58
  2. Ersten 8 bit einer 32 bit Zahl auslesen
    Von C_Classic im Forum C - Programmierung (GCC u.a.)
    Antworten: 15
    Letzter Beitrag: 23.05.2010, 00:06
  3. TTL Logik Wahrheitstabelle
    Von Micha.Berlin im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 26.05.2008, 22:32
  4. Ein bestimmtes Bit einer Variable überschreiben
    Von Dane im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 15.04.2006, 14:00
  5. Antworten: 5
    Letzter Beitrag: 30.06.2005, 16:51

Berechtigungen

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

12V Akku bauen