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