Killer
03.04.2007, 19:49
Hallo,
ich habe zwei mega32 speziell verbunden, damit sie zahlen von 0-9 und zusätzlich + und - austauschen können. der eine prozessor ist eigendlich nur für die tastatur da (Chip1), der andere zum ausgeben der daten.
dem Chip1 habe ich folgenden quellcode aufgespielt:
Statusout = 1
Led = 0
Call Tastenabfrage()
Sub Tastenabfrage()
Do
Led = 0
If Null = 0 Then
Led = 1
Wert = 0
End If
If Eins = 0 Then
Wert = 1
Led = 1
End If
If Zwei = 0 Then
Wert = 2
Led = 1
End If
If Drei = 0 Then
Wert = 3
Led = 1
End If
If Vier = 0 Then
Wert = 4
Led = 1
End If
If Fuenf = 0 Then
Wert = 5
Led = 1
End If
If Sechs = 0 Then
Wert = 6
Led = 1
End If
If Sieben = 0 Then
Wert = 7
Led = 1
End If
If Acht = 0 Then
Wert = 8
Led = 1
End If
If Neun = 0 Then
Wert = 9
Led = 1
End If
If Plus = 0 Then
Wert = 10
Led = 1
End If
If Minus = 0 Then
Wert = 11
Led = 1
End If
If Enter = 0 Then
Call Eingabe()
End If
Loop
End Sub 'Tastenabfrage
Sub Eingabe()
Statusout = 0
Led = 0
Waitms 5
If Statusin = 0 Then
Statusout = 1
If Wert = 0 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 0
Dezi4 = 0
Dezi5 = 1
End If
If Wert = 1 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 0
Dezi4 = 1
Dezi5 = 0
End If
If Wert = 2 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 0
Dezi4 = 1
Dezi5 = 1
End If
If Wert = 3 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 1
Dezi4 = 0
Dezi5 = 0
End If
If Wert = 4 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 1
Dezi4 = 0
Dezi5 = 1
End If
If Wert = 5 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 1
Dezi4 = 1
Dezi5 = 0
End If
If Wert = 6 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 1
Dezi4 = 1
Dezi5 = 1
End If
If Wert = 7 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 0
Dezi4 = 0
Dezi5 = 0
End If
If Wert = 8 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 0
Dezi4 = 0
Dezi5 = 1
End If
If Wert = 9 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 0
Dezi4 = 0
Dezi5 = 1
End If
If Wert = 10 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 0
Dezi4 = 1
Dezi5 = 1
End If
If Wert = 11 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 1
Dezi4 = 0
Dezi5 = 0
End If
Waitms 5
Dezi1 = 0
Dezi2 = 0
Dezi3 = 0
Dezi4 = 0
Dezi5 = 0
Else
Call Eingabe()
End If
Call Tastenabfrage()
End Sub 'Eingabe
End
also die daten am anfang des quellcodes habe ich mal weggelassen.
der Chip2 hat dieses:
Statusout = 1
Call Status()
Sub Status()
If Statusin = 0 Then
Waitms 5
Statusout = 0
Call Ziffernabfrage()
Else
Call Status()
End If
End Sub
Sub Ziffernabfrage()
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 0 Then
Wert = 0
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 1 Then
Wert = 1
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 0 Then
Wert = 2
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 1 Then
Wert = 3
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 0 Then
Wert = 4
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 0 And Dezi5 = 1 Then
Wert = 5
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 0 And Dezi5 = 0 Then
Wert = 6
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 1 Then
Wert = 7
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 0 Then
Wert = 8
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 1 Then
Wert = 9
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 0 Then
Wert = 10
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 1 Then
Wert = 11
End If
Statusout = 1
Waitms 5
Call Ausgabe()
End Sub
Sub Ausgabe()
If Wert = 0 Then
Led = 0
End If
If Wert = 1 Then
Led = 1
Waitms 100
Led = 0
Waitms 100
End If
If Wert = 2 Then
Led = 1
Waitms 100
Led = 0
Waitms 100
Led = 1
Waitms 100
Led = 0
Waitms 100
End If
Call Status()
End Sub
also wenn ich jetzt [2] +[Enter] drücke müsste der Chip2 das empfangen und die LED müsste 2 mal leuchten (weiter hab ichs noch nicht geschrieben). das problem ist nur, es blinkt nicht!
wer kann mir helfen und sagen wo ich den fehler habe?
mfg Killer
ich habe zwei mega32 speziell verbunden, damit sie zahlen von 0-9 und zusätzlich + und - austauschen können. der eine prozessor ist eigendlich nur für die tastatur da (Chip1), der andere zum ausgeben der daten.
dem Chip1 habe ich folgenden quellcode aufgespielt:
Statusout = 1
Led = 0
Call Tastenabfrage()
Sub Tastenabfrage()
Do
Led = 0
If Null = 0 Then
Led = 1
Wert = 0
End If
If Eins = 0 Then
Wert = 1
Led = 1
End If
If Zwei = 0 Then
Wert = 2
Led = 1
End If
If Drei = 0 Then
Wert = 3
Led = 1
End If
If Vier = 0 Then
Wert = 4
Led = 1
End If
If Fuenf = 0 Then
Wert = 5
Led = 1
End If
If Sechs = 0 Then
Wert = 6
Led = 1
End If
If Sieben = 0 Then
Wert = 7
Led = 1
End If
If Acht = 0 Then
Wert = 8
Led = 1
End If
If Neun = 0 Then
Wert = 9
Led = 1
End If
If Plus = 0 Then
Wert = 10
Led = 1
End If
If Minus = 0 Then
Wert = 11
Led = 1
End If
If Enter = 0 Then
Call Eingabe()
End If
Loop
End Sub 'Tastenabfrage
Sub Eingabe()
Statusout = 0
Led = 0
Waitms 5
If Statusin = 0 Then
Statusout = 1
If Wert = 0 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 0
Dezi4 = 0
Dezi5 = 1
End If
If Wert = 1 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 0
Dezi4 = 1
Dezi5 = 0
End If
If Wert = 2 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 0
Dezi4 = 1
Dezi5 = 1
End If
If Wert = 3 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 1
Dezi4 = 0
Dezi5 = 0
End If
If Wert = 4 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 1
Dezi4 = 0
Dezi5 = 1
End If
If Wert = 5 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 1
Dezi4 = 1
Dezi5 = 0
End If
If Wert = 6 Then
Dezi1 = 0
Dezi2 = 0
Dezi3 = 1
Dezi4 = 1
Dezi5 = 1
End If
If Wert = 7 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 0
Dezi4 = 0
Dezi5 = 0
End If
If Wert = 8 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 0
Dezi4 = 0
Dezi5 = 1
End If
If Wert = 9 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 0
Dezi4 = 0
Dezi5 = 1
End If
If Wert = 10 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 0
Dezi4 = 1
Dezi5 = 1
End If
If Wert = 11 Then
Dezi1 = 0
Dezi2 = 1
Dezi3 = 1
Dezi4 = 0
Dezi5 = 0
End If
Waitms 5
Dezi1 = 0
Dezi2 = 0
Dezi3 = 0
Dezi4 = 0
Dezi5 = 0
Else
Call Eingabe()
End If
Call Tastenabfrage()
End Sub 'Eingabe
End
also die daten am anfang des quellcodes habe ich mal weggelassen.
der Chip2 hat dieses:
Statusout = 1
Call Status()
Sub Status()
If Statusin = 0 Then
Waitms 5
Statusout = 0
Call Ziffernabfrage()
Else
Call Status()
End If
End Sub
Sub Ziffernabfrage()
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 0 Then
Wert = 0
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 1 Then
Wert = 1
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 0 Then
Wert = 2
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 1 Then
Wert = 3
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 0 Then
Wert = 4
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 0 And Dezi5 = 1 Then
Wert = 5
End If
If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 0 And Dezi5 = 0 Then
Wert = 6
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 1 Then
Wert = 7
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 0 Then
Wert = 8
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 1 Then
Wert = 9
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 0 Then
Wert = 10
End If
If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 1 Then
Wert = 11
End If
Statusout = 1
Waitms 5
Call Ausgabe()
End Sub
Sub Ausgabe()
If Wert = 0 Then
Led = 0
End If
If Wert = 1 Then
Led = 1
Waitms 100
Led = 0
Waitms 100
End If
If Wert = 2 Then
Led = 1
Waitms 100
Led = 0
Waitms 100
Led = 1
Waitms 100
Led = 0
Waitms 100
End If
Call Status()
End Sub
also wenn ich jetzt [2] +[Enter] drücke müsste der Chip2 das empfangen und die LED müsste 2 mal leuchten (weiter hab ichs noch nicht geschrieben). das problem ist nur, es blinkt nicht!
wer kann mir helfen und sagen wo ich den fehler habe?
mfg Killer