Ich habe jetzt erstmal auf einfache Art die Sache soweit hinbekommen, das nach Betätigung des ersten Tasters und anschliesend des zweiten in der Segmentanzeige Koordinaten angezeigt werden.
Muss aber auch dazu sagen, das ich da ein absolut unwissender Anfänger bin ^^.
werde mal weiter probieren und mich zu Sauerbruch´s Denkanstoß weiter durchwurschteln.
hier nochmal der funktionierende Code ohne die 5 min Zeit.
Sinn des ganzen ist, ein Minnilabyrinth mit einer Stahlkugel, am Start betätigt diese den ersten Schalter und am Ziel den zweiten.
Schafft man das ganze in 5min, so soll die Segmentanzeige die Koordinaten anzeigen.
Das ganze muss dann noch mit der üblichen Energiesparfunktion versehen werden.
Code:
$hwstack = 20 'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
$regfile = "ATtiny24.DAT"
$crystal = 128000 'Frequenz des internen Oszillators
Dim A As Byte
Dim Alt As Integer
Dim Zeichen As String * 1
Config Adc = Single , Prescaler = Auto
Config Portb = &B00000111 'Pinb.0-3 auf 'Ausgang', Rest auf 'Eingang' schalten
Config Porta = &B10001011 'Pina.0+1+3+7 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = 0 'Ausgänge auf Low setzen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen
Wdtcr = &B11010011 'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
Enable Interrupts 'Interrupts freigeben
Config Pina.4 = Input
Config Porta.4 = 1 'Pin 9 (A4) auf Eingang schalten
'Pullup aktivieren
Do
If Pina.4 = 1 Then Gosub Abfrage2 'Pin 9 (A4) Abfragen, bei Kontakt zu Abfrage2 springen
Loop
Abfrage2:
Config Pina.5 = Input 'Pin 8 (A5) auf Eingang schalten
Config Porta.5 = 1 'Pullup aktivieren
Do
If Pina.5 = 1 Then Gosub Anzeige 'Pin8 (A5) abfragen , bei Kontakt zu Anzeige springen und Koordinaten anzeigen
Loop
Return
Anzeige:
Restore Daten 'Am Beginn der Daten anfangen
Alt = 1023 'Doppelauslösung verhindern
Do
Read Zeichen
Wdtcr = &B11010111 'Watchdog auf 2s stellen
If Zeichen = "0" Then Gosub P0 'schreibt 0 ins Display
If Zeichen = "1" Then Gosub P1 'schreibt 1 ins Display
If Zeichen = "2" Then Gosub P2 'schreibt 2 ins Display
If Zeichen = "3" Then Gosub P3 'schreibt 3 ins Display
If Zeichen = "4" Then Gosub P4 'schreibt 4 ins Display
If Zeichen = "5" Then Gosub P5 'schreibt 5 ins Display
If Zeichen = "6" Then Gosub P6 'schreibt 6 ins Display
If Zeichen = "7" Then Gosub P7 'schreibt 7 ins Display
If Zeichen = "8" Then Gosub P8 'schreibt 8 ins Display
If Zeichen = "9" Then Gosub P9 'schreibt 9 ins Display
If Zeichen = "n" Then Gosub Pn 'schreibt n ins Display
If Zeichen = "e" Then Gosub Pe 'schreibt E ins Display
If Zeichen = "re" Then Gosub Rechts 'Lauflicht rechts herum
If Zeichen = "li" Then Gosub Links 'Lauflicht links herum
If Zeichen = " " Then Gosub Leer 'leerzeichen-keine Anzeige
If Zeichen = "ost" Then Gosub East 'schreibt OSt ins Display
If Zeichen = "nord" Then Gosub North 'schreibt nord ins Display
If Zeichen = "p" Then Gosub Pp 'Pause zwischen Zeichen'
Wdtcr = &B11010011 'Watchdog wieder auf 125ms stellen
If Zeichen = "X" Then Return
Loop
Pp:
Waitms 500
Return
P0:
Portb = &B00000111
Porta = &B10000011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P1:
Portb = &B00000110
Reset Watchdog
Powerdown
Portb = 0
Return
P2:
Portb = &B00000011
Porta = &B10001010
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P3:
Portb = &B00000111
Porta = &B00001010
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P4:
Portb = &B00000110
Porta = &B00001001
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P5:
Portb = &B00000101
Porta = &B00001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P6:
Portb = &B00000101
Porta = &B10001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P7:
Portb = &B00000111
Reset Watchdog
Powerdown
Portb = 0
Return
P8:
Portb = &B00000111
Porta = &B10001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P9:
Portb = &B00000111
Porta = &B00001001
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Pn:
Portb = &B00000100
Porta = &B10001000
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Pe:
Portb = &B00000001
Porta = &B10001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Rechts:
Wdtcr = &B11010100
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Portb = &B00000010
Reset Watchdog
Powerdown
Portb = 0
Portb = &B00000100
Reset Watchdog
Powerdown
Portb = 0
Porta = &B00000010
Reset Watchdog
Powerdown
Porta = 0
Porta = &B10000000
Reset Watchdog
Powerdown
Porta = 0
Porta = &B00000001
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Portb = 0
Portb = &B00000010
Reset Watchdog
Powerdown
Portb = 0
Portb = &B00000100
Reset Watchdog
Powerdown
Portb = 0
Porta = &B00000010
Reset Watchdog
Powerdown
Porta = 0
Porta = &B10000000
Reset Watchdog
Powerdown
Porta = 0
Porta = &B00000001
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Portb = 0
Portb = &B00000010
Reset Watchdog
Powerdown
Portb = 0
Portb = &B00000100
Reset Watchdog
Powerdown
Portb = 0
Porta = &B00000010
Reset Watchdog
Powerdown
Porta = 0
Porta = &B10000000
Reset Watchdog
Powerdown
Porta = 0
Porta = &B00000001
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Links:
Wdtcr = &B11010100
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Porta = &B00000001
Reset Watchdog
Powerdown
Porta = 0
Porta = &B10000000
Reset Watchdog
Powerdown
Porta = 0
Porta = &B00000010
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000100
Reset Watchdog
Powerdown
Portb = 0
Portb = &B00000010
Reset Watchdog
Powerdown
Portb = 0
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
East:
Wdtcr = &B11010101
Portb = &B00000111
Porta = &B10000011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Portb = &B00000101
Porta = &B00001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Porta = &B10001011
Reset Watchdog
Powerdown
Porta = 0
Return
North:
Wdtcr = &B11010101
Portb = &B00000100
Porta = &B10001000
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Portb = &B00000100
Porta = &B10001010
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Porta = &B10001000
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000110
Porta = &B10001010
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Leer:
Reset Watchdog
Powerdown
Return
End
Daten:
' Data "nord"
Data "re"
Data "n" , "5" , "1" , " " , "0" , "1" , " " , "1" , "2" , "5"
Data " "
' Data "ost"
Data "e" , "0" , "1" , "3" , " " , "3" , "9" , " " , "7" , "3" , "0"
Data "re"
Data "X"
Ich hoffen mal mich nicht all zu doof anzustellen. ^^
Lesezeichen