Hier nochmal in "zerhackstückselt" und mit Einrückungen
Immerhin sind mir noch sinnvolle Änderungen eingefallen (der Code ist nicht richtig kompatibel zu den Routinen oben).
Hier zum Senden. In der Hauptschleife, die jetzt die ganze Zeit das gleiche sendet, fügst du dann ein, was auch immer du dir als Anwendung überlegt hast.
Code:
$regfile = "2313def.dat"                                    'AT90S2313 natürlich muss hier die Definitionsdatei für deinen AVR hin
$crystal = 8000000                                          'Und hier deine Taktfrequenz

'Konstanten
Const Startbyte = 00000001
Const Stopbyte = 00000011

'Variablen
Dim Zaehl As Byte : Dim Temp As Byte
Dim Zusenden As Byte

Ports sind willkürlich gewählt
Ddrb.1 = 1                                                  'PortB.1 auf Ausgang
Do
    Zusenden = 54                                           'Sendet erstmal einfach jede Sekunde 54
    Gosub Senden
    Waitms 760                                              'Wartet den Rest der Sekunde, den das Senden nicht gedauert hat
    Loop

Senden:
    Temp = Zusenden                                         'Zu sendendes Byte sichern, da die Variable Zusenden mehrfach benutzt wird
    Zusenden = Startbyte
    Gosub Bytesenden
    Zusenden = Temp
    Gosub Bytesenden
    Zusenden = Stopbyte
    Gosub Bytesenden
    Return

Bytesenden:
    For Zaehl = 0 To 7
    Portb.1 = Zusenden.zaehl
    Waitms 10
    Next
    return
    End
Und hier zum Empfangen (in der Hauptschleife kannst du wieder die gewünschte Auswertung einfügen.)
Code:
$regfile = "2313def.dat"                                    'AT90S2313 natürlich muss hier die Definitionsdatei für deinen AVR hin
$crystal = 8000000                                          'Und hier deine Taktfrequenz

'Konstanten
Const Stopbyte = 00000011

'Variablen
Dim Fehler As Bit
Dim Zaehl2 As Byte : Dim Temp As Byte                       'Nur zum Zaehlen im Interrupt - nicht woanders benutzen, da es plötzlich auf 7 wechseln könnte. Temp ändert sich auch(höchstwahrscheinlich) bei jedem Interrupt
Dim Gelesen As Byte
Enable Int0
Config Int0 = Falling
On Int0 Onint0 Nosave
Enable Interrupts
Ddrd.2 = 0                                                  'PortD.2 auf Eingang - Der Port sollte zu dem Interrupt gehören, über den empfangen wird
Do
    If Gelesen = 4 Then Portb.5 = 1 Else Portb.5 = 0        'Hier kannst du den empfangenen Wert auswerten
    Loop

Onint0:                                                     'löst das erste mal aus, wenn das Startbyte vorbei ist(dafür würde auch ein Bit genügen. Ist schlecht für die Fehlerkorrektur...)
    Waitms 5                                                'jetzt sind wir in der Mitte des ersten Datenbits...
    Gosub Bytelesen                                         'und lesen die anderen
    Temp = Gelesen                                          'Hier sind wir in der Mitte des ersten Bit des Stopbytes...
    Gosub Bytelesen                                         ' ...und lesen es
    If Gelesen <> Stopbyte Then Fehler = 1 Else Fehler = 0  'Für ein Minimun an Fehlererkennung kannst du in Fehler abfragen, ob das Stopbyte korrekt empfangen wurde
    Gelesen = Temp                                          'In Gelesen steht jetzt der empfangene Wert
    Waitms 5
    Return

Bytelesen:
    For Zaehl2 = 0 To 7
    Gelesen.zaehl2 = Portd.2
    Waitms 10
    Next
    Return
End
PS: Deine Antwort kam so schnell, dass ich mir kaum vorstellen kann, dass du wirklich den ganzen Code durchgegangen bist und in der Hilfe alles nachgeschlagen hast, was nicht klar war.