Moin.
Habs mal eben in den Editor gezogen und da fiel es dann gleich auf.
Der Timer ist ja 16 Bittig und da wird auch nur eine entsprechend Dimensionierte Variable akzeptiert.
In Zeile 15 und 16 sind die Änderungen.
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 Dim Schneller As Byte Dim Timervorgabe As Word Timervorgabe = 100 On Timer1 Ontimer1 Config Timer1 = Timer , Prescale = 64 'Timertakt = Crystal / 64 Enable Timer1 'Timer1 einschalten Enable Interrupts 'Interrupts Global einschalten '###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 Speed Alias Pind.2 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 Debounce Speed , 0 , S_change , Sub Gosub Pr_wechsel Loop '###OnTimer1### Ontimer1: Timer1 = Timervorgabe If Zler >= 3 Then 'Wenn Zler = 10 dann... Zler = 0 '...Zler = 1 End If Incr Zler 'Zler + 1 Return '###Unterprogramme### S_change: If Schneller = 3 Then Schneller = 0 End If Incr Schneller If Schneller = 0 Then Timervorgabe = 7936 End If If Schneller = 1 Then Timervorgabe = 36736 End If If Schneller = 2 Then Timervorgabe = 46336 End If Return 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







Zitieren

Lesezeichen