Hallo Marco,
Du hast natürlich recht .Manches kann man nur im Zusammenhang
erkennen.
Es wird ein Durchgangsprüfer fur 5 pol Verlängerungsleitungen.
Grunidee:
1.Messzyklus PE Leiter Portx = 1
-nur ein Pin darf H haben wenn nicht "Kurzschluss"
wenn ja, der richtige?wenn nicht "Unterbrechung"
sonst " SL OK"
Portx = 0
2.Messzyklus N-Leiter .....wie oben
3.Messzyklus L1-Leiter ....wie oben
" L1-L1 "( L1-L2 ,L1-L3)
4.Messzyklus L2......
5.Messzyklus L3......
6.Messzyklus Drehfeld
Code:
 $regfile = "attiny2313.dat"                                'AT90S2313-Deklarationen
$crystal = 9216000                                          'Verwendeter Quarz: 9,2160 MHz
$baud = 9600



Ddrb = &B11100000
Portb = &B00011111
Ddrd = &B1111100
E1 Alias Pinb.0
E2 Alias Pinb.1
E3 Alias Pinb.2
E4 Alias Pinb.3
E5 Alias Pinb.4
'$hwstack = 32
'$swstack = 8
'$framesize = 16
'Config Serialout = Buffered , Size = 10
Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
Dim B As Byte
Dim D As Byte
Dim Summe As Byte
Declare Sub Summe
Declare Sub Leiter

Do
'Waitms 100
Portd.2 = 1
Summe
 Print Summe
 If Pinb.0 = 1 Then
  Printbin &H04 ; &H53 ; &H04 ; &H00 ; &H53;                'Kursor
  Printbin &H08 ; &H50 ; &H50 ; &H45 ; &H2D ; &H20 ; &H4F ; &H4B ; &H44;       'PE- OK
  Else
  Do
  Printbin &H04 ; &H53 ; &H03 ; &H00 ; &H54;                'Kursor
  Printbin &H0A ; &H50 ; &H50 ; &H45 ; &H2D ; &H42 ; &H72 ; &H75 ; &H63 ; &H68 ; &H2C;       'PE- Bruch
  Loop
 End If
Portd.2 = 0

Portd.3 = 1
 Summe
 If Pinb.1 = 1 Then
  Printbin &H04 ; &H53 ; &H04 ; &H01 ; &H52;                'Kursor
  Printbin &H08 ; &H50 ; &H4E ; &H4C ; &H2D ; &H20 ; &H4F ; &H4B ; &H53;       'NL- OK
  Else
  Do
  Printbin &H04 ; &H53 ; &H03 ; &H01 ; &H55;                'Kursor
  Printbin &H0A ; &H50 ; &H4E ; &H4C ; &H2D ; &H42 ; &H72 ; &H75 ; &H63 ; &H68 ; &H3B;       'NL- Bruch
  Loop
 End If
Portd.3 = 0
'Wait 1

Portd.4 = 1
 Summe
 Printbin &H04 ; &H53 ; &H04 ; &H02 ; &H51;                 'Kursor
 Printbin &H04 ; &H50 ; &H4C ; &H31 ; &H29;                 'L1
 Leiter
Portd.4 = 0
'Wait 1

Portd.5 = 1
 Summe
 Printbin &H04 ; &H53 ; &H04 ; &H03 ; &H50                  ';                 'Kursor
 Printbin &H04 ; &H50 ; &H4C ; &H32 ; &H2A;                 'L2
 Leiter
Portd.5 = 0
'Wait 1

Portd.6 = 1
 Summe
 Printbin &H04 ; &H53 ; &H04 ; &H04 ; &H57;                 'kursor
 Printbin &H04 ; &H50 ; &H4C ; &H33 ; &H2B;                 'L3
 Leiter
Portd.6 = 0
'Wait 1
                                                             'Drefeld
Portd.4 = 1
Portd.5 = 1
Portd.6 = 1
If Pinb.2 = 1 Then
 D = 100
 Gosub Drehfeld
 End If
If D = 123 Then
 Print "rechts"
Else
 Print "links"
End If
'Wait 1
Loop
End

Sub Summe
 B = E1 + E2
 B = B + E3
 B = B + E4
 Summe = B + E5
 If Summe >= 5 Then

   Printbin &H02 ; &H43 ; &H41;
   Do                                                       'Löschen
   Wait 1
   Printbin &H04 ; &H53 ; &H02 ; &H03 ; &H56;
   Printbin &H0D ; &H50 ; &H4B ; &H75 ; &H72 ; &H7A ; &H73 ; &H63 ; &H68 ; &H6C ; &H75 ; &H73 ; &H73 ; &H0A;       'Kurzschluss
   Wait 1
  Loop
 End If
End Sub

Sub Leiter
If Pinb.2 = 1 Then
  'Printbin &H04 ; &H53 ; &H06 ; &H02 ; &H53;
  Printbin &H05 ; &H50 ; &H2D ; &H4C ; &H31 ; &H05;         '-L1
 Elseif Pinb.3 = 1 Then
  'Printbin &H04 ; &H53 ; &H06 ; &H03 ; &H52;
  Printbin &H05 ; &H50 ; &H2D ; &H4C ; &H32 ; &H06;         '-L2
 Elseif Pinb.4 = 1 Then
  'Printbin &H04 ; &H53 ; &H06 ; &H04 ; &H55;
  Printbin &H05 ; &H50 ; &H2D ; &H4C ; &H33 ; &H07;         '-L3
 Else
   Printbin &H02 ; &H43 ; &H41;
   Wait 1
   Do
   Printbin &H04 ; &H53 ; &H02 ; &H03 ; &H56;
   Printbin &H0D ; &H50 ; &H4C ; &H65 ; &H69 ; &H74 ; &H65 ; &H72 ; &H62 ; &H72 ; &H75 ; &H63 ; &H68 ; &H10 ;       'Leiterbruch
  Loop
 End If
End Sub

Drehfeld:
Do
If Pinb.2 = 1 Then D = D + 23
If Pinb.3 = 1 Then D = D + 32
Loop Until D > 100
Return
schau Dir den Code mal an ,im groben läuft er.Aber wenn ich die
Pullupwiderstände einschalte,geht es auf Kurzschluss.Aber das ist wohl klar da alle Pins auf 1 gesetzt werden.
Da die Ausgänge 1 zuschalten und die Eingänge auf 0 geschaltet werden
müssen ist ein Simulation nur bedingt möglich.
Schau es Dir an und sag ich soll es wegschmeissen.
Ausgabe erfolgt über ein Miniteminal,deshalb der Hexcode.


W.