[BASCOM] Adresse mit Dip Schalter

OP #1687766
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
Angehängte Dateien:
(Firma: swissgrd.va) #1687790
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
OP #1687855
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
(Firma: swissgrd.va) #1688299
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
Gast #1688519
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

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.