So ich habs jetzt mal zusammenkopiert, wie ich mir das vorstelle.
Ich glaube jedoch nicht, dass das jetzt aufs erste Mal funktioniert - vielleicht sieht ja jemand anderes den Thread hier noch und kann schnell mal drüber schauen.
Aber probieren kann mans ja:
Der Sendecode:
Code:
$regfile = "m8def.dat"
$crystal = 12000000
Dim Daten As Byte
Dim A As Integer
Dim Send as Byte
Dim toggle as Byte
Config Portb = Output
Mainloop:
Waitms 1000
Daten = 170
'Sende Startbedingung
send = 1
waitms 10
send = 0
For A = 1 To 8
If Daten.0 = 1 Then
Send = 1
Else
Send = 0
End If
rotate Daten , Right , 1
Waitms 500
Next A
Goto Mainloop
[[[[ DIESE FUNKTION MUSS ALLE 1 / 72000 s AUFGERUFEN WERDEN ]]]]]
if send = 1 Then
if toggle = 0 Then
toggle = 1
PORTb.0 = 1
else
toggle = 0
PORTb.0 = 0
end if
else
Portb.0 = 0
end if
Und der Empfangscode:
Code:
$regfile = "m8def.dat"
$crystal = 12000000
Dim A As Integer
Dim Rxdaten As Byte
Dim Zustand As Integer
Config Portd = Input
Config Portb = Output
Mainloop:
startLoop:
if PORTB.0 = 1 Then
waitms(52)
if NOT PORTB.0 = 0 Then
goto startLoop
end if
else
goto startLoop
end if
waitms 10
For A = 1 To 8
If PINb.0 = 0 Then
Rxdaten.0 = 0
Else
Rxdaten.0 = 1
End If
rotate Rxdaten , Left , 1
Waitms 500
Next A
PORTD = Rxdaten 'Ausgabe des gesendeten Bytes
Goto Mainloop
Der Sendecode sendet alle 5050 ms die Befehle.
Dabei dauert ein Bit 500 ms und die Startbedinung 50 ms.
Vor jedem senden wird 1000 ms gewartet.
Das empfangene Byte wird an PORT D angelegt. D.h. den musst du noch auf Ausgang schalten (weiß ich nicht wie ...).
Grüße
Flite
Lesezeichen