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.
Lesezeichen