$regfile = "ATtiny13.dat" $crystal = 1200000 $hwstack = 32 $swstack = 8 $framesize = 16 'Ddrb = &B00111000 Config Portb.1 = Input Config Portb.2 = Input Config Portb.3 = Output Config Portb.4 = Output Ri Alias Portb.1 'Ri (RightInput) - Jobb bemenet Li Alias Portb.2 'Li (LeftInput) - bal bemenet Ro Alias Portb.3 'Ro (RightOutput)- Jobb kimenet Lo Alias Portb.4 'Lo (LeftOutput) - Bal kimenet Dim Rc As Byte 'Számolják a villogásokat oldalanként Dim Lc As Byte Dim Rt As Byte 'Ciklusszámláló (magas átmenet után alacsony szinten töltött ciklust számol) Dim Lt As Byte Const Inlo = 1 'A bemeneten fázist fordító tranzisztor miatt deklarálom a szinteket Const Inhi = 0 'Ezeket majd meg kell cserélni! Const Debouncetime = 50 'Prell mentesítés miatti várakozási idő Const Maximp = 3 'Ennyi villantást tart a relé Const Idletime = 100 'Várakozási idő alacsony szintre Const Maxidle = 10 'Ennyi ciklust vár alacsony bemenetnél mielőtt nullázza a számlálókat (kb 1sec) Rc = 0 Lc = 0 Rt = 0 Lt = 0 Reset Ro Reset Lo Do If Ri = Inhi Then Waitms Debouncetime 'kivárja a prell időt If Ri = Inhi Then 'és újra megnézi Rc = Rc + 1 'növeli a jobb számlálót Rt = 0 'és nullázza a ciklus számlálót If Lc > 0 Then Lc = 0 End If End If End If If Li = Inhi Then Waitms Debouncetime If Li = Inhi Then Lc = Lc + 1 Lt = 0 If Rc > 0 Then Rc = 0 End If End If End If If Rc > 0 Or Lc > 0 Then If Rc > 0 And Rc <= Maximp Then Set Ro Else Reset Ro End If If Lc > 0 And Lc <= Maximp Then Set Lo Else Reset Lo End If While Ri = Inhi 'Vár alacsony bemenetig Wend While Li = Inhi Wend If Rc > Maximp Or Lc > Maximp Then Waitms Idletime 'Vár egy kicsit If Ri = Inlo Then 'Majd ha még alacsony a bemenet Rt = Rt + 1 'akkor növel egy ciklusszámlálót End If If Li = Inlo Then Lt = Lt + 1 End If If Rt > Maxidle Then Rc = 0 End If If Lt > Maxidle Then Lc = 0 End If End If End If Loop End