$regfile = "attiny2313.dat" $crystal = 8000000 'Interner Oszillator/Quarz Config Pinb.0 = Input 'Anschluss am Empfänger b.0 Config Portd.6 = Output 'Schaltausgang PinD.6 Strobe Config Portd.5 = Output 'Schaltausgang PinD.5 Beaconlight Config Portb.0 = Output 'Schaltausgang 2 Dim Signal As Byte 'Länge des Signals vom Empfänger Dim Modus As Byte '0=Aus 1=Strobe 2=Strobe+Beacon Dim Schalt2 As Bit 'Status Schaltausgang 2 Schalt2 = 0 Dim Zaehler As Word 'Zähler für Strobe/Beacon Zeitsteuerung Config Timer0 = Timer , Prescale = 1024 'timer0 konfigurieren On Timer0 Isr_timer0 'immer zu isr_timer0 springen Enable Timer0 'timer0 einschalten Enable Interrupts 'Interrupts global einschalten Do Pulsein Signal , Pinb , 0 , 1 'Signallänge an Pinb.0 abfragen If Signal > 85 Then 'nur weitermachen wenn brauchbares Signal If Signal < 115 Then 'wenn linker Anschlag --> Ausgang2 ein/ausschalten If Schalt2 = 0 Then 'wenn aus dann einschalten Schalt2 = 1 Portb.0 = 1 Else 'sonst ausschalten Schalt2 = 0 Portb.0 = 0 End If Waitms 300 'entprellen End If If Signal > 170 Then 'wenn rechter Anschlag --> Strobe/Beacon anschalten If Modus = 0 Then 'wenn aus Strobe einschalten, Modus 1 Modus = 1 Elseif Modus = 1 Then 'wenn Strobe breits an Beacon auch noch anschalten, Modus2 Modus = 2 Else 'sonst bzw wenn Beacon+Strobe bereits an alles ausschalten Modus = 0 Zaehler = 0 Portd.6 = 0 Portd.5 = 0 End If Waitms 300 'entprellen End If End If Loop 'von Vorne anfangen Isr_timer0: 'wird alle 20ms ausgeführt Select Case Zaehler: Case 1 : Portd.6 = 1 'nach 20ms Strobe an Case 2 : Portd.6 = 0 'nach 40ms Strobe aus Case 4 : Portd.6 = 1 'nach 80ms Strobe an Case 5 : Portd.6 = 0 'nach 100ms Strobe aus Case 37 : If Modus = 2 Then Portd.5 = 1 'nach 740ms wenn Modus2(Beacon) Beacon an Case 42 : Portd.5 = 0 'nach 840ms beacon aus Case 52 : Zaehler = 0 'nach 1040ms von Vorne beginnen End Select If Modus > 0 Then ' nur wenn Strobe/Beacon an ist hochzählen Incr Zaehler End If Timer0 = 100 'Timer zurücksetzen Return 'zurückkehren