Hallo,

Soll ich wirklich den ganzen Code posten?
Sind fast 700 Programmzeilen.
(Habe einen Teil gelöscht, da ich über die Max Zeichengröße des Betrages gekommen bin.)

Hier die Empfängerplatine:
Code:
$regfile = "m16def.dat"
   $crystal = 8000000

   Config Porta = Input
   Config Portb = Input
   Config Portc = Output
   Config Portd = Input

   Dim Timer As Word
   Timer = 55800
   Config Timer1 = Timer , Prescale = 1024
   Enable Timer1
   On Timer1 Sekundentakt
   Enable Interrupts
   Timer1 = Timer

   Tasterx1hoch Alias Pina.6
   Tasterx1runter Alias Pina.5
   Tasterx2hoch Alias Pina.2
   Tasterx2runter Alias Pina.1
   Tasterx3hoch Alias Pind.5
   Tasterx3runter Alias Pind.4
   Tasterx4hoch Alias Pind.1
   Tasterx4runter Alias Pind.0
   Tasteralleshoch Alias Pind.7
   Tasterallesrunter Alias Pina.7

   Relaisx1hoch Alias Portc.4
   Relaisx1runter Alias Portc.3
   Relaisx2hoch Alias Portc.5
   Relaisx2runter Alias Portc.2
   Relaisx3hoch Alias Portc.6
   Relaisx3runter Alias Portc.1
   Relaisx4hoch Alias Portc.7
   Relaisx4runter Alias Portc.0

   Eingang1 Alias Pinb.0
   Eingang2 Alias Pinb.1
   Eingang3 Alias Pinb.2
   Eingang4 Alias Pinb.3
   Eingang5 Alias Pinb.4
   Eingang6 Alias Pinb.5
   Eingang7 Alias Pinb.6
   Eingang8 Alias Pinb.7

   Dim X1hoch As Word
   Dim X2hoch As Word
   Dim X3hoch As Word
   Dim X4hoch As Word

   Dim X11hoch As Word
   Dim X21hoch As Word
   Dim X31hoch As Word
   Dim X41hoch As Word

   Dim X13hoch As Bit
   Dim X23hoch As Bit
   Dim X33hoch As Bit
   Dim X43hoch As Bit

   Dim X13runter As Bit
   Dim X23runter As Bit
   Dim X33runter As Bit
   Dim X43runter As Bit

   Dim X1runter As Word
   Dim X2runter As Word
   Dim X3runter As Word
   Dim X4runter As Word

   Dim X11runter As Word
   Dim X21runter As Word
   Dim X31runter As Word
   Dim X41runter As Word

   Dim Zeitx1hoch As Byte
   Dim Zeitx1runter As Byte
   Dim Zeitx2hoch As Byte
   Dim Zeitx2runter As Byte
   Dim Zeitx3hoch As Byte
   Dim Zeitx3runter As Byte
   Dim Zeitx4hoch As Byte
   Dim Zeitx4runter As Byte

   Dim Alleshoch As Bit
   Dim Allesrunter As Bit

   Dim X1ganzhoch As Bit
   Dim X1ganzrunter As Bit
   Dim X2ganzhoch As Bit
   Dim X2ganzrunter As Bit
   Dim X3ganzhoch As Bit
   Dim X3ganzrunter As Bit
   Dim X4ganzhoch As Bit
   Dim X4ganzrunter As Bit

   Dim A As Byte

   Relaisx1hoch = 0                               'Relais X1 hoch aus
   Relaisx1runter = 0                             'Relais X1 runter aus
   Relaisx2hoch = 0                               'Relais X2 hoch aus
   Relaisx2runter = 0                             'Relais X2 runter aus
   Relaisx3hoch = 0                               'Relais X3 hoch aus
   Relaisx3runter = 0                             'Relais X3 runter aus
   Relaisx4hoch = 0                               'Relais X4 hoch aus
   Relaisx4runter = 0                             'Relais X4 runter aus

   Zeitx1hoch = 10                                'wielange soll X1 hoch an bleiben
   Zeitx1runter = 10                              'wielange soll X1 runter an bleiben
   Zeitx2hoch = 10                                'wielange soll X2 hoch an bleiben
   Zeitx2runter = 10                              'wielange soll X2 runter an bleiben
   Zeitx3hoch = 10                                'wielange soll X3 hoch an bleiben
   Zeitx3runter = 10                              'wielange soll X3 runter an bleiben
   Zeitx4hoch = 10                                'wielange soll X4 hoch an bleiben
   Zeitx4runter = 10                              'wielange soll X4 runter an bleiben

   X1hoch = 2
   X2hoch = 2
   X3hoch = 2
   X4hoch = 2

   X11hoch = 1
   X21hoch = 1
   X31hoch = 1
   X41hoch = 1

   X13hoch = 0
   X23hoch = 0
   X33hoch = 0
   X43hoch = 0

   X1runter = 2
   X2runter = 2
   X3runter = 2
   X4runter = 2

   X11runter = 1
   X21runter = 1
   X31runter = 1
   X41runter = 1

   X13runter = 0
   X23runter = 0
   X33runter = 0
   X43runter = 0

   Alleshoch = 0
   Allesrunter = 0

   X1ganzhoch = 0
   X1ganzrunter = 0
   X2ganzhoch = 0
   X2ganzrunter = 0
   X3ganzhoch = 0
   X3ganzrunter = 0
   X4ganzhoch = 0
   X4ganzrunter = 0

