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
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.