Witam Wersja 1 $regfile = "attiny2313.dat " 'model proca $crystal = 4000000 'taktowanie $hwstack = 8 $swstack = 8 $framesize = 8 Config Portb = Output Portb = &B00011100 Config Portd = Input Portd = &B1111111 Dim Zegar As Word 'zmienna czasowa Dim Minuta As Word 'zmienna minut '********************************PRZYPISANIE ZMIENNYCH S1 Alias Pind.0 S2 Alias Pind.1 S3 Alias Pind.2 Pir Alias Pind.3 Dioda_1 Alias Portb.5 Dioda_2 Alias Portb.6 Dioda_3 Alias Portb.7 Lampa Alias Portb.2 Zasilacz Alias Portb.3 Lutownica Alias Portb.4 '*******************************PROGRAM GLOWNY Poczatek: Do Debounce S1 , 0 , Switch1 , Sub Debounce S2 , 0 , Switch2 , Sub Debounce S3 , 0 , Switch3 , Sub If Pir = 0 Then 'wyłączenie po czasie Incr Zegar If Zegar > 55000 Then Zegar = 0 Incr Minuta Reset Dioda_2 End If End If If Minuta = 10 Then Reset Dioda_1 Reset Dioda_2 Reset Dioda_3 Set Lampa Set Zasilacz Set Lutownica End If Loop Switch1: Toggle Dioda_1 Toggle Lampa Goto Poczatek Switch2: Toggle Dioda_2 Toggle Zasilacz Goto Poczatek Switch3: Toggle Dioda_3 Toggle Lutownica Goto Poczatek Return End Wersja 2 $regfile = "attiny2313.dat " 'model proca $crystal = 4000000 'taktowanie $hwstack = 8 $swstack = 8 $framesize = 16 Config Portb = Output 'port B jako wyjscie Portb = &B00011100 'ustawiam jedynki na zalaczeniu urzadzen Config Portd = Input 'port D jako wejście Portd = &B1111111 'podciagamy jedynke do włączników Dim S As Byte 'zmienna do timera sekundy Dim M As Byte 'zmienna do timera minuty Config Timer1 = Timer , Prescale = 64 'Konfiguracja Timera Enable Interrupts : Enable Timer1 : On Timer1 Prztimer1 '********************************PRZYPISANIE ZMIENNYCH S1 Alias Pind.0 'wlacznik lampy S2 Alias Pind.1 'wlacznik zasilacza S3 Alias Pind.2 'wylacznik lutownicy Pir Alias Pind.3 ' czujnik obecnosci PIR Dioda_1 Alias Portb.5 'sygnalizacja zalaczenia lampy Dioda_2 Alias Portb.6 'sygnalizacja zalaczenia zasilacza Dioda_3 Alias Portb.7 'sygnalizacja zalaczenia lutownicy Lampa Alias Portb.2 'zalaczenie lampy Zasilacz Alias Portb.3 'zalaczenie zasilacza Lutownica Alias Portb.4 'zalaczenie lutownica '*******************************PROGRAM GLOWNY Poczatek: Do Debounce S1 , 0 , Switch1 , Sub ' odczytywanie wejscia S1 Debounce S2 , 0 , Switch2 , Sub ' odczytywanie wejscia S2 Debounce S3 , 0 , Switch3 , Sub ' odczytywanie wejscia S3 Loop Switch1: Toggle Dioda_1 Toggle Lampa Goto Poczatek Switch2: Toggle Dioda_2 Toggle Zasilacz Goto Poczatek Switch3: Toggle Dioda_3 Toggle Lutownica Goto Poczatek Prztimer1: Load Timer1 , 62500 'Program obsługi przerwania co 1s If Pir = 0 Then ' Incr S If S = 60 Then S = 0 Reset Dioda_2 Incr M End If End If If M = 1 Then ' dwadziescia minut mija nastepuje wylaczenie sprzetu M = 0 Set Lampa Set Zasilacz Set Lutownica Reset Dioda_1 Reset Dioda_2 Reset Dioda_3 End If Return End
|
|||
RE: timer bascom
Sprawdzałeś czy przerwanie timera działa co sekundę.... wstaw tam tylko polecenia
i sprawdź czy miga z dobrą częstotliwością.
W drugim kroku możesz przypisać w timerze na druga diodę stan końcówki Pir aby się upewnić że stan jest dobrze czytany...
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
RE:timer bascom
Zrobiłem tak jak podałeś i dioda mruga.
Dodatkowo dodałem warunek w petli
i w timerze
To dioda 2 wylacza sie ale nie po czasie 30s tylko kilka sekund
Z ciekawości pytam dlaczego tak sie rozbiega.Dodam,że dioda z timera mruga co 1s
Odp. Timer Bascom
Zerknij na taki sposób rozwiązania dla Twojego kodu ;)
BARTek
Moja strona