Moin, Ich hab mir vorhin eine kleines Progrämmchen, bzw ne Sub in Bascom geschrieben um einen 8-poligen Dip-Schalter zur Adresseingabe einzulesen. Hab das Programm in englisch kommentiert, hoffe man verstehts, aber ist eigentlich selbsterklärend. urz zur Schaltung, ist auf meinem Stecjbrett aufgebaut, läuft mit einem Mega8 an dem ein 8MHz Quarz hängt, auserdem geht der Uart über nen MAX232 an meinen Laptop über ne PCI-Express Karte. Der Dip Schalter ist 8-polig und an die im Code stehenden Pins angeschlossen, die Schalter ziehen gegen GND Kurze beschreibung: In der Sub wird zuerst die Variable in dem später die Adresse gespeichert wird auf 0 gesetzt um danach Problemlos rechnen zu können. Anschliesend wird überprüft welcher Dip Schalter auf on steht, und z.B. beim Schalter Nummer 2, zur Adresse 2 dazugezählt wird. Die Adresse wird so eingestellt: In diesem Fall gibt es 8-Schalter: -------------------------------------- Schalter Nummer | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |------------------------------------| Adresse (2^Schalter-Nummer) | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | -------------------------------------- Nun können wir alle Adressen zwichen 0 und 255 einstellen in dem wir zum gewünschten Wert die nächst kleinere Zahl suchen und den Rest dazu addieren. Also möchten wir z.B. 39 einstellen müssen wir den Schalter Nr.5,2,1 und 0 auf on setzen. Bei 138 dementsprechend: 7,2 und 1 Hoffe ich konnte das einigermaßen verständlich erklären. Und ich hoffe es kann jemand was damit anfangen ;) Das Programm ist auf beliebig viele Schalter erweiter, bzw "verkleinerbar" (sagt man dass so?) Gruss David
Ich glaube nicht das jemand das braucht, Portsetzen, Portlesen = Grundgerüst Verstanden hast Du aber Dein Programm noch nicht > Anschliesend wird überprüft welcher Dip Schalter auf on steht, und z.B. > beim Schalter Nummer 2, zur Adresse 2 dazugezählt wird. Nee, Schalter 2 on, hat die Wertigkeit 4 (Du fängst ja bei 0 an) > Bei 138 dementsprechend: 7,2 und 1 Schalter 7 on, Wertigkeit 128 Schalter 2 on, Wertigkeit 4 Schalter 1 on, Wertigkeit 2 ----------------------------- macht bei mir 134 statt Deinen 138 cdg
Is mir auch grad aufgefallen. Hab die Nummern glaub erst hinterher korrigiert. Ich änders grad EDIT: Wieso kann ich den Post nichmehr ändern? Naja egal, hier die berichtigte Version: Bei 138 dementsprechend: 7,2,1 und 0 Gruss David
David S. schrieb: > Is mir auch grad aufgefallen. Hab die Nummern glaub erst hinterher > korrigiert. Ich änders grad > > EDIT: Wieso kann ich den Post nichmehr ändern? > > Naja egal, hier die berichtigte Version: > > Bei 138 dementsprechend: 7,2,1 und 0 > > > > Gruss > David Wieder nicht richtig geraten 2^7 + 2^2 + 2^1 + 2^0 = 135 128 + 4 + 2 + 1 = 135 Dein nächster Versuch sollte dann zu 7,3,1 führen. 2^7 + 2^3 + 2^1 = 138 128 + 8 + 2 = 138 Dreh mal den DIL-Schalter (Deine Tabelle) um 180 Grad, also LSB nach rechts und MSB dann links. Dann muss man nicht ím Kopf drehen und es liest sich besser (für mich). cdg
warum dicht einfach bin in dez umwandeln? ggbf. bin Eingänge invertieren um nicht im "Kopf alles umdrehen zu müssen" geht super einfach.
David S. schrieb: > Hab das Programm in englisch kommentiert, hoffe man verstehts, aber ist > eigentlich selbsterklärend.
1 | Dim Dip_adress As Byte 'defines var "Dipp_adress" as Byte |
2 | Dip_adress = 1 'sets "Dip_adress at startup to 0" |
Das ist ein klassisches Beispiel dafür, wie man Programme nicht kommentieren sollte. Absolut sinnfrei, da wörtlich das wiederholt wird, was im Programmtext schon steht, dazu dann auch noch verwirrend. Besser wäre es gewesen, wenn du kurz beschrieben hättest, was das Programm macht. Denn das eigentliche "Feature", daß die DIP-Bits beliebig auf die Ports verteilt sein dürfen, sieht man nicht sofort. Oliver
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.