Ich habe das mal auf das Notwendigste abgespeckt:

Sender:
Code:
$regfile = "m128def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600

Config Pinc.6 = Output
Config Pine.2 = Output
Config Graphlcd = 240 * 64 , Dataport = Portd , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6

Dim A As Byte

Bl Alias Portc.6
Rs485 Alias Porte.2
Bl = 1

Rs485 = 1                               'Senden

Cursor Off
Cls
Locate 1 , 1
Lcd "RS485 Sender"

A = 128

Do
 Printbin A
 Waitms 500
Loop

End
Empfaenger:
Code:
$regfile = "m128def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600

Config Pinc.6 = Output
Config Pine.2 = Output
Config Graphlcd = 240 * 64 , Dataport = Portd , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6
Rs485 Alias Porte.2
Enable Interrupts
Enable Urxc
On Urxc Isrlabel

Dim A As Bit , Db As Byte

Bl Alias Portc.6                        ' Hintergrundbeleuchtung LC-Display
Bl = 1
A = 0

Rs485 = 0                               'Empfangen

Cursor Off
Cls
Locate 1 , 1
Lcd "RS485 Empfaenger"

Do
 If A = 1 Then
  Locate 4 , 1
  Lcd Db
  A = 0
 End If
Loop

End

Isrlabel:
 Db = Udr
 A = 1
Return
Es wird nur ein einziges Byte (128) uebertragen. Sobald der UART ein Zeichen empfaengt wird ein Interrupt ausgeloest. In der Urxc-Isr wird dann das Byte ausgelesen (Db=UDR). Und das war's dann auch schon. Eigentlich total simpel.

Mit freundlichen Gruessen
Digitali