Was ist denn jetzt dein Problem? Willst du es vorgekaut bekommen? Dann
musst du es sagen, und dir wird geholfen. Es wurde doch gesagt, wo das
Problem liegt, was fehlt denn noch? Man reagiert hier halt kritisch,
wenn der Eindruck entsteht, dass die Fragesteller nur zu faul sind, um
das Handbuch des Compilers/Interpreters etc. zu lesen, oder sich selbst
Gedanken zu machen, oder einfach mal die Neugier spielen zu lassen und
zu PROBIEREN.
Konkrete Frage, konkrete Antwort, so lief es doch am Anfang deines
Beitrags. Und jetzt erwartest du, dass man dir die fertige Lösung
liefert, oder was?
Wie wärs hiermit:
1 | (1) If Pind.0 = 1 AND Pind.3 = 0 Then
|
2 | Gosub Warten
|
3 | ElseIf Pind.1 = 0 AND Pind.2 = 0
|
4 | Gosub Aus
|
5 | endIf
|
6 | (2) Portc.1 = Pind.1 'Vereinfachung
|
7 | (3) Portc.2 = Pind.2 'Vereinfachung
|
8 | (4) If Pind.3 = 1 AND Pind.0 = 0 Then
|
9 | Gosub Flash
|
10 | ElseIf Pind.1 = 0 AND Pind.2 = 0
|
11 | Gosub Aus
|
12 | EndIf
|
Ob die Vereinfachung in 2 und 3 funktioniert, weiss ich nicht, ich komme
aus der 8051er-Ecke und programmiere ASM und C.
Ob es generell funktioniert, kann ich dir daher nicht sagen, aber damit
dürftest du weiterkommen.
Du darfst halt nur dann alles ausschalten, wenn kein Schalter aktiviert
ist => Logisch, oder? :)
Andersrum darfst du "Flash" und "Warten" nur dann aufrufen, wenn die
jeweils andere Bedingung nicht eingetreten ist, sonst rufst du ja immer
beides auf, wenn beide Schalter aktiv sind. Das heisst, dass du
eigentlich noch prüfen musst, ob D0 und D3 gleichzeitig aktiv sind, und
dafür musst du auch noch n Fall abbilden.
Und zum Schluss ist die Prüfung von C1 und C2 immer noch falsch, weil
"AUS" unabhängig von diesen beiden Schaltern aufgerufen werden kann,
d.h. die beiden Schalter musst du eigentlich für den Aufruf von "AUS"
auch noch berücksichtigen.
So, damit hättest du eigentlich exakt 16 Fälle (=vier Schalter) zu
berücksichtigen.
Das macht man nicht mehr mit IF-Statements, sondern mit
Select-Case-Statements. Damits nicht zu einfach wird, darfst du die
Verwendung hier nachlesen:
http://avrhelp.mcselec.com/bascom-avr.html
Ich hoffe, du bekommst es jetzt allein gebacken, ich klopp mich jetzt
nämlich in die Heia... :)
Ralf