Hallo Gast!
Das mit dem Byte mit Clock und Bitweise senden ist eigentlich recht einfach. Man baut sich eine Zählschleife auf die das Byte roliert und bei jedem Schritt eben das niederste Bit ausgibt.
Das sendet nun im Sekundentakt die seriellen Daten von 'A' Pause 'B' Pause 'C' Pause ... bis Reset gedrückt wird.Code:Define Daten Port[1] Define Clock Port[2] Define ii Byte[1] Define SendVal Byte[2] Clock = Off Data = Off #MainProg SendVal = 65 GoSub PutVal Pause 50 SendVal = 66 GoSub PutVal Pause 50 SendVal = 67 GoSub PutVal Pause 50 GoTo MainProg #PutVal For ii = 1 To 8 If (SendVal And &H01) = &H01 Then Daten = On Else Daten = Off Pulse Clock SendVal = SendVal Shr 1 Next ii Return
Wegen dem Shr, das ist ein Shift-Befehl rechts um ein Bit. Siehe auch meine Seite: http://www.wieselsworld-online.de/ha...iebeoperatoren
Damit kannst du dein Schieberegister extern mit Daten laden und parallel ausgeben. Ob negative oder positive Flanke ist gleichgültig wegen dem Pulse-Befehl. Die meisten Schieberegister reagieren sowiso auf die fallende Flanke mit der Datenübernahme. Wenn das noch gesetzt werden muss, dann ist der Code abzuändern mit Strobe:
Code:Define Daten Port[1] Define Clock Port[2] Define Strobe Port[3] Define ii Byte[1] Define SendVal Byte[2] Clock = Off Data = Off Strobe = Off #MainProg SendVal = 65 GoSub PutVal Pause 50 SendVal = 66 GoSub PutVal Pause 50 SendVal = 67 GoSub PutVal Pause 50 GoTo MainProg #PutVal For ii = 1 To 8 If (SendVal And &H01) = &H01 Then Daten = On Else Daten = Off Pulse Clock SendVal = SendVal Shr 1 Next ii Pulse Strobe Return
Wenn du Zeit hast probier mal folgende Änderung im Code aus ob das auch funktioniert:
Ich weis nicht ob das CC-Basic packt mit der Compilierung. Probiers einfach mal, ich hab jetzt keine Lust das extra auszuprobieren.Code:#PutVal For ii = 1 To 8 Daten = ((SendVal And &H01) = &H01) Pulse Clock SendVal = SendVal Shr 1 Next ii Return
Grüsse Wolfgang






Zitieren

Lesezeichen