ähm, dass ist leider nicht verständlich für mich![]()
ich habe nun mal am ende von jedem unterprogramm folgendes eingefügt, damit er so lange im unterprogramm bleibt bis ein anderes Programm angewählt wird.
pr_1:
lauflicht
If Pr1_3 = 0 Then
Gosub Pr_1
Else
Return
End If
pr_2:
lauflicht
If Pr1_3 = 1 Then
Gosub Pr_2
Else
Return
End If
pr_3:
If Pr1_3 = 2 Then
Gosub Pr_3
Else
Return
End If
Funktioniert aber trotzdem irgentwie nicht.
EDIT: Hier mal der Code wie er immoment aussieht:
Code:'################################################### '#Lauflichtsteuerung mit 2 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_wechsel , Sub 'Programmwahltaster entprellen und zu Pr_wechsel springen 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_wechsel: Incr Pr1_3 'Pr1_3 um einen erhöhen If Pr1_3 = 0 Then 'Wenn Pr1_3 = 0 dann... Gosub Pr_1 '...zum sub PR_1 springen End If If Pr1_3 = 1 Then 'Wenn Pr1_3 = 0 dann... Gosub Pr_2 '...zum sub PR_1 springen End If If Pr1_3 = 2 Then 'Wenn Pr1_3 = 0 dann... Gosub Pr_3 '...zum sub PR_1 springen If Pr1_3 >= 3 Then 'Wenn pr1_3 = 3 dann.. Pr1_3 = 0 'pr1_3 = 0 End If Return '---------------- Pr_1: If Zler = 1 Then Led_ro = 1 Led_gr = 1 Led_ge = 0 End If If Zler = 2 Then Led_ro = 0 Led_gr = 0 Led_ge = 1 End If If Zler = 3 Then Led_ro = 1 Led_gr = 1 Led_ge = 0 End If If Zler = 4 Then Led_ro = 0 Led_gr = 0 Led_ge = 1 End If If Zler = 5 Then Led_ro = 1 Led_gr = 1 Led_ge = 0 End If If Zler = 6 Then Led_ro = 0 Led_gr = 0 Led_ge = 1 End If If Zler = 7 Then Led_ro = 1 Led_gr = 1 Led_ge = 0 End If If Zler = 8 Then Led_ro = 0 Led_gr = 0 Led_ge = 1 End If If Pr1_3 = 0 Then 'Wenn Pr1_3 = 0 dann... Gosub Pr_1 '...zum Sub PR_1 gehen... Else '...sonst... Return '...return End If '--------------- Pr_2: If Zler = 1 Then Led_ro = 1 Led_gr = 0 Led_ge = 0 End If If Zler = 2 Then Led_ro = 0 Led_gr = 1 Led_ge = 0 End If If Zler = 3 Then Led_ro = 0 Led_gr = 0 Led_ge = 1 End If If Zler = 4 Then Led_ro = 1 Led_gr = 0 Led_ge = 0 End If If Zler = 5 Then Led_ro = 0 Led_gr = 1 Led_ge = 0 End If If Zler = 6 Then Led_ro = 0 Led_gr = 0 Led_ge = 1 End If If Zler = 7 Then Led_ro = 1 Led_gr = 0 Led_ge = 0 End If If Zler = 8 Then Led_ro = 0 Led_gr = 1 Led_ge = 0 End If If Pr1_3 = 1 Then 'Wenn Pr1_3 = 0 dann... Gosub Pr_2 '...zum Sub PR_2 gehen... Else '...sonst... Return '...return End If







Zitieren

Lesezeichen