Wie ist das gemeint. Ich muss mich jetzt erst einmal umstellen. Unter Auslagern versehe ich, dass ich etwas abfrage und wenn diese erfüllt oder auch nicht erfüllt ist, dann Gosub, diese dann unter dem Main Teil geschrieben wird. Wenn ich mich jetzt richtig ausgedrückt habe.Daher lieber auslagern
Main:
If IsCharWaiting = 1 Then Gosub OnUartRx
If Tifr...
Goto Main
OnUartRx:
...
Return
$regfile = "m8def.dat" 'Controllerdefinitionsdatei einbinden $crystal = 8000000 'Systemtakt angeben (Baudrate) $hwstack = 40 'Stacks $swstack = 16 $framesize = 32 $baud = 19200 'Baudrate UART Dim Zeichen As Byte 'UART-Empfang Dim Z As Byte Dim Fla As Byte Dim Pause As Byte Dim Pausex2 As Byte Dim Tov1cnt As Byte Dim Countdown As Word Ddrc = &B_11_1111 Portc = &B00_0000 Ddrd = &B_1111_1111 Portd = &B0000_0000 Rot Alias Portd.7 Blau Alias Portd.6 Gruen Alias Portc.3 Rot = 0 Blau = 0 'Phasenkorrekter 8-Bit-PWM, PWM-Frequenz=245Hz Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Main: If Ischarwaiting() = 1 Then Gosub Onuartrx If Tifr.tov1 = 1 Then Gosub Flag Goto Main Onuartrx: Zeichen = Inkey() 'dann Zeichen aus Puffer lesen If Zeichen = "1" Then 'Wenn Zeichen = "1" Rot = 1 '... Print "Led An" Elseif Zeichen = "0" Then 'Wenn Zeichen = "0" Rot = 0 '... Print "Led Aus" Elseif Zeichen = "t" Then 'Wenn Zeichen = "t" Toggle Rot '... Print "Toggle Led" Elseif Zeichen = "?" Then 'Wenn Zeichen = "?" If Rot = 0 Then 'Dann wenn Led aus ist... Print "Led ist aus" Elseif Rot = 1 Then 'sonst wenn Led an ist... Print "Led ist an" End If Elseif Zeichen = 0 Then 'bei 0x00 PWM deaktivieren Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Disconnect , Compare B Pwm = Disconnect Elseif Zeichen = 255 Then 'bei 0xFF PWM aktivieren Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Else Countdown = Zeichen * 60 Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down End If Return Flag: Set Tifr.tov1 'Überlaufflag zurücksetzen Incr Tov1cnt 'überlaufzähler inkrementieren If Pause = Tov1cnt Then 'entspricht dem 2ten "waitms pause" Fla = Rnd(200) Fla = Fla + 55 Pwm1a = Fla End If If Pausex2 = Tov1cnt Then 'entspricht dem ersten "waitms pause" Pwm1b = 255 - Fla Pause = Rnd(10) Pause = Pause * 6 Pausex2 = Pause Shift Pausex2 , Left 'pausex2=pause*2 Tov1cnt = 0 End If Incr Z If Z = 245 Then 'Überläufe zählen (245) Z = 0 'Zähler zurücksetzen Toggle Gruen 'LED toggeln If Countdown = 0 Then Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Disconnect , Compare B Pwm = Disconnect Else Decr Countdown End If End If Return
$regfile = "m8def.dat" 'Controllerdefinitionsdatei einbinden $crystal = 8000000 'Systemtakt angeben (Baudrate) $hwstack = 40 'Stacks $swstack = 16 $framesize = 32 $baud = 19200 'Baudrate UART Dim Zeichen As Byte 'UART-Empfang Dim Z As Byte Dim Fla As Byte Dim Pause As Byte Dim Pausex2 As Byte Dim Tov1cnt As Byte Dim Countdown As Word Ddrc = &B_11_1111 Portc = &B00_0000 Ddrd = &B_1111_1111 Portd = &B0000_0000 Rot Alias Portd.7 Blau Alias Portd.6 Gruen Alias Portc.3 'Phasenkorrekter 8-Bit-PWM, PWM-Frequenz=245Hz Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Main: If Ischarwaiting() = 1 Then Gosub Onuartrx If Tifr.tov1 = 1 Then Gosub Ontimer1overflow If Z = 245 Then Gosub Tick1sec Goto Main Onuartrx: Zeichen = Inkey() 'dann Zeichen aus Puffer lesen If Zeichen = "1" Then 'Wenn Zeichen = "1" Rot = 1 '... Print "Led An" Elseif Zeichen = "0" Then 'Wenn Zeichen = "0" Rot = 0 '... Print "Led Aus" Elseif Zeichen = "t" Then 'Wenn Zeichen = "t" Toggle Rot '... Print "Toggle Led" Elseif Zeichen = "?" Then 'Wenn Zeichen = "?" If Rot = 0 Then 'Dann wenn Led aus ist... Print "Led ist aus" Elseif Rot = 1 Then 'sonst wenn Led an ist... Print "Led ist an" End If Elseif Zeichen = 0 Then 'bei 0x00 PWM deaktivieren Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Disconnect , Compare B Pwm = Disconnect Elseif Zeichen = 255 Then 'bei 0xFF PWM aktivieren Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Else Countdown = Zeichen * 60 Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down End If Return Ontimer1overflow: Set Tifr.tov1 'Überlaufflag zurücksetzen Incr Tov1cnt 'überlaufzähler inkrementieren If Pause = Tov1cnt Then 'entspricht dem 2ten "waitms pause" Fla = Rnd(200) Fla = Fla + 55 Pwm1a = Fla End If If Pausex2 = Tov1cnt Then 'entspricht dem ersten "waitms pause" Pwm1b = 255 - Fla Pause = Rnd(10) Pause = Pause * 6 Pausex2 = Pause Shift Pausex2 , Left 'pausex2=pause*2 Tov1cnt = 0 End If Return Tick1sec: Incr Z Z = 0 'Zähler zurücksetzen Toggle Gruen 'LED toggeln If Countdown = 0 Then Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Disconnect , Compare B Pwm = Disconnect Else Decr Countdown End If Return
Incr Z Z = 0 'Zähler zurücksetzen