micha50
24.10.2007, 16:48
Hallo
ich bin Anfänger mit Bascom und möchte LEDs wie bei einem Lauflicht mit einem Taster weiter schalten. Bei jedem Tastendruck soll eine LED weiter geschaltet werden. Wenn ich bei LED Nr. 5 angekommen bin, soll beim nächsten Tastendruck wieder die erste LED angehen und so weiter.
Es soll immer nur eine LED an sein. Außerdem soll sich der µC die zuletzt eingestellte LED merken und bei Neustart diese wieder einschalten. Des weiteren soll eine weitere LED die zuletzt eingestellte LED als Blinkzeichen ausgeben, zum Beispiel: wenn zuletzt LED Nr. 3 an war, soll der µC beim Start 3 mal blinken.
Damit der µC nicht bei jeder Tastenänderung in den EPROM schreibt, sollte er erst 30 Sek. nach der letzten Änderung den Wert im EPROM abspeichen.
Ich habe es bis jetzt nur geschafft die LED's mit dem Taster über IF-Abfragen weiter zu schalten und das Schreiben in den EPROM. Jedoch nicht erst nach 30 Sek. sondern bei jeder Änderung der LED.
Der auskommentierte Code „EPROM Lesen“und „LED für die Blinkausgabe“ funktioniert aber dann kann ich die LEDs nicht weiter
schalten.
Mfg
Michael
' Prozessor Attiny26
' Schaltung : PA1-PA5 LED`s zur Anzeige - Taster an PA0
' PA7 LED für die Blinkausgabe
' Funktion : EEprom lesen und zuletzt eingestellte LED ansteuern
' Funktion :LED 1-5 mit Taster an PA0 von zuletzt eingestelter Position
' weiterschalten und eingestellte LED nach 30 sek im EEprom abspeichern
' Sprache : BASCOM
$regfile = "attiny26.dat"
$crystal = 4000000
'$Eeprom
Declare Sub Tastendruck
Ddra = &B11111110
Porta = &B11111111
'Dim Z As Byte
'Dim B As Byte
Dim X As Byte
X = 0
' * * * * * * * * * * * * * * * Eprom Lesen Und Entsprechende Led Ansteuern
'Readeeprom Z , 0
'Z = Z - 1
'Select Case Z
'Case 1 : Reset Porta.5
'Case 2 : Reset Porta.4
'Case 3 : Reset Porta.3
'Case 4 : Reset Porta.2
'Case 5 : Reset Porta.1
'End Select
'********************** LED für die Blinkausgabe
'For B = 0 To Z
'Reset Porta.7
'Waitms 500
'Set Porta.7
'Waitms 500
'Next B
'Stop
'**********************Led weiterschalten
Do
Debounce Pina.0 , 0 , Tastendruck , Sub
If X = 1 Then
Porta.1 = 0
End If
If X = 2 Then
Porta.1 = 1
Porta.2 = 0
End If
If X = 3 Then
Porta.2 = 1
Porta.3 = 0
End If
If X = 4 Then
Porta.3 = 1
Porta.4 = 0
End If
If X = 5 Then
Porta.4 = 1
Porta.5 = 0
End If
If X = 6 Then
Porta.5 = 1
X = 1
End If
Loop
'**********************Unterprogramm Tastenabfrage
Sub Tastendruck
X = X + 1
'Writeeeprom X , 0
End Sub
End
ich bin Anfänger mit Bascom und möchte LEDs wie bei einem Lauflicht mit einem Taster weiter schalten. Bei jedem Tastendruck soll eine LED weiter geschaltet werden. Wenn ich bei LED Nr. 5 angekommen bin, soll beim nächsten Tastendruck wieder die erste LED angehen und so weiter.
Es soll immer nur eine LED an sein. Außerdem soll sich der µC die zuletzt eingestellte LED merken und bei Neustart diese wieder einschalten. Des weiteren soll eine weitere LED die zuletzt eingestellte LED als Blinkzeichen ausgeben, zum Beispiel: wenn zuletzt LED Nr. 3 an war, soll der µC beim Start 3 mal blinken.
Damit der µC nicht bei jeder Tastenänderung in den EPROM schreibt, sollte er erst 30 Sek. nach der letzten Änderung den Wert im EPROM abspeichen.
Ich habe es bis jetzt nur geschafft die LED's mit dem Taster über IF-Abfragen weiter zu schalten und das Schreiben in den EPROM. Jedoch nicht erst nach 30 Sek. sondern bei jeder Änderung der LED.
Der auskommentierte Code „EPROM Lesen“und „LED für die Blinkausgabe“ funktioniert aber dann kann ich die LEDs nicht weiter
schalten.
Mfg
Michael
' Prozessor Attiny26
' Schaltung : PA1-PA5 LED`s zur Anzeige - Taster an PA0
' PA7 LED für die Blinkausgabe
' Funktion : EEprom lesen und zuletzt eingestellte LED ansteuern
' Funktion :LED 1-5 mit Taster an PA0 von zuletzt eingestelter Position
' weiterschalten und eingestellte LED nach 30 sek im EEprom abspeichern
' Sprache : BASCOM
$regfile = "attiny26.dat"
$crystal = 4000000
'$Eeprom
Declare Sub Tastendruck
Ddra = &B11111110
Porta = &B11111111
'Dim Z As Byte
'Dim B As Byte
Dim X As Byte
X = 0
' * * * * * * * * * * * * * * * Eprom Lesen Und Entsprechende Led Ansteuern
'Readeeprom Z , 0
'Z = Z - 1
'Select Case Z
'Case 1 : Reset Porta.5
'Case 2 : Reset Porta.4
'Case 3 : Reset Porta.3
'Case 4 : Reset Porta.2
'Case 5 : Reset Porta.1
'End Select
'********************** LED für die Blinkausgabe
'For B = 0 To Z
'Reset Porta.7
'Waitms 500
'Set Porta.7
'Waitms 500
'Next B
'Stop
'**********************Led weiterschalten
Do
Debounce Pina.0 , 0 , Tastendruck , Sub
If X = 1 Then
Porta.1 = 0
End If
If X = 2 Then
Porta.1 = 1
Porta.2 = 0
End If
If X = 3 Then
Porta.2 = 1
Porta.3 = 0
End If
If X = 4 Then
Porta.3 = 1
Porta.4 = 0
End If
If X = 5 Then
Porta.4 = 1
Porta.5 = 0
End If
If X = 6 Then
Porta.5 = 1
X = 1
End If
Loop
'**********************Unterprogramm Tastenabfrage
Sub Tastendruck
X = X + 1
'Writeeeprom X , 0
End Sub
End