Forum: Projekte & Code [BASCOM] Adresse mit Dip Schalter


von David .. (david1)


Angehängte Dateien:

Lesenswert?

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

von Calogero D. (Firma: swissgrd.va) (cdg)


Lesenswert?

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

von David .. (david1)


Lesenswert?

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

von Calogero D. (Firma: swissgrd.va) (cdg)


Lesenswert?

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

von Dimi (Gast)


Lesenswert?

Hallo,

habe für AVR mit Basic nie programmiert,
mit C geht das total easy...
1
zahl = PINA;

MfG

von Ben (Gast)


Lesenswert?

warum dicht einfach bin in dez umwandeln?
ggbf. bin Eingänge invertieren um nicht im "Kopf alles umdrehen zu 
müssen"

geht super einfach.

von Oliver (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.