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
schau Dir den Code mal an ,im groben läuft er.Aber wenn ich dieCode:$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
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.







Zitieren

Lesezeichen