ach ratber... keine sorge, mir gehen nur extra-sensible aufn geist ^^
so, hier iss das programm so wies gehen würde:
Code:
'###################################################
'#Lauflichtsteuerung mit 3 Verschiedenen Programmen#
'###################################################
$regfile = "M8def.dat"
$crystal = 3686400
Ddrd = &B11100000 'PD7, PD6, PD5 als Ausgänge festlegen, rest Eingang
Portd = &B00001100 'PullUps von PD2, PD3 Aktivieren
Dim Zler As Byte
Dim Pr1_3 As Byte
On Timer1 Ontimer1
Config Timer1 = Timer , Prescale = 64 'Timertakt = Crystal / 64
Enable Timer1 'Timer1 einschalten
Enable Interrupts 'Interrupts Global einschalten
Const Timervorgabe = 36736 'Hat mir rnAVR so berechnet
'###Deklarationen###
Led_gr Alias Portd.7 'LED Grün
Led_ge Alias Portd.6 'LED Gelb
Led_ro Alias Portd.5 'LED Rot
Prwata Alias Pind.3 'Programmwahltaster
Declare Sub Pr_1
Declare Sub Pr_2
Declare Sub Pr_3
'###Hauptschleife###
Do
Debounce Prwata , 0 , Pr_wechs , Sub 'Programmwahltaster entprellen und zu Pr_wechsel springen
Gosub Pr_wechsel
Loop
'###OnTimer1###
Ontimer1:
Timer1 = Timervorgabe
If Zler = 10 Then 'Wenn Zler = 9 dann...
Zler = 1 '...Zler = 0
End If
Incr Zler 'Zler + 1
Return
'###Unterprogramme###
Pr_wechs:
Incr Pr1_3
Gosub Pr_wechsel
Return
Pr_wechsel:
If Pr1_3 = 3 Then 'Wenn Pr1_3 = 2 dann...
Pr1_3 = 0 '...Pr1_3 = 0
End If
If Pr1_3 = 0 Then 'Wenn Pr1_3 = 0 dann...
Gosub Pr_1
End If '...zum Sub PR_1 springen
If Pr1_3 = 1 Then 'Wenn Pr1_3 = 1 dann...
Gosub Pr_2 '...zum sub PR_2 springen
End If
If Pr1_3 = 2 Then
Gosub Pr_3
End If
Return
'----------------
Pr_1:
Return
'---------------
Pr_2:
Return
'---------------
Pr_3:
Return
ich hoffe es geht auch ^^
Martin
Lesezeichen