'-------------------------------------------------------------------------------
'    S T A R T    H A U P T P R O G R A M M
'-------------------------------------------------------------------------------
Start:
Do
   
'-------------------------------
'   I N P U T B I N T E S T
'-------------------------------
    Toggle Led1                                   ' Testweise
    Inputbin #1 , A
    If A = 10 Then Goto XYZ 

   If Relaisx1hoch = 0 And Relaisx2hoch = 0 And Relaisx3hoch = 0 And Relaisx4hoch = 0 Then
      Alleshoch = 0
      X13hoch = 0
      X23hoch = 0
      X33hoch = 0
      X43hoch = 0
   End If

   If Relaisx1runter = 0 And Relaisx2runter = 0 And Relaisx3runter = 0 And Relaisx4runter = 0 Then
      Allesrunter = 0
      X13runter = 0
      X23runter = 0
      X33runter = 0
      X43runter = 0
   End If

   Debounce Tasterx1hoch , 0 , X1hoch , Sub       'Tasterabfrage
   Debounce Tasterx1runter , 0 , X1runter , Sub
   Debounce Tasterx2hoch , 0 , X2hoch , Sub
   Debounce Tasterx2runter , 0 , X2runter , Sub
   Debounce Tasterx3hoch , 0 , X3hoch , Sub
   Debounce Tasterx3runter , 0 , X3runter , Sub
   Debounce Tasterx4hoch , 0 , X4hoch , Sub
   Debounce Tasterx4runter , 0 , X4runter , Sub
   Debounce Tasteralleshoch , 0 , Alleshoch , Sub
   Debounce Tasterallesrunter , 0 , Allesrunter , Sub


   If X1hoch = X11hoch Then                       'Relais aus, wenn Zeit um
      Relaisx1hoch = 0
      X11hoch = 1
      X1ganzhoch = 1
   End If

   If X2hoch = X21hoch Then                       'Relais aus, wenn Zeit um
      Relaisx2hoch = 0
      X21hoch = 1
      X2ganzhoch = 1
   End If

   If X3hoch = X31hoch Then                       'Relais aus, wenn Zeit um
      Relaisx3hoch = 0
      X31hoch = 1
      X3ganzhoch = 1
   End If

   If X4hoch = X41hoch Then                       'Relais aus, wenn Zeit um
      Relaisx4hoch = 0
      X41hoch = 1
      X4ganzhoch = 1
   End If

   If X1runter = X11runter Then                   'Relais aus, wenn Zeit um
      Relaisx1runter = 0
      X11runter = 1
      X1ganzrunter = 1
   End If

   If X2runter = X21runter Then                   'Relais aus, wenn Zeit um
      Relaisx2runter = 0
      X21runter = 1
      X2ganzrunter = 1
   End If

   If X3runter = X31runter Then                   'Relais aus, wenn Zeit um
      Relaisx3runter = 0
      X31runter = 1
      X3ganzrunter = 1
   End If

   If X4runter = X41runter Then                   'Relais aus, wenn Zeit um
      Relaisx4runter = 0
      X41runter = 1
      X4ganzrunter = 1
   End If

Loop

'-------------------------------------------------------------------------------
'    K L E M M E    X 1
'-------------------------------------------------------------------------------
X1hoch:
   If Alleshoch = 1 And X13hoch = 1 Then Goto Weiterx1hoch
   If Relaisx1hoch = 1 And Alleshoch = 1 Then Goto X2hoch       'Relais bleibt an, wenn alles hoch gedrückt wird

