Aber muss ich nicht das gesamte Byte zum 74595 übertragen? Weil du schreibst nur das eine Bit.... ?????
Einlesen von Tastern und ausgabe je über Schiebregister
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.
Hinweis kann nach Kenntnisnahme deaktiviert werden!
-
-
Schon, deshalb schiebst du ja 8 bit rein. Nur für jedes bit musst du mit dem clock zappeln
for x =7 to 0 step-1
daten=datenbyte.x
clock=1:clock=0
next x
latch=1:latch=0Raum für Notizen
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------- -
machst Du ja dann auch.
Jetzt überträgst Du Bit nach Bit und das für 8 Bits.
Mit for hast Du eine Achter-Forschleife, durch die die 8 Bits des Byte übertragen werden. Das Schieberegister sieht dasselbe wie jetzt. -
Und was ich in das schieberegister schiebe lege ich als Byte in einer Variable ab. Stimmt das so?
-
Ganz genau.Raum für Notizen
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------- -
Noch was nebenher, was für dein Projekt auch interessant sein könnte:
du hast es vielleicht im Datenblatt gelesen, die Ausgänge sind 'tristate'. Das bedeutet, die können 3 'Zustände' einnehmen:
low, es kann Strom über den pin nach Gnd fließen
high, es kann Strom aus dem pin fließen
und wenn oe=1 ist, wird der Ausgang hochohmig.
Wenn du wie irgendwo erwähnt noch Leds zur Statusanzeige verwenden willst, kannst du von Vcc zB. eine grüne Led über einen Vorwiderstand an den Ausgang anschließen und an demselben Ausgang eine rote Led mit Vorwiderstand gegen Gnd. Wird der Ausgang auf high gesetzt, leuchtet die rote Led, wird er auf low gesetzt, leuchtet die grüne Led.
Nur der hochohmige Zustand ist blöd und kann vermieden werden, da würden beide Leds mehr oder weniger hell leuchten.
Aber achte auf die Gesamtbelastung des chips, lowcurrent Leds wären angebracht.Raum für Notizen
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------- -
Das ist ne Super Idee ich danke dir für den Tip. Dadurch könnte ich die 74595 Für die Anzeige um die Hälfte reduzieren.
Das werde ich auf alle fälle mal testen.
Jetzt werde ich aber erst mal versuchen das mit der Variable umzusetzen. -
BASCOM-Quellcode
- $regfile = "m328pdef.dat"
- $crystal = 16000000
- $framesize = 50
- $hwstack= 50
- $swstack=50
- 'pinb.2 ist shcp clock
- 'Pinb.3 ist stcp latch
- 'Pinb.4 ist ds daten
- config portb.2 = output
- config portb.3 = output
- config Portb.4 = output
- clock alias portb.2 'pin 11 74hc595
- latch alias portb.3 'pin 14 74hc595
- daten alias portb.4 'pin 12 74hc595 '01001010
- clock=0
- latch=0
- daten=0
- dim anzeige_1 as byte
- dim anzeige_2 as byte
- dim x as byte
- anzeige_1= 00000011
- anzeige_2= 11000000
- do
- for x = 7 to 0 step 1
- daten = Anzeige_1
- clock=1 : clock=0
- next x
- latch=1 : latch=0
- wait 1
- for x =7 to 0 step 1
- daten=anzeige_2
- clock=1 : clock=0
- next x
- latch=1 : latch=0
- wait 1
- loop
- end
Error : 49 Line : 28 Value doesn't fit into BYTE [11000000] , in File : F:\Steuerung\Code\noname8.bas -
-
Oh danke. Wusste da war noch was.
Ist aber noch irgendwo ein Fehler?
wenn ich Step - 1 nehme dann blinken alle. hm.... irgendwas haut mit den Variablen noch nicht hin... *grübel* -
ja
-
Stimmt wenn man es nicht selbst geschrieben hat muss man es auch min. drei mal lesen
@Acki
bei
For x = 7 to 0 Step 1 musst du Step -1 schreiben, denn es soll ja rückwärts zählen.Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem. -
hm.... nur was
das habe ich ja schon gemacht...
Acki schrieb:
Oh danke. Wusste da war noch was.
Ist aber noch irgendwo ein Fehler?
-
djmsc schrieb:
Hallo Acki
daten = Anzeige_1.x
Meine damiet geht es zwar aber was hat es zu bedeuden? -
@Acki
Nochmal etwas zum Verständnis:
&B 0 0 0 0 0 0 0 0
= Bit 7 6 5 4 3 2 1 0
Heisst: Ganz rechts ist das Bit 0 das als erstes Bit im Schieberegister ist und 0 oder 1 sein kann.
Das erste Bit im Schieberegister ist ebenfalls das Bit 0 bzw. der Ausgang Q0.
Bei jedem weiteren Takt wird das Bit immer um eine Stelle im Schieberegister weiter geschoben.
Was vorher im Schieberegister bei Q0/Bit0 anlag geht dann zu Q1/Bit1 usw.Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem. -
Das .x steht für das einzelne Bit welches du auf den Dateneingang des Schieberegisters legst.
Vorher hattest du ja
Daten = 0
Daten = 1
Da "Daten" nur ein Port-Pin ist kann dieser auch nur zwei Zustände - 0 und 1. Also auch nur ein Bit.
Du muss also das Byte in einzelne Bit's zerlegen und das geht mit Bytevariable.x.Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von djmsc ()
-
Soweit habe ich das begriffen.
Ist das dann immer .x ? -
Nein das x kann auch jeder andere Buchstabe sein den du mit DIM deklariert hast.
DIM i as Byte
For i = 7 to 0 Step -1
Daten = Bytevar.i
Next i
geht also auch.Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem. -
Verstehe. Es hängt also immer mit der Variable zusammen die nach "For" steht. Richtig?
-
Das Programm sieht jetzt übrigens so aus und es funktioniert. *freu*
BASCOM-Quellcode
- $regfile = "m328pdef.dat"
- $crystal = 16000000
- $framesize = 50
- $hwstack= 50
- $swstack=50
- 'pinb.2 ist shcp clock
- 'Pinb.3 ist stcp latch
- 'Pinb.4 ist ds daten
- config portb.2 = output
- config portb.3 = output
- config Portb.4 = output
- clock alias portb.2 'pin 11 74hc595
- latch alias portb.3 'pin 14 74hc595
- daten alias portb.4 'pin 12 74hc595 '01001010
- clock=0
- latch=0
- daten=0
- dim anzeige_1 as byte
- dim anzeige_2 as byte
- dim x as byte
- anzeige_1= &B00000011
- anzeige_2= &B11000000
- do
- for x = 7 to 0 step -1
- daten = Anzeige_1.x
- clock=1 : clock=0
- next x
- latch=1 : latch=0
- wait 1
- for x =7 to 0 step -1
- daten=anzeige_2.x
- clock=1 : clock=0
- next x
- latch=1 : latch=0
- wait 1
- loop
- end