Ich hoffe, dass ich dieses mal die Aufgabe gelöst habe.nächste Teilaufgabe wäre nun, das erste Teilprogramm so zu erweitern, daß jedes andere Zeichen als "1", "0", "t" und "?" die Helligkeit von Kanal B steuert.
CodeBox BascomAVR
$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 'Timerüberlaufzähler Rot Alias Portd.7 'Namen für LED-Beine Gruen Alias Portc.3 Config Rot = Output 'Ausgänge Config Gruen = Output Rot = 1 'LEDs erstmal an Gruen = 1 'Phasenkorrekter 8-Bit-PWM, PWM-Frequenz=245Hz Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Pwm1a = 250 Pwm1b = 50 Do 'Hauptschleife Begin 'erstes Teilprogramm - UART Empfang und auswerten If Ischarwaiting() = 1 Then 'Wenn Zeichen Empfangen 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 an ist... Print "Led ist aus" Elseif Rot = 1 Then 'sonst wenn Led aus ist... Print "Led ist an" End If Elseif Zeichen = "a" Then Pwm1a = 250 Pwm1b = 50 Print "A=Hell und B=Dunkel" Elseif Zeichen = "b" Then Pwm1a = 50 Pwm1b = 250 Print "A=Dunkel und B=Hell" End If End If 'zweites Teilprogramm - LED durch timer blinken lassen If Tifr.tov1 = 1 Then 'wenn Timer übergelaufen ist Tifr.tov1 = 1 'Überlaufflag zurücksetzen Incr Z If Z = 245 Then 'Überläufe zählen (245) Z = 0 'Zähler zurücksetzen Toggle Gruen 'LED toggeln End If End If Loop 'Hauptschleife Ende