Ich möchte gerne mit einem Taster zwischen 3 verschiedenen Lauflichtern wechseln können blos irgentwie Funktioniert das nicht so ganz. Das problem liegt denke ich daran, dass er jedes Unterprogramm nur einmal durchläuft und dann gleich wieder in die Hauptschleife spingt oder?
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_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: Pr1_3 = 0 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 If Pr1_3 = 3 Then 'Wenn Pr1_3 = 2 dann... Pr1_3 = 0 '...Pr1_3 = 0 End If Incr Pr1_3 'Pr1_3 + 1 Return '---------------- Pr_1: Lauflicht 1 '--------------- Pr_2: Lauflicht 2 '--------------- Pr_3: lauflicht 3







Zitieren

Lesezeichen