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.
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
Das sendet nun im Sekundentakt die seriellen Daten von 'A' Pause 'B' Pause 'C' Pause ... bis Reset gedrückt wird.
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:
Code:
#PutVal
For ii = 1 To 8
Daten = ((SendVal And &H01) = &H01)
Pulse Clock
SendVal = SendVal Shr 1
Next ii
Return
Ich weis nicht ob das CC-Basic packt mit der Compilierung. Probiers einfach mal, ich hab jetzt keine Lust das extra auszuprobieren.
Grüsse Wolfgang
Lesezeichen