Hallo,

ich bin gerade dabei mit Bascom eine Schalting zu programmieren, die mir später mal die Beleuchtung in einem RC-Modell steuern soll.

Zu dieser gehöhrt z.B. die ansteuerung zweier LEDs als Doppelblitz, wie es bei Einsatzfahrzeugen üblich ist.

Nun habe ich dies zur Zeit über einen Zähler realisiert und steuere die Ausgänge mit IF-Abfragen. (siehe Code)
Da dies im Moment die einzige Funktion ist an der ich tüftel, funktioniert es auch ganz gut.
Nun habe ich aber die Befürchtung, wenn ich weitere Dinge in meinem Programm anstellen möchte (z.B. die Auswertung eines RC-Kanals), das ich dann in Schwieriglkeiten kommen werde was Optik angeht (unregelmäßiges Blinken).
Es sollen vermutlich auch noch andere Ausgänge mit Blitz bzw. Blink funktionen belegt werden.

Kann mir jemand einen Tipp geben wie solch eine Funktion eleganter gelöst werden kann, ohne das sie vom Hauptprogramm beeinträchtigt wird?
Die If-Abfragen in die Interruptroutine zu verlegen ist vermutlich die noch schlechtere Umsetzung.

Hier noch der derzeitige Code:
Code:
'--------------------------------------------------------------
'            Beleuchtung_M8_test.bas
'      Testprogramm für Beleuchtungssteuerung
'--------------------------------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000


Config POrtC = Output
Config PORTB.4 = Output
Config portb.5 = Output

Config Timer0 = Timer , PRESCALE = 64

On Timer0 Tim0_isr

Enable Timer0
Enable Interrupts

Timer0 = 131                                                'Timerregister auf 156 voreinstellen


Dim zaehler as Integer


Doppelblitz1 Alias PortC.5
Doppelblitz2 Alias Portc.4
KontrollLED Alias PortB.4


Zaehler = 0

Do

 If zaehler = 10 or zaehler = 210 then
  Doppelblitz1 = 1
 End IF

 If zaehler = 160 or zaehler = 360 then
  Doppelblitz1 = 0
 End IF


 If zaehler = 410 or zaehler = 610 then
  Doppelblitz2 = 1
 End IF

 If zaehler = 560 or zaehler = 760 then
  Doppelblitz2 = 0
 End IF

 If zaehler >= 1000 then
  zaehler = 0
 end IF

Loop

'Interruptrotiene Timer0 Overflow
Tim0_isr:
 Timer0 = 131                                               'Timerregister auf 156 voreinstellen
 incr zaehler
Return

End
Danke schon einmal für eure Hilfe