Zitat Zitat von Robzilla Beitrag anzeigen
Ich stehe gerade vor einem ähnlichen Problem. Gibt es schon eine Lösung Der Bastler?
Ja Moin Robzilla

Ich habe es Ausprobiert mit einen ATtin2313 und 4 eingänge
PORTD0 bis 3 als eingang genommen
PORTB0 Bis 7 Led als ausgänge genommen

Hier ein ausschnitt von mein programm
Code:
im Kodierschalter As Byte
Dim B As Byte

Declare Sub Prog_0
Declare Sub Prog_1
Declare Sub Prog_2
Declare Sub Prog_3
Declare Sub Prog_4
Declare Sub Prog_5
Declare Sub Prog_6
Declare Sub Prog_7
Declare Sub Prog_8
Declare Sub Prog_9
Declare Sub Prog_10
Declare Sub Prog_11
Declare Sub Prog_12
Declare Sub Prog_13
Declare Sub Prog_14
Declare Sub Fehler


Do
Kodierschalter = Pind And &B0000_1111
Select Case Kodierschalter
  Case 0 : Gosub Prog_0                                     'LEER
  Case 1 : Gosub Prog_1                                     'LEER
  Case 2 : Gosub Prog_2                                     'LEER
  Case 3 : Gosub Prog_3                                     'PORTD.0 und PORTD.1 = LICHT
  Case 4 : Gosub Prog_4                                     'LEER
  Case 5 : Gosub Prog_5                                     'LEER
  Case 6 : Gosub Prog_6                                     'PORTD.0 und PORTD.3 = LED TEST
  Case 7 : Gosub Prog_7                                     'PORTD.3 = FEIL LINKS
  Case 8 : Gosub Prog_8                                     'LEER
  Case 9 : Gosub Prog_9                                     'LEER
  Case 10 : Gosub Prog_10                                   'LEER
  Case 11 : Gosub Prog_11                                   'PORTD.2 = FEIL RECHTS
  Case 12 : Gosub Prog_12                                   'LEER
  Case 13 : Gosub Prog_13                                   'PORTD.1 = KTEUTZ
  Case 14 : Gosub Prog_14                                   'PORTD.0 = LEER LASSEN Weil Platine keine led hat
  Case Else : Gosub Fehler                                  'Ohne Funktion
End Select
Loop
Hier werden wenn ich richtig liege, 15 Programme gebraucht und wenn du siehst welchen
Prog_xx Welcher Port liegt. wenn ich richtig erklärt habe...

Den es wird nicht nur Portd >Taster< Gnd
Sondern auch
Portd > Taster< 5V+ ausgwertet

Hier kannst du es auch noch mal lesen--->
Hallo bastler,

mit drei Dipschaltern, kann man 2^3=8 binäre Kombinationen einstellen.
1. 000
2. 001
3. 010
4. 011
5. 100
6. 101
7. 110
8. 111

Dezimal sind das die Zahlen von 0 bis 7. Deshalb würde ich die Dipschalter an einen Port des µCs, beginnend mit Portpin 0, anschließen. Durch kann man die Schalter recht einfach abfragen und mit der SELECT-CASE Anweisung weiterverarbeiten.

Im Code werden durch "and &B0000_0111" nur die Zustände der Dipschalter an PINB.0, PINB.1 und PINB.2 in die Variable Kodierschalter übernommen und Bit 3 bis Bit 7 in Kodierschalter auf 0 gesetzt.

Danach einfach mit SELECT-CASE die Unterprogramme anspringen.

Code:

Dim Kodierschalter As Byte

Kodierschalter = PINB And &B0000_0111

Select Case Kodierschalter
Case 0 : Gosub Prog_0
Case 1 : Gosub Prog_1
Case 2 : Gosub Prog_2
' Case 3 : Gosub Prog_3
' Case 4 : Gosub Prog_4
Case 7 : Gosub Testlauf
' Case Else: gosub xy
End Select


Gruß
Searcher