-
Man kann das bestimmt VIEL trickreicher lösen...
Alle möglichen Zustände aller 27 LEDs kann man z.B. in ner LONG-Variablen erfassen ;-) Die musst du dann nur noch mit ner trickreichen Routine in die Matrix einspielen.
Ich würde mir da mal die Logikoperationen NOT AND usw. ansehen.
Geht bestimmt ganz einfach, ich bin jetzt aber auch zu faul, dir das zu machen ;-)
-
Das will ich ja gar nicht. Ich möchte erst mal wissen warum mein Programm nicht das tut was es soll. Irgendwas muss da noch falsch dran sein. Nur was? Ich steh echt langsam aufm Schlauch. Ich hab gestern noch bis 2 Uhr morgens dran rum geschraubt und es geht einfach nicht.
-
Versuch mal die Stacks zu erweitern... das hilft bei Subs oft weiter... Ansonsten verstehe ich nicht, wieso es nicht gehen sollte... die Routine ist umständlich, aber klar zu vrstehen.
-
Ich hab den Fehler gefunden aber nicht ganz verstanden:
Code:
Porta = 0
Portc = 0
Portd = 1
Portb = 1
Mit diesen Befehlen wollte ich vor dem Start des Programmes erreichen, dass alle Pins um Port A und C auf Low gezogen werden und alle Pins im PortD und PortB auf high gesetzt werden, damit das NPN Array und das PNP Array komplett sperrt und somit keine LED durch den undefinierten Zustand der Ports zufällig an ist.
Scheinbar tut der Befehl aber nicht das was ich dachte. Wenn ich das PortA = 0 durch PortA.0 = 0 , PortA.1 = 0 usw. ersetze geht es.
Naja jetzt hab ich schon wieder das nächste Problem, das das PNP Array nicht sauber läuft... An den Eingängen des PNP Arrays habe ich genau das was ich per Software einstelle. Komischerweise schalten aber nahezu alle Ausgänge des Arrays auf high obwohl ich nur einen Eingang ansteuer... Woran das liegt kann ich mir mal wieder nicht erklären aber ich tüftel weiter dran.
-
Hallo oZe,
das schreibst du am Besten so:
Code:
PortA = &B00000000
PortC = &B00000000
PortB = &B11111111 '255
PortD = &B11111111 '255
-
Alles klar! Werde ich einfügen damit es übersichtlicher bleibt ;-)
Danke erst mal für die wirklich nette Hilfe!
-
die 0 ist natürlich &B0000000
die 255 (alle auf 1) ist &B1111111
Binär eben
PortB = 1 wäre nur &B00000001
-
@oze
ich wollte auch mit ner funktion arbeiten,
aber ich will kein case benutzen.
das led aus kannst du dir doch sparen oder ?
ich habe immer biäres format, wenn ich jetzt eine ebene einschalte
setzich ich damit ja immer die andere automatisch wieder auf "0":
porta = &B00000001 'led reihe 1 ein, alle anderen aus
porta = &B00010000 'led reihe5 ein, alle anderen aus
-
@Phoenix:
Nein, man MUSS einen Schwarz-Zyklus reinbauen und dann erst die Spalte wechseln! Ansonsten entstehen Geisterbilder, weil man ja nie Reihen und Spalten gleichzeitig schalten kann!
-
mach ich doch damit
porta = &B00000001 'led reihe 1 ein, alle anderen aus
porta = &B00010000 'led reihe5 ein, alle anderen aus
mit der 2. anweisung schalte ich doch die anderen 7 pins auf gezielt "0", zumindest äuft das so bei mir...