Bascom Ausgänge binär schalten?

Gast #1560157
hi all,

ich programiere jetzt schon eine ganze weile mit Bascom.

Ich habe z.b. eine ausgang so aktiviert:

Portd.6 = 1

Ich weiß aber das man da auch binär machen kann ... ich guggel jetzt 
schon ne weile aber so eine wirklich anleitung habe ich noch nicht 
gefunden...

könnte mich da mal jemand aufklären wie das geht (habe leider keinen µC 
da sonnst würds ich einfach mal ausprobieren)
so:

Portd = &B00100000 ??? (port D 6 ist jetzt auf High)
PortD = &B01001001     (jetzt sind 1, 4 und 7 auf high, oder????)

hatte das vor längeren mal versucht und da hatten die led willd 
ducheinander geblinkt!


gruß
Matthias
Gast
Hi
Ich kenne Bascom nicht, denke aber, das auch Bascom bei 0 anfängt mit 
dem Zählen der Bit's
Portd = &B00100000      port D .5 ist jetzt auf high
PortD = &B01001001      Port D .0, .3 und .6 auf high
Übrigends, auch eine Zuweisung PortD.6=1 ist binär, weil ein Pin nur 
eine 1 oder eine 0 sehen kann, also 2 Zustände haben kann. Es sei denn, 
es ist eine Analogbeschaltung, aber die kann nur eine x-beliebige 
Spannung zwischen 0V und ~VCC verarbeiten. Dazu bedarf es anderen 
Programmaufrufen.
Gruß oldmax
Portd = &B00100000     port D .5 ist jetzt auf high

Das wird zwar das gewünschte Verhalten an PD5 haben (falls Syntax 
stimmt), aber gleichzeitig alle anderen auf 0 setzen. Gibt Anwendungen, 
wo das Sinn macht (z.B. eine LED-Matrix, die am gesamten Port 
angeschlossen ist), meist ist es jedoch sinnvoller mit
-or  (zum setzen bestimmter Pins)
-and (zum löschen bestimmter Pins)
-xor (zum invertieren bestimmter Pins)
zu arbeiten.
Gast
Hi
Ich glaub, das muß etwas erklärt werden. Richtig ist, die Zuweisung 
PortD.5=1 setzt nur Pin 5 vom PortD.
Wenn mit Bytes gearbeitet wird und man nur 1 Bit setzen will, die 
anderen aber sollen bleiben, wie sie sind, mußt du dir eine Variable 
einfallen lassen, die den Zustand der Portpins abspeichert und über 
diese setzt du dann den gesamten Port.
In Assembler sieht's so aus:
1
LDS R8, Port_D_Var  ; Register 8 mit Portvariable laden
2
ORI R8, 0b00100000  ; Register 8 mit Bytemuster 00100000 verodern
3
                    ; Bit 5 wird zu 1, alle anderen bleiben wie sie sind
4
STS Port_D_Var, R8  ; Portvariable wieder zurückschreiben und anschließend
5
                    den PortD mit Port_D_Var beschreiben.
Zum Ausschalten des Bits brauchst du eine Und-Funktion
1
LDS  R8, Port_D_Var  ; Register 8 mit Portvariable laden
2
ANDI R8, 0b11011111  ; Register 8 mit Bytemuster 11011111 verunden
3
                    ; Bit 5 wird zu 0, alle anderen bleiben wie sie sind
4
STS Port_D_Var, R8  ; Portvariable wieder zurückschreiben und anschließend
5
                    den PortD mit Port_D_Var beschreiben.
In Basic sollte es so aussehen
1
Port_D_Var=Port_D_Var Or &b00100000
für's setzen und
1
Port_D_Var=Port_D_Var AND &b11011111
für's löschen. Sollte der Syntax nicht stimmen, seht es mir nach, Basic 
ist sehr lange her....
Gruß oldmax

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.