Weiterx1hoch:
   If Relaisx1runter = 1 Then                     'Relais aus, wenn gegenüberliegende gedrückt wird
      Relaisx1runter = 0
      X13runter = 1
      X11runter = 1
      Goto Start
   End If

   If Relaisx1hoch = 1 Then                       'Relais aus, wenn wiederholt gedrückt wird
      Relaisx1hoch = 0
      X11hoch = 1
      Goto Start
   End If

   If X1ganzhoch = 1 And Alleshoch = 1 Then Goto X2hoch

   If X1ganzhoch = 1 Then Goto X1runter

   Relaisx1hoch = 1                               'Relais X1 Hoch zieht an
   X1ganzrunter = 0
   X11hoch = X1hoch + Zeitx1hoch                  'Laufzeitermittlung
   If X11hoch > 65000 Then                        'Überlaufsperre
      X1hoch = 1                                  'Überlaufsperre
      X11hoch = Zeitx1hoch                        'Überlaufsperre
   End If

   If X13hoch = 1 Then Goto Start

   If Alleshoch = 1 Then
      Waitms 200
      Goto X2hoch
   End If

   Goto Start

X1runter:
   If Allesrunter = 1 And X13runter = 1 Then Goto Weiterx1runter
   If Relaisx1runter = 1 And Allesrunter = 1 Then Goto X2runter       'Relais bleibt an, wenn alles hoch gedrückt wird

Weiterx1runter:
   If Relaisx1hoch = 1 Then                       'Relais aus, wenn gegenüberliegende gedrückt wird
      Relaisx1hoch = 0
      X13hoch = 1
      X11hoch = 1
      Goto Start
   End If

   If Relaisx1runter = 1 Then                     'Relais aus, wenn wiederholt gedrückt wird
      Relaisx1runter = 0
      X11runter = 1
      Goto Start
   End If

   If X1ganzrunter = 1 And Allesrunter = 1 Then Goto X2runter

   If X1ganzrunter = 1 Then Goto X1hoch

   Relaisx1runter = 1                             'Relais X1 Runter zieht an
   X1ganzhoch = 0
   X11runter = X1runter + Zeitx1runter            'Laufzeitermittlung
   If X11runter > 65000 Then                      'Überlaufsperre
      X1runter = 1                                'Überlaufsperre
      X11runter = Zeitx1runter                    'Überlaufsperre
   End If

   If X13runter = 1 Then Goto Start

   If Allesrunter = 1 Then
      Waitms 200
      Goto X2runter
   End If

   Goto Start
Sekundentakt:
   Timer1 = Timer

   Incr X1hoch
   Incr X2hoch
   Incr X3hoch
   Incr X4hoch

   Incr X1runter
   Incr X2runter
   Incr X3runter
   Incr X4runter

   If X1hoch = 65000 Then X1hoch = 1
   If X2hoch = 65000 Then X2hoch = 1
   If X3hoch = 65000 Then X3hoch = 1
   If X4hoch = 65000 Then X4hoch = 1

   If X1runter = 65000 Then X1runter = 1
   If X2runter = 65000 Then X2runter = 1
   If X3runter = 65000 Then X3runter = 1
   If X4runter = 65000 Then X4runter = 1

   Return
Den Programmcode der Senderplatine habe ich noch nicht fertig.
Hier mal der Anfang zum testen:
Code:
$regfile = "m16def.dat"
$crystal = 8000000

Dim A As Byte

A = 1

   Config Pind.6 = Output
   Config Pind.5 = Input

Open "COMA.7:2400,8,N,1,inverted" For Output As #1       ' PA.7 ist Sender
Open "COMC.6:2400,8,N,1,inverted" For Output As #2       ' PC.6 ist Sender

Start:
Do
  If Pind.5 = 0 Then Goto Senden
Loop

Senden:
   Set Portd.6
   Waitms 500
   Reset Portd.6
   A = 10
  Printbin #1 , A
Goto Start
Wenn ich also auf der Senderplatine den Pind.5 setze, dann sendet er mir die Variable A mit 10 an die Empfängerplatine.
Und wenn die 10 empfangen worden ist, dann soll sie nach XYZ springen.

Das klappt auch alles schp
öm, nur wie beschrieben, der bleibt immer bei Inputbin hängen und ignoriert den Rest.