Joschi1711
19.02.2012, 22:45
Hallo Leute,
Ich habe unten stehenden Code zur Verfügung, der bisher mit einem LDR ausgelöst wurde , und möchte nun, das die Segmentanzeige startet, wenn innerhalb von 5min zwei Tasten nacheinander betätigt werden. Nach Ablauf dieser Zeit muss die erste Taste erneut betätigt werden. Sprich mit Taste 1 startet die ganze Sache und Taste 2 löst dann die Segmentanzeige aus.
Leider komme ich hier nicht ganz zurecht und hoffe unter euch jemanden zu finden, der mir da etwas helfen kann.
Bisher bekam ich immer nur als Antwort, lernen und suchen und lesen, dazu fehlt mir momentan leider etwas die Zeit ^^.
$hwstack = 20 'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
$regfile = "ATtiny24.DAT"
$crystal = 128000 'Frequenz des internen Oszillators
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
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"
Anbei habe ich den Schaltplan, wie es mir so vorschwebt.
Danke für eventuelle Tips.
Gruß aus Freital
Jörg
Ich habe unten stehenden Code zur Verfügung, der bisher mit einem LDR ausgelöst wurde , und möchte nun, das die Segmentanzeige startet, wenn innerhalb von 5min zwei Tasten nacheinander betätigt werden. Nach Ablauf dieser Zeit muss die erste Taste erneut betätigt werden. Sprich mit Taste 1 startet die ganze Sache und Taste 2 löst dann die Segmentanzeige aus.
Leider komme ich hier nicht ganz zurecht und hoffe unter euch jemanden zu finden, der mir da etwas helfen kann.
Bisher bekam ich immer nur als Antwort, lernen und suchen und lesen, dazu fehlt mir momentan leider etwas die Zeit ^^.
$hwstack = 20 'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
$regfile = "ATtiny24.DAT"
$crystal = 128000 'Frequenz des internen Oszillators
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
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"
Anbei habe ich den Schaltplan, wie es mir so vorschwebt.
Danke für eventuelle Tips.
Gruß aus Freital
Jörg