Człowieku! Po co ci zmienne typu Single do liczenia kroków! Zastosuj Long jak już chcesz mieć zmienne 4 bajtowe.
Wszystkie Sub`y powinny być poza pętla Do Loop a tymczasem u Ciebie etykieta Silnik jest w pętli. Gosub czyli "go sub" oznacza odłożenie na stos aktualnego adresu gdzie program jest wykonywany, skok pod adres procedury Sub i powrót w to samo miejsce (a dokładniej do następnego po odłożonym adresie miejsca) poprzez Return Return zdejmuje ze stosu odłożony...
Witam, koledze pewnie chodzi o polecenie Exit For :) szczegóły w pomocy Bascoma'a. Pozdrawiam, aleexander
W twoim programie jest tak: [syntax=basic4gl]If Wart_ac > 1000 Then Gosub Wykrywanie Elseif Wart_ac < 1000 Then Gosub Czujnik1przeciwnik Elseif Wart_ac1 < 1000 Or Wart_ac2 < 1000 Then ' ###### ta czesc petli nie reaguje na zmiany w ukladzie ### Gosub Czujnik12lini End If [/syntax] w jaki sposób 3 opcja ma zostać spełniona? Przecież jeśli...
To już musisz poczytać i popróbować. Nie możemy Ci każdej jednej rzeczy tłumaczyć.
To się nie ma prawa skompilować. Goto skacze do x, którego nie ma. Poza tym jest jeszcze kilka kwiatków w tym programie. Domyślam się, że program ma zmieniać stan końcówki PD.1 w wyniku zwarcia końcówki PC.4 do masy. Zatem [syntax=basic4gl]DDRC.4 = 0: PORTC.4 = 1 DDRD.1 = 1 Do Debounce PINC.4, 0, x, Sub Loop End x: waitms 30 toggle portd.1 Return[/syntax]...
Ty nie chcesz zatrzymywać program tylko drzwi, a to jest wielka różnica. Np. można posłać program do pętli warunkowej.
uC wykonuje instrukcję po instrukcji. Może w jednej pętli wykonywać różne rzeczy ale nie w tym samym czasie. Napisz program tak jak ma się wykonać po kolei. Twój zakończy się po pierwszym END licząc od góry. Program który napisałeś nie kompiluje się z powodu braku deklaracji zmiennych i niekompletnej pętli Do: Loop. P. S. Dwie niezależne pętle w tym...
Potestuj bo tak na szybko przy poobiedniej kawie klapałem jedną ręką :D Może coś przeoczyłem i trzeba prześledzić. Te złożone operacje w jednej linii dla stałych Bascom robi bez problemu. Osobiście bym tego tak nie napisał. Nie wiem po co to ciągle obliczać jak można raz... [syntax=vbnet]$regfile = "m328pdef.dat" $crystal = 16000000 $hwstack = 64 $swstack...
Ten drugi pomysł jest moim zdaniem lepszy. Do tego możesz użyć końcówki przerwania INT - ma konfigurację zbocza, którym jest wyzwalane przerwanie.
Zresetować SUB?? Chodzi ci o wyjście z suba? On Urxc Getchar Enable Interrupts Enable Urxc dim x as byte dim znak as byte X = 52 petla_glowna: gosub Wykonaj goto petla_glowna end Wykonaj: Incr Koniec if koniec=x then goto petla_glowna end if return :getchar Znak = InKey() X:=Znak return
:arrow: zumek Trzeba jeszcze włączyć na nowo przerwania (sei).
Po sprawdzeniu załączonego kodu widzę, że procedura Complet_reg zawiera wyłącznie ustawienie częstotliwości. Jeśli chcesz dodać do ramki inne opcje to musisz ustawić odpowiednie bity zmiennej Reg. Umieść to w procedurze Complet_reg: Sub Complet_reg: Reg = Frequency Reg.16 = 1 ' przykładowe ustawienie bitu 16-tego ramki Reg.17 = 0 ' jw bit 17 End...
Masz waitms- tylko ukryte. Każdy Cls musi mieć przynajmniej 2ms. A nie wiem czy w Bascomie nie więcej- na zapas. Jeśli masz oscyloskop- to wstaw na końcu pętli do-loop jakiś toogle na któryś pin i zmierz czas. A w przerwaniu Odmierz1s użyj CTC i tylko ustaw jakąś flagę. I wyrzuć wszystkie obliczenia do głównej pętli.
Jak wyjść z pętli do loop, w której znajduje się encoder(). ? Funkcja ENCODER ma parametr określający czy czekać na zdarzenie, czy tylko sprawdzić i przejść dalej. Ty ustawiasz tryb "czekaj". Samo wyjście z pętli to po prostu EXIT DO.
Uwierz mi najlepiej zapomnij o skokach i w ogóle o BASIC z Atari. Na mikrokontrolerach raczej unika się procedur "skaczących", a bardziej korzysta się z tzw. flag. Skokami można sobie bardzo wiele bałaganu narobić. Inaczej niż na Atari trzeba konstruować program. Nie jako procedury wykonywane linijka po linijce, lecz trzeba sobie wyobrazić, że taki...
Do If Pinb.0 = 0 And Pinb.1 = 0 Then 'migacz imitujący diode alarmu Waitms 500 'gdy zapłon i swiatła wyłączone Portd.0 = 1 Waitms 500 Portd.0 = 0 End If If Pinb.0 = 0 And Pinb.1 = 1 Or Pinb.0 = 1 And Pinb.1 = 0 Then 'jeśli zapłon wyłączony i światła włączone Waitms 500 'gdy zapłon i swiatła wyłączone Portd.1 = 1 Waitms 500 Portd.1 = 0 End If Loop Powinno...
Popraw pętle usuń tę z okolic display on off i ujmij cały program w taką pętlę
Sam sobie odpowiedziałeś na pytanie. Jest jeszcze jedna możliwość ale jest nieco niebezpieczna i wymaga aktualnej wersji BASCOMa: funkcja MEMCOPY.
Nie wiem czy będziesz mógł ustawić Timeout bo jest od wersji 2076. Najwyżej zakomentuj. Reszta powinna działać. Poczytaj o "Config Serialin" i "Ischarwaiting" Tak dokładniej to Input czeka na Enter albo na to co ustawimy żeby czekał (Config Input) Jak Enter nie nadchodzi z powodu jakiegoś błędu to przydaje się Timeout. Najczesciej odbieram dane po jednym...
Wydaję mi się że jest to możliwe ale procedura umieszczona w podprogramie powinna być bardzo krótka. Pewniejszym sposobem jest stosowanie flagi w przerwaniu a w pętli głównej przetwarzanie jej.
No to mamy winowajcę. Robienie czegokolwiek długotrwałego w przerwaniu to chory pomysł, ale problem polega na tym, że procedury obsługi LCD nie blokują przerwań na czas wykonywania operacji na LCD - dołóż blokowanie i odblokowanie przerwań na prymitywach LCD i zadziała (jako proteza). żeby zadziałało dobrze - przenieś obsługę 1Wire do pętli głównej.
???
poczytaj jest dosyc info w necie Dodano po 48 tu masz przyklad podlaczenia: http://www.qsl.net/pa3ckr/bascom%20and%2...
Specjalnej funkcji to nie ma, ale nic nie stoi na przeszkodzie napisać kilka linijek które to zrobią. Np. w pętli for next z użyciem mid()
Program działa, tylko ma pewien błąd logiczny, zastanów się co się dzieje w pętli i jak szybko.
Dodaj flagę , zwiększaj ją w przerwaniu, a w pętli głównej sprawdzaj czy osiągnęła już równowartość 750ms.
Mam taki problem, iż w głównej pętli mam wywołania paru procedur. Część nich ma się wykonywać za każdym wykonaniem pętli (np odbieranie podczerwieni) tu nie może być opóźnień. ale za to inne potrzeba mi wykonać np co 30 sek. Do Call pilot() ' ma pracować bez opóżnień Call komunikacja() ' ma się wykonywać co np 30 sek Call kontrola()...
Wystarczy sprawdzić czy funkcja Getatkbd() zwraca 0 wtedy żaden klawisz nie jest naciśnięty. Warunek można więc skonstruować tak, że gdy zmienna do której zwracana jest wartość funkcji Getatkbd() jest większa od zera to robimy obsługę klawiatury, a jeśli nie program normalnie kręci się w pętli. Wciąż nie rozumiem czemu tak uparcie chcesz do tego wykorzystywać...
Niepotrzebnie otwierasz i zamykasz kanał przy każdym wysyłaniu. Otwórz kanał przed pętlą a w pętli tylko wysyłaj dane (bez zamykania kanału).
wartosci stalych mozna zmieniac i nie trzeba pisac zadnych dodatkowych procedur- spojrz w helpa za slowami increment (INCR) i decrement(decr) z tego co mi sie kojazy to mozesz sobie nawet okreslic wielkosc ustalonego kroku
Jeśli chcesz aby np. dwie diody mrugały z różną częstotliwością to w najprostszy sposób możesz to zrobić tak: na początku pętli głównej dajesz małe opóźnienie powiedzmy 5ms. Potem w każdym obiegu pętli (co 5ms) zwiększasz wartość dwóch zmiennych np. Licz1 i Licz2. Kiedy Licz1 osiągnie wartość 50 wtedy zerujesz ją i zmieniasz stan pinu do którego dołączona...
przycisk progresywny? te materiały sam musisz chyba sobie wykombinować. robisz to za pomocą pętli , wciskasz przycisk , tworzysz sobie zmienną x = ileś tam milisekund która określa odstęp czasowy , w pętli zmieniasz sobie jakąś tam swoją inną zmienną, zmniejszasz x i czekasz x czasu, jeśli przycisk puściłeś to wychodzisz z pętli i the end.
O to to to... tylko wszystko idzie w pętli.
ooo dzięki za odpowiedź :-) będę testował po pracy
Odczyt z ADC czyli, Pomiar=Getadc(1) wrzuć do pętli głównej.
Do tej lampki wystarczy 1/4 twojego programu. Dodano po 7 Zadeklaruj zmienną , by zwiększała się do 255 gdy PINB.0=0 i zmniejszała gdy PINB.0=1. Możesz to zrobić w pętli DO...LOOP.
Inkey nie czeka, więc spokojnie możesz go używać. Wyślij komputera 1 znak np. start to '1' a stop to '0' [syntax=basic4gl]Dim Znak as byte Dim Wysylanie as bit '... Do '... Znak = Inkey() If Znak > 0 Then If Znak = 49 Then '49='1' Wysylanie = 1 End If If Znak = 48 Then '48='0' Wysylanie = 0 End If End If If Wysylanie = 1 Then 'wysylanie danych End If...
Nie znam się zbytnio na bascomie, ale spróbuj czy jednorazowe przesunięcie bez pętli zadziała. Być może to jakiś ukryty problem z przesuwanie rejestrów które są rejestrami fizycznie podłączonymi do sprzętu.
skoro ma to być zegar, to po co używać pętli for? Zastąp ją lepiej pętlą nieskończoną typu do...loop lub jej asemblerowym odpowiednikiem
1. Daj sprawdzanie szyfru w pętli bo zajeździsz BASCOM'a tak długim warunkiem ;-) [syntax=BASCOM] Valid = 1 For Index = 1 to 8 If Kod(Index) <> Szyfr(Index) then Valid = 0 Exit For End If Next Index [/syntax] 2. Zamiast Goto Alarmowanie powinno być Gosub Alarmowanie ponieważ Alarm = 0 nigdy nie zostanie wykonane.
Z tego fragmentu nie wiadomo czy używasz przerwań. Może wywołujesz jakieś przerwanie i jego obsługa zajmuje tyle czasu , że przychodzi następne przerwanie i program się pętli ( jedyne co robi to obsługuje przerwanie )
I jakie mam zmienne umieścić w tej pętli ?
Z tego co widzę, to nadal masz funkcję miganie wrzuconą do pętli głównej... a ma być w funkcji, która obsługuje przerwanie timera. Druga sprawa - nie znam Bascoma, więc nie wiem na ile radzi on sobie z jednoczasowym dostępem do zmiennej z pętli głównej programu i przerwania. W C programista musi sam o to zadbać stosując volatile i sekcje krytyczne....
A czy wader_669 napisał że "zapis Long w EEPROM - BASCOM" wymaga użycia pętli Do...Loop?
hmmm...BASCOM...to język do programowania mikrokontrolerów. Chcesz się czegoś dowiedzieć to spróbuj może w dziale mikrokontrolery. Pozdrawiam.
żle napisałem :) nieodbiera, a moze odbiera ale nie wychodzi z pętli
Jeśli DS'y masz podłączone 2 przewodowo to między pomiarami musisz odczekać około sekundy (jak sprawdzałem je w każdej pętli programu to wychodziły mi różne śmieszne rzeczy) , poza tym czas konwersji to około 750ms a ty masz chyba 800 ale us a nie ms (chyba że us to nie są mikrosekundy) ja mam waitms 750. Przy podłączeniu 3 przewodowym mogę sprawdzać...
Teraz coś się stało i bascom wykrywa mi at128 ale nie można wgrać programu bo wyskakuje błąd: "Difference at 00000". Potem chciałem zmienić fusebity ale okno ustawień tylko się odświeża a fusy dalej pozostają takie same. Co może być przyczyną?
Witam ! dopisz do Twojej pętli: do Lcd ; T Lowerline Lcd ; S loop Pozdrawiam. Stefan GG6293398
Proponuję wprowadzić opóźnienie w pętli.
Program się zawiesi bo na czas zapisu program jest zatrzymywany w pętli oczekującej na zakończenie zapisu (tak robi BASCOM a domyślam się że mówisz o BASCOMowej funkcji zapisującej a nie jakiejś własnej). Kolejne przerwania od Timera będą wywoływane tuż po poprzednim a więc program główny będzie praktycznie stał w miejscu. O zajeżdżaniu pamięci EEPROM...
Ha... a jaki ma być ?
Może ten zapis Compare A = toggle wstaw w innym miejscu np w pętli głównej i sprawdź (tylko czy bascom łyknie coś takiego).
Przykład: dim x as bit set x do if x=1 then reset x cls end if loop To że masz 2 programy gdzie w każdym masz zadeklarowany inny zegar to wcale nie znaczy że musisz go zmieniać za każdym razem. Przecież np. można wpisać inne wartości do timera itd.
mam to w pętli jednosekundowej
Kolego, po pierwsze to napisałeś to bardzo nieczytelnie. Dobrze jest stosować wcięcia w pętlach i w "ifach". Na domiar złego używasz jakiś dwukropków po rozkazie, albo między nimi, co po pierwsze zaciemnia obraz programu, a po drugie nie koniecznie działa jak chcesz. Czy Twój program po kosmetycznych korektach nie wygląda bardziej czytelnie ? [syntax=basic4gl]...
Witam jeśli dobrze zrozumiałem temat to minuta nie jest krytyczna policz zmienną incr x ' w pętli masz co 2s if x>30 then ..... ' to co chcesz zrobić
Osobiście mam taki pomysł: Ustawiamy sobie timer w tryb licznika i oczywiście zlicza sobie impulsy i generuje przerwanie podczas przepełnienia. Teraz resetuje nam(lub ustawia wedle uznania) zmienną "flaga", oczywiście po jakimś czasie. Następnie prosty waruneczek: Set Flaga : While Flaga = 1 : Wend I co robi procek? Grzecznie czeka aż flaga...
Nie taka konstrukcja jest jest niepoprawna. Obsługa przerwania musi być zakończona instrukcją Return. Zamiast Goto ustaw flagę i sprawdzaj jej stan w pętli głównej. Jeśli warunek się spełni to wtedy skocz do podprogramu.
Witam Potrzebuje pomocy w napisaniu programu dla Atmega32 w Bascom Mam prosty układ w którym podanie masy z przycisku na pin PC0 (PINC.0) powoduje sofstart na PWM1A (PD5) od 0 255 i po softstarcie PWM1A pozostaje na wartosci 255 aż do puszczenia przycisku na PINC.0. Natomast podanie masy z przycisku na pin PC1 (PINC.0) podowduje taki sam efekt ale na...
Na przykład jest sobie pętla i w niej jak trafi na tą instrukcję to nie zostaną wykonane te instrukcje które są dalej tylko wraca do początku pętli.
Mam wątpliwości, czy w kodzie odbiornika instrukcja [syntax=basic4gl]Znak=inkey() [/syntax] nie powinna być wewnątrz pętli.
Timer już masz zastosowany. Jeśli tylko przeniesiesz warunki sprzed pętli do pętli wszystko będzie działać. Już niebezpiecznie zbliżyłem się do podania gotowca, więc z mojej strony na razie koniec.
A skąd niby takie wnioski skoro w programie została umieszczona dyrektywa m32def.dat ? Jeżeli sugerujesz się opcjami to jesteś w błędzie.
Opisz co się dzieje. Nic nie wyświetla, czy krzaki? Kontrast dobrze ustawiony? Daj to w jakiejś pętli.
A jakbyś w procedurze Menu umieścił pętlę i warunek po którym spełnieniu następowało by wyjście z pętli
..w helpie baskołoma wpisz EXIT pzdr.
Niekoniecznie bez sensu , dlatego , że u mnie bascom przyjmuje parametr dla waitms i dla waitus ( sprawdzałem tylko w symulacji dla v 1.11.9.8 ) . Jeśli u Rezus99 nie działa to musi zrobić w pętli.
działa dobrze przyczyna to: If Zmienna < 10 Then Locate 2 , 7 Lcd " " (zamazuje drugi znak i dlatego widać 1 z 10 i 2 z 23 a szczególnie Waitms 250 (czeka i dlatego widać przez chwile) ja bym zrobił tak If Zmienna < 10 Then Locate 2 , 7 Lcd " " End If Locate 2 , 6 (przeniesione z początku pętli Lcd Zmienna Waitms 250
chciałeś przerwanie a wcale go nie używasz (prawie wcale). to Samo można zrobić w programie głównym poprostu sprawdzając stan scon.0 a tak zajmie mniej miejsca. Radze zmienić koncepcje. Rozumiem że chcesz żeby ci wypisywało jakieś cyfry czy znaki na lcd. No to zrób zmienna zliczajacą znaki, potem jakąś zmienna typu bufor (o długości taką jak ilość znaków...
Żeby nie powielać tematu - podobne pytanie: Jak wysłać na jednym pinie ściśle określoną liczbę impulsów z zakresu 0-250000 (Impulsy) w jak najkrótszym czasie (ATmega8 wewnętrzny rezonator 8MHz - Bascom), w pętli: Do If Impulsy = 0 Then Exit Do End If Decr Impulsy Portb.0 = 1 Portb.0 = 0 Loop trwa ponad 20 sekund.
[url=http://www.elportal.pl/index.php?mo... masz polski plik pomocy do Bascoma. Najlepiej zrobić to w jakiejś pętli np. Do instrukcje do wykonania Loop
Nie ma maksymalnej liczby tylko możliwości piszącego program . Jeżeli to są początki przygody z Bascom'em to pozostań przy jednej pętli Do..Loop . A jeżeli nie kompiluje to zaremuj wszystko co w pętli i dopiero krok po kroku dodawaj nowe linie kodu tworzące logiczną całość , cały czas kompilując ( sprawdzając poprawność kodu ) . Nigdy nie pisz programu...
Spróbuj przykładu podanego w [url=http://www.elektroda.pl/rtvforum/to... wątku. Nadawanie przez PRINT. Odbiór w przerwaniu URXC i flagą ustawianą i testowaną w pętli głównej programu.
Proponuję do wykrywania dźwięku użyć przerwania zewnętrznego to zminimalizuje opóźnienie. Teraz program w pętli czyta ADC i sprawdza stan pinb.1 co nie jest optymalnym rozwiązaniem w tym przypadku.
Przecież wiesz jakie masz taktowanie procesora. W Bascomie obok czasu masz podaną ilość taktów, więc można to sobie przeliczać.
, przetłumacz poniższy kod z BASCOM AVR na Arduino Uno: $regfile = "attiny2313.dat" $crystal = 8000000 Dim A As Byte a=0 Config Pind.6 = Output led Alias Portd.6 led= 0 Config Pind.0 = Input Portd.0 = 1 Sw Alias Pind.0 do if a >1 then a=0 if sw=0 then bitwait sw, set incr a End If if a=1 then toggle led waitms 100 else led=0 end if loop end Przekształcanie...
Można to łatwo sprawdzić. Oto mój testowy program: $crystal = 11059000 $baud = 9600 Dim Pin As Bit Dim Wewn As Word Wewn = 0 'vvv---tu ustaw pierwszy Breakpioint (F9) 'Jak symulacja sie zatrzyma skasuj licznik czasu 'symulatora (kliknij na niego), i wznów symulacje nop Do Pin = P3.0 Incr Wewn Loop Until Pin = 0 Or Wewn = 498 nop '^^^---tu...
Można odblokowywać i blokować przerwania w dowolnym momencie. Można. Ale po co w tym programie? Uważasz, że powinno się je odblokowywać za każdym obiegiem pętli głównej?
Dalej nic, w ogóle uC nie reaguje na naciskanie uswitchy jak jest cos dopisane w pętli.
Szczerze... to raczej większość. Ponawiam rozważenie konieczności użycia dwóch pętli.
Program w C działa na pewno.Ja chce go przerobic do Bascoma. Ogolnie to potrzebuje program do sortowania 4 liczb w Bascomie.A z ta petla Do....Loop to macie racje. Jesli ktos zna jeszcze inny sposób aby wkonac sorowanie w Bascomie to mile widziane propozycje. Ja bede sie staral przerobic ten z C bo wydaje mi sie prosty.Jak mi sie uda to zamieszcze go...
Tak byłoby najprościej, ale bajtów mam 5 szt. PRzydałaby się większa zmienna.
Usuń całkowicie Waitms z pętli odbiornika a w nadajniku zwiększ wartość Waitms. Jak nie pomoże to zrób odbiór na przerwaniu od URXC.
$crystal = 14745600 Czy oprócz podłączenia takiego kwarcu ustawiłeś odpowiednie fuse bity? Następna rzecz to nie musisz robić resetu 1wire. Największy błąd polega na tym że nie czytałeś helpa bo gdybyś to zrobił to dowiedziałbyś się że zmienna do której zapisujesz ilość urządzeń koniecznie musi być typu WORD lub INTEGER. Na koniec radzę ci skorzystać...
Kolego jakoś tak piszesz że nie wiem o co Ci chodzi. Proponuje Ci się pobawić symulatorem. Napisz jeszcze raz o co Ci chodzi tylko jakoś tak bardziej zrozumiale.
Na szybko napisany kod $regfile = "m8def.dat" $crystal = 1000000 Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B00111000 Portc = &B00000000 Config Portd = &B11111111 Portd = &B11111111 Do 'pętla nieskończona Portd.0 = 1 'zaświeć lampkę Wait 1 'czekaj 1 sekundę Portd.0 = 0 'zgaś lampkę Wait 1 'czekaj 1 sekundę Loop End 'koniec...
No to w takim razie nie wiem o jaki program w BASCOMie Ci chodzi. Do sterowania pętlą PLL jakiś gotowiec by się znalazł ale to tego co szukasz to nie ma. Po prostu masz swój indywidualny pomysł na układ i musisz go zrobić samemu bo nie sądzę aby taki już istniał. Bo chyba nie mówisz o kodzie do PWMa? Tosz to 1 linijka kodu :D
Zastanów się dlaczego ten kod nie działa tak jak byś tego chciał . Zawsze stosuj taką konfigurację portów (tzn. taki typ zapisywania) Widzisz dokładnie jak masz ustawione poszczególne końcówki portów Config Portb = &B11111111 'jako wyjścia Portb = &B00000000 'stan początkowy niski Config Portc = &B00111000 'jako wyjścia i wejścia Portc = &B00000000...
Tak na partyzanta możesz sobie ze 2-3 razy odczytać temperaturę z DS zaraz przed pętlą główną. Unikniesz wtedy tych 85 stopni.
Wywietlacz świeci tak, jak mu każesz - na chwilę zapalasz każdą cyfrę na niewłaściwej, sąsiedniej pozycji. Wyświetlaczem multipleksowanym steruje się ZAWSZE w przerwaniu timera, a nie w pętli.
Mnie uczono, że w przerwaniach najlepiej umieszczać jedynie ustawianie flagi, a jego obsługę w pętli głównej (pracującej z max. częstotliwością). Może spróbuj takiego rozwiązania, bo bez kodu źródłowego ciężko coś więcej doradzać.
No na modyfikację nie mam czasu. Zwłaszcza, że już dawno nic nie pisałem. W dodatku ja nie używam wait (i Tobie też odradzam) co wymaga trochę innego podejścia do pisania programu. Mogę jedynie podpowiedzieć, że najlepiej było by skorzystać z przerwań INT0 i INT1 podłączonych pod przyciski. Wtedy przerwanie aktualnego zadania było by możliwe natychmiast....
Witam. Można tak: $regfile = "attiny13.dat" $crystal = 1200000 Config Portb.3 = Output Config Pinb.4 = Input set pinb.4 reset portb.3 do if pinb.4=0 then do Set PORTB.3 Wait 1 Reset PORTB.3 Wait 1 Loop end if Loop W pętli odczytujesz stan przycisku i jak będzie niski zacznie migać.
Nie !!!! Nie w środku pętli to byłoby bez sensu. Ale ja to bym zrobił inaczej [syntax=basic4gl].. .... ...jakieś instrukcje.. .. Dim Pk As Byte Declare Sub PrzyciskC5 Ddrc = &B00000011 Set Portc.5 .... ...jakieś instrukcje.. .. Menu3: Pk = 0 Do Locate 1 , 8 Lcd "T" Start Adc Temp = Getadc(6) Temp = Getadc(6) C = Temp / 4.166 Celsius = Fusing(c , "###.#")...
Na początku podmenu masz 'ekran MENU 2-ustawienia temperatur Case 1 Gosub Wczytaj_dane_2 Index=0 Co każdą pętlę przypisuje ci do Index = 0
Po co te klawisze w przerwaniu sprawdzasz ? I czemu tak dużo jest w tym przerwaniu .Licz tam sobie tylko czas , a sprawdzanie klawiszy zrób w pętli głównej.
Napisz pętlę, która wykona się tyle razy, żeby odliczyć te 5 sekund (np 5000 razy z waitms 1 w środku). Jeśli jakikolwiek przycisk zostanie wciśnięty, to idziesz do ich obsługi, jeśli nie, to pętla się zakończy i program wróci do głównej pętli.
Która wersja Bascoma ? Jeśli jedna z nowszych to spróbuj skompilować w wersji 1.11.9.5 lub 1.11.9.8. Bascom od wersji 2.x.x.x nie działają mi za dobrze, a zwłaszcza RC5 i Atmega168.
rezystancja pętli separator pętli generator pętli
czujka zalania konfiguracja hasło biosie laptop toshiba fiata punto kontrolka poduszki
kominek drzwi hulajnoga xiaomi zasilacz
Amica PI6508 PLU – płyta indukcyjna wyłącza się podczas pracy, przyczyny i diagnostyka Amica OKP6651S – lokalizacja bezpiecznika topikowego i termicznego w okapie kuchennym