Sprich mit dem Code hier:

Senden von 5 Bytes
Sender:
Code:
Dim Daten(5) As Byte
Dim Minuten As Byte
Dim Sekunden As Byte

Rs485 Alias Porta.6

Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq

Rs485 = 1
Minuten = 0
Sekunden = 0

Daten(1) = 128
Daten(2) = 255
Daten(3) = 1
Daten(4) = 1
Daten(5) = 20

Enable Timer1
Enable Interrupts

Do

If Minuten = 0 And Sekunden = 20 Then
Printbin Daten(1) ; 5
Porta.0 = 1
Waitms 5000
Porta.0 = 0
End If

Loop

Timer_irq:
  Timer1 = Timervorgabe
  Incr Sekunden
  If Sekunden = 60 Then
    Incr Minuten
    Sekunden = 0
  End If
Return
Empfänger:

Code:
Dim A As Bit
Dim B As Byte
Dim Daten(5) As Byte
Dim Datenspeicher(5) As Byte
A = 0

Rs485 = 0

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

Do
 If A = 1 Then
  Locate 2 , 1
  Lcd Datenspeicher(3)
  A = 0
 End If
Loop

End

Isrlabel:
 Daten = Udr
 For B = 1 To 5
   Datenspeicher(b) = Daten(b)
   Daten(b) = 0
 Next B
 If Datenspeicher(1) = 128 And Datenspeicher(2) = 255 Then
 A = 1
 End If

Return
Müsste es so funktionieren ? Also meiner auffassung nach sendet der Sender jetzt hintereinander weg die 5 Byte. Der Empfänger bekommt sie und schreibt sie in die Variable Daten. Dann geht es zu for B = 1 To 5, sprich B bekommt den Wert 1 zugewiesen und damit wird Datenspeicher(1) der Wert von Daten(1) übergeben. Danach wird Daten 1 gelöscht. Bei next geht er wieder zum For nur das B diesmal 2 annimmt und das geht dann weiter bis 5. Wenn dann alle Bytes in den Datenspeicher geschrieben sind, geht die If Anweisung auf und damit wird dann A=1 gesetzt, womit dann die If in der Main aufgeht und Datenspeicher(3) auf dem Display ausgegeben wird.

Sehe ich das soweit richtig ?