Jo. also beim Sender sieht der Code wie folgt aus:

Code:
$regfile = "M8def.dat"                                      ' the used chip
$crystal = 16000000                                         ' frequency used
$baud = 9600                                                 ' baud rate
$framesize = 48                                             ' die Größe des Frames
$swstack = 32                                               ' die Größe des Software-stacks
$hwstack = 32                                               ' die Größe des Hardware-Stacks

Config Timer0 = Timer , Prescale = 1                        'Timer0 einstellen
On Timer0 Fmod                                              'wenn Timer0 überläuft zum Modulationsinterrupt springen

Config Pind.6 = Output                                      'Led anschluss
Config Pind.7 = Output                                      'Sw UART pin


Portd.6 = 0
Portd.7 = 0

Enable Interrupts

Print "hallo computer"

Dim T0preset As Byte                                        'Timervorladewert
T0preset = 140

Enable Timer0
Open "comd.7:300,8,n,1" For Output As #1                    'Software UART auf Portd.7 erzeugen



Do
    Print "sende"
    Print #1 , "hallo"                                      '"hallo" auf Portd.7 ausgeben
    Waitms 500

Loop

Fmod:

     Toggle Portd.6

     If Pind.7 = 1 Then
       Timer0 = 0                                           'niedrige Frequenz erzeugen, die nicht vom TSOP erkannt wird
     Else
      Timer0 = T0preset                                     '~38kHz ausgangsfrequenz erzeugen
     End If

Return

End
Die Led hängt (natürlich mit vorwiderstand) an Portd.6 .
Immer wenn der Timer überläuft, wird der Zustand des Ports gewechselt.
Lässt man den Timer bei ~115 starten, würde sich theoretisch eine Frequenz von 38kHz ergeben. In der Praxis hat sich erwiesen das es mit werten um 140 funktioniert, vermutlich weil der interrupt selber auch Zeit verbraucht.
Auf Portd.7 habe ich nun ein Software UART gelegt und stelle im Timer0 interrupt, je nachdem welchen Zustand der Pd.7 hat, den startwert vom Timer dementsprechend ein. Bei Pind.7 = 0 startwert 140, damit ergibt sich die vom TSOP benötigte frequenz, dieser erkennt das und schaltet seinen ausgang dementsprechend auch auf 0.
Ist Pind.7 =1 wird ein anderer startwert gewählt, wodurch eine andere frequenz als ~38kHz entsteht und der TSOP auf 1 schaltet.
Mit dem TSOP an einem anderen µC als empfänger müsste das so eigentlich funktionieren.
Tut es leider aber noch nicht, wobei ich es auch seitdem erst einmal ausprobiert habe. 0 oder 1 wird korrekt übertragen (einfach per led am tsop zu testen), aber mit UART kommt nur müll an.
Meine Vermutung dazu ist, dass durch den relativ häufigen aufruf des Timer interrupts der µC, bzw. vielmehr Bascom, mit dem Timing des UART durcheinander kommt. Um dies testen zu können muss ich dann wohl doch auf Hardwareseitige Modulation über NE555 umsteigen.
Möglicherweise hilft aber auch etwas feintuning.