eventuell so ...
dann kannst du dir die ganzen Definitionen sparen.Code:Dim Led As Byte Do If Led < 16 Then Incr Led Else Led = 0 Porta.0 = Led.0 Porta.1 = Led.1 Porta.2 = Led.2 Porta.3 = Led.3 Wait 1 Loop
Tach,
versuche grad die Ansteuerungen eines Multiplexers (für Lauflicht) zu vereinfachen (74HC4514).
Leider funktioniert es aber nicht so wie ich es gern hätte.
Wisst ihr wie ich das lösen könnte?Code:$regfile = "m16def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 'Belegung Config Porta.0 = Output 'an A0 Config Porta.1 = Output 'an A1 Config Porta.2 = Output 'an A2 Config Porta.3 = Output 'an A3 'Defines A0 Alias Porta.0 A1 Alias Porta.1 A2 Alias Porta.2 A3 Alias Porta.3 'Multiplexer (74HC4514) Led0 Alias A0 = 0 And A1 = 0 And A2 = 0 And A3 = 0 'an Q0 Led1 Alias A0 = 1 And A1 = 0 And A2 = 0 And A3 = 0 'an Q1 Led2 Alias A0 = 0 And A1 = 1 And A2 = 0 And A3 = 0 'an Q2 Led3 Alias A0 = 1 And A1 = 1 And A2 = 0 And A3 = 0 'an Q3 Led0 = 0 Led1 = 0 Led2 = 0 Led3 = 0 'Hauptprogramm Do Led0 = 1 Wait 1 Led0 = 0 Led1 = 1 Wait 1 Led1 = 0 Loop 'usw halt End
Mfg
Stefan
eventuell so ...
dann kannst du dir die ganzen Definitionen sparen.Code:Dim Led As Byte Do If Led < 16 Then Incr Led Else Led = 0 Porta.0 = Led.0 Porta.1 = Led.1 Porta.2 = Led.2 Porta.3 = Led.3 Wait 1 Loop
Sorry, aber das versteh ich nicht ganz.
Ich hab ja am Multiplexer 4 Eingänge mit denen (je nach Bitmuster) ich eine von 16 Ausgängen schalten kann.
Aber ich will nicht jedesmal
A0 = 0
A1 = 0
A2 = 0
A3 = 0
schreiben damit LED1 an geht.
Ich will halt haben, das wenn ich ihm sage
LED1 = 1
er den oberen Ablauf jedesmal automatisch macht.
Hab ihn jetzt mal manuell angesteuert.
Do
A0 = 0
A1 = 1
A2 = 0
A3 = 0
Waitms 500
A0 = 1
A1 = 0
A2 = 1
A3 = 1
Waitms 500
Loop
Allerdings hängt sich das Ding öfters auf.
Wenn ich mich über die Schaltung beuge geht es.
Versteh ich nicht.
Ist das ding so emfindlich oder hat das was gegen mich -.-
[was verstehst du daran nicht ?Sorry, aber das versteh ich nicht ganz.
Porta (A0-A3) übernimmt das Bitmuster von der Variablen "LED".
1. Durchlauf: Bitmuster = 0001 / Ausgang Q0 = High (LED0=1)
2. Durchlauf: Bitmuster = 0010 / Ausgang Q1 = High (LED1=1)
3. Durchlauf: Bitmuster = 0011 / Ausgang Q2 = High (LED2=1)
...
16. Durchlauf: Bitmuster = 1111 / Ausgang Q15 = High (LED16=1)
PS:
Wen stellt eigendlich dein Avatar dar ? Sieht fast wie Lenin aus.
Stromberg aus ProSieben.
Oky ich teste es gleich mal.
Jo geht, auch wenn ich es noch nicht ganz versteh,
Was bewirkt Porta.0 = Led.0? Led zählst du hoch ist kla, d
ann hättest du doch 1.0?
Porta.0 = 1.0 ?!
Sorry blick da noch nicht so durch!
Wie geht es jetzt bei Led.4 weiter?
Enable muss doch auf GND, außer bei Q1 da muss es auf Vcc oder?
Was ist mit Latch enable input, hab das unbenutzt.
Der 74HC4514 arbeitet Binär und du rechnest Dezimal.
Das ist der Denkfehler.
Gruß
Ratber
Ja genau das mein ich ja.
Daher hab ich es auch nicht verstanden.
ich hab doch 4 Eingänge die je low/high sein können.
Aber ich hab jetzt noch immer 2 Probleme.
1. Was mache ich mit LE?
2. Ist das Problem noch immer nicht gelöst.
Jedesmal wenn eine Led angeschaltet werden soll muss ich "per hand" alle 4 Ausgänge setzen.
Mfg
Stefan
Achja, die Ausgänge sollten doch LEDs verkraften können oder?
Find da irgentwie nichts zu.
LE schaltet das Bitmuster an den 4 Eingängen aktiv.
Damit verhinderst du zb. zufällige Bitmuster wenn er an nem Bus hängt..
Bei einer Anwendung ist das aber uninteressant.
Kannst ihn dauerhaft Akiv lassen.(Sag ich jetzt ohne ins Datenblatt geschaut zu haben)
Verknüf doch einfach eine Variable mit dem ganzen Port.Ist das Problem noch immer nicht gelöst.
Jedesmal wenn eine Led angeschaltet werden soll muss ich "per hand" alle 4 Ausgänge setzen.
Dann gibst du nur noch an welche leuchten soll.
Also LED= 5 bringt LED 5 zum Leuchten,LED 16 schaltet LED16 an usw.
Ganz einfach.
Gruß
Ratber
Lesezeichen