Elseif Pinb.0 => 30 And < 50 Then Elseif Pinb.0 => 30 And Pinb.0 < 50 Then Dalej nie widzisz różnicy?
Jeżeli we wszytkich IF występuje to samo sprawdzenie, to trzeba go zrobić raz na początku, co uprości kod: Zamiast: If M1 = 1 And K = 1 Then test.0 = 1 Else If M2 = 1 And K = 1 Then test2.0 = 1 Else If M3 = 1 And K = 1 Then test3.0 = 1 End If End If End If Czytelniejsza konstrukcja: IF K=1 THEN If M1 = 1 Then test.0 = 1 Else If M2 = 1 Then test2.0 =...
Wszystkie informacje znajdziesz w datasheet układu lub tutaj na elektrodzie. Kwarc taki jak na schemacie, C1 najlepiej zastąpić trymerem, rezystory podciągające do SDA i SCL najlepiej 4k7. A0 można podłączyć do GND lub VDD (zmiana adresu, patrz datasheet). Warto dodać jeszcze kondensator 100nF blisko wyprowadzeń zasilających układu.
No bo zmiennej I2_single przypisujesz wartość całkowitą. I2 jest przecież bez części ułamkowej.
if (C=1) or (Y=0) tehn jest ograniczona. A normalne if...then chyba do dziesięciu. Dodano po 7
Witam. if a() = b() then jakieś tam instrukcje end if Taki warunek porówna tylko pierwsze elementy tablicy.
Witam. Godzine temu ściągnołem Bascom-avr i zaczołem czytać plik pomocy dołączony do programu. Postanowiłem napisać program korzystając z mojej dotychczasowej wiedzy i już natrafiłem na problem. Oto kod programu Config Portd = Output; Config Portb = Input; Dim I As Byte Dim W As Byte Dim Z As Bit Dim Temp As Byte If(pinb.2 = &B0) Then W = 0;...
Gdzie są takie ograniczenia co do ifów? Pokaż mi miejsce w instrukcji bascoma gdzie o tym pisze...
napewno zamiast swich case używaj if (na każdej instrukcji oszczędność 2bytów) nie uzywaj tez else if i samego else bo to tez zużywa więcej niż if
To proste, wykorzystaj warunek. IF wyrażenie then instrukcja else instrukcja end if
Przerwanie miałbyś z częstotliwością 32000Hz(8000000/250), gdybyś tylko przeładowywał Timer w przerwaniu. [syntax=basic4gl] Prztimer1: Load Timer1, 250 '<----- w tym miejscu na przyklad Incr Licznik If Licznik > 100 Then Licznik = 0 End If[/syntax]
Daj te instrukcję po "then" w nastepnych liniach, czyli if coś tam Then instrukcje end if
Ja mam coś takiego u siebie, tylko to nie wszystkie kombinacje bo będzie ich 36, z 6 wejść. Dim Stan_portu As Byte Stan_portu = Portd Do If Stan_portu <> Portd Then Stan_portu = Portd Select Case Portd Case 128: instrukcje... Case 192: instrukcje... Case 224: instrukcje... Case 240: instrukcje... Case 248: instrukcje... End...
If (warunek) Then (tu instrukcje gdy warunek jest spełniony) Else (tu instrukcje gdy warunek nie jest spełniony) endif
Witam Masz troche sporo zamiaszania w instrukcjach IF THEN. W zasadzie musiał bym przeanalizować cały kod. Proponuje Ci zebyś napisał sobie kawałek kodu z instukcją IF .... Then Else ........... end if Wtedy załapiesz o co chodzi. Ten błąd ERROR7 ozacza że kompilator spodziewał się instrukcji if...then.
Koledzy dobrze radzą, ale jest jeszcze funkcja Select Case: Select Case Licz Case 1 : Print "1" Case 2 : Print "2" Case 3 To 5 : Print "3-5" Case Is >= 10 : Print ">= 10" Case Else : Print "Liczba spoza zasiegu" End Select
Witam. Każde otwarcie instrukcji warunku IF musi być zakończone End IF. Pokazane błędy mówią ze nie zamknąłeś wszystkich warunków IF. Po kodzie widać że brakuje kilku zakończeń End IF.
Masz jedną instrukcję End If za mało. Kompilator ci o tym przypomina. Policz, że instrukcji If masz o jedną więcej niż End if.
W podprogramie obsługi przerwania Timer4 brak ci instrukcji end if.
Pokaż program. Jakiego typu są zmienne A i B . Czy jeśli dasz warunek c = a-b if c > 0 then .... też jest źle.
Jeśli minuty lub sekundy są mniejsze od 10 to wyświetl przed nimi "0". Instrukcja IF kolego.
Rozumiem, o co ci chodzi, ale nie ma w Bascomie instrukcji z taką składnią jak napisałeś...SET PORTB.7=ADC. Po odebraniu komendy, czy ramki, czy jak tam wolisz sterować procesorem przez RS232, musisz zmienić stan i kierunek portów za pomocą wspomnianych rejestrów. Np: If key="A" then DDRC=&b01010101 PORTC=&b10101010 end if "KEY" Pobierasz...
Timer w przerwaniu obsługuje wyświetlacz LED i inkrementuje zmienną byte, która w pętli głównej w instrukcji Case wybiera konkretne funkcjonalne fragmenty programu do wykonania, których wykonanie czasowo mieści się pomiędzy przerwaniami od timera. W przerwaniu od timera ustawia się także flaga przerwania, która uruchamia za pomocą If Then instrukcję...
Witam. Praktyczne pytanko: w jaki sposób, określić ilość cykli zegarowych niezbędnych na wykonanie poszczególnych instrukcji języka Bascom AVR, np. getadc(), if, input oraz w jaki sposób obliczyć rzeczywisty czas potrzebny na wykonanie pojedynczej instrukcji, znając wartość rezonatora kwarcowego, oraz użyty mikrokontroler?
ad2. napięcia nie przekarzesz chyba ze bedziesz mial w procku przetwornik AC i CA. przekazać możesz stan logiczny np ( procek 8051 ) na p1.0 masz jedynke logiczna (5V) to możesz stan tego portu przeniś na inny pin np p3.0 bascomie robisz to chyba tak ( nie wiem dokladnie bo w bascomi nie siedzialem od 2003 roku) p3.0 = p1.0 a jaesli chcesz potrzebujesz...
próbowałem też tak: Musi działać. Dlaczego nie działa? Co się dzieje? Nie wykonują się instrukcje po IFie?
W helpie znajdziesz coś takiego: Przeznaczenie: Tworzy tzw. blok decyzyjny. Składnia: IF wyrażenie THEN ciąg_instrukcji i nie zgodzę się że w nim nic nie ma, bo są przykłady do każdej instrukcji. Z tym IF to chodzi o to, że albo za THEN w tej samej linii jest ciąg instrukcji i nie pojawia się END IF albo za THEN nic nie ma tylko wszystko w kolejnych...
Nie znam się kompletnie na Bascomie, ale wydaje mi się, że pomiędzy "Then" a "End If" powinna być jakaś instrukcja.
:not: dopiero teraz się skapnąłem że nie jest koniecznym dawanie na końcu end if jeżeli ma to być tylko jedna instrukcja po if :) Dlatego wcześniej mi się dłużyło :D
także chciałbym zapytać jak mogę indywidualnie nastawiać każdy PIN potru z osobna? Np. PORTC |=0x08 PORTB |= (1<<PB6) Poczytaj o operatorach bitowych - http://mikrokontrolery.blogspot.com/2011... Else dotyczy poprzedzającego go ifa. http://mikrokontrolery.blogspot.com/2011...
'If' a 'if' to ogromna różnica w C :) tak samo 'Else' i 'else'. Mają być małe literki! Poza tym co to za konstrukcja? ; ma określoną funkcję w C/C++ Poczytaj o instrukcji prostej i złożonej w C/C++ np. tutaj: http://mst.mimuw.edu.pl/lecture.php?lect... Niestety Basic/Bascom uczy złych nawyków na przyszłość :(
Declare Sub Instrukcje do If Przycisk1 = 0 Then Waitms 30 If Przycisk1 = 0 Then ' gdy nadal jest wcisniety waitms 270 If Przycisk2 = 0 Then Call Instrukcje End If End If Elseif Przycisk2 = 0 Then Waitms 30 If Przycisk 2 = 0 Then ' gdy nadal jest wcisniety Waitms 270 If Przycisk1 = 0 Then Call Instrukcje End If End If End If Loop : End Sub Instrukcje...
Może jakaś kawa by pomogła ;) Zastanówmy się co tu robimy A = 1000 A = A - 1 ..czyli A = 999... X = A czyli X = 999 i dzielimy je przez tysiąc tak? T = X / 1000 ...hmm jeśli T nie jest typu Single to 999/1000 to 0 Teraz mnożymy Zero razy tysiąc tak? Wynik = 0 Odejmujemy od 999 zero tak? Potem.. Y = T * 1000 S znowu równa się 999 / 100 ..czyli 9 Z =...
Masz rację - ustawiałem 22. W kodzie nic nie zmienia tej wartości tylko jest wyświetlanajeśli naciśniemy przycisk w sposób: if p1.3=0 then do until p1.3<>0 if temp<26 then temp=temp+1 print str(temp) ' lub podobna instrukcja end if
zacznij od polskiego helpa z strony : http://www.elenota.pl/programy.php 7Spodziewana instrukcja IF..THEN 269Spodziewano się END SELECT sprawdż dokładnie wszystkie instrukcje warunkowe
Instrukcję warunkową popraw jeszcze, bo zabrakło ci jednego end if'a. Czyli powinno być: if Pinb.0 = 0 Then Portb.2 = 0 End If Tu akurat nie musi nic dodawać bo BASCOM dopuszcza składnię jednowierszową w stylu: If Warunek Then [...] Else [...] Jak napisał landy13, w "kodzie" :) autora zbędny jest End If.
Witam. ........... nie wiem jak zrobić aby te wyzwalanie było tylko od narastającego zbocza. Ściągnij pin 'Start' (PIND.5) rezystorem 10k do GND i odwróc jego logikę na przykład: If Pind.5 = 1 And B = 0 Then Druga sytuacja nie wiem dlaczego ale silnik mi przerywa tak co około sekundę gdy PWM jest włączony. Prawdopodobnie w tym czasie następuje zmiana...
Sprawdzał / stosował ktoś u siebie warunek złożony instrukcji If w kompilatorze Bascom? Czy kod: If Grupa$ = Grupa Or Grupa$ = 255 Then If Adres$ = Adres Or Adres$ = 255 Then Adresat = 1 End If zwróci prawidłowe wyniki? Kompilator nie zgłasza błędów, ale chciałbym mieć pewność, że nie będę miał bug-ów z tego powodu.
Witam mam problem z komendą waitms w bascomie to nie z instrukcja masz problem tylko z programem. Instrukcji waitms używa tysiące ludzi i im działa. No problem ciekawy. Zacząłbym od obserwacji przy jakim tym czasie zaczynają sie problemy bo tgo nie napisałeś. Czy jeżeli zmienisz wait 1 na waitms 999to już jest problem?? Wywal ten podprogram Pobr_znaku....
Zastawia mnie po co ciągle robisz warunek w warunku jak np. tu If Pinb.4 = 0 Then Waitms 1 Incr Setki If Setki = 10 Then Setki = 0 Incr Tys If Tys = 7 Then Tys = 0 End If End If End If Jak już mówiłem wcześniej, jeżeli zaprzęgnąłeś timer to wykorzystaj go do odliczania sekundy wtedy pętla główna zostaje do twojej dyspozycji i bez problemu tam umieścisz...
licznik = 50 w językach pochodzącch od C oznacza "nadaj zmiennej licznik wartość 50". Instrukcja użyta w warunku if() daje zawsze wejście pod if (bo wartość w warunku jest różna od zera). A poza tym, jeśli mowa Arduino, to nic nie wykonuje się "natychmiast", podobnie zresztą jak w Bascom.
Jak sie pisze w jednej linii instrukcje warunkową 'IF' to 'End If' jest niepotrzebne zdaje się :P
Witam... Można to zrobic na wiele sposobow. Sa bardziej lub mniej prymitywne. W zaleznosci od potrzeb stosuje sie rozne metody "detekcji", "programowych blokad" itp Ja zrobilbym to np tak: ----------------------------------------... 'Blokada zadeklarowana jako zmienna bitowa If P1.1 = 0 Then Goto Instrukcja blokada...
A nie prosciej case 0: instrukcja z twojego dekoder case 1: ... etc
Witam! Ja zwykle robię od razu tak: [syntax=basic4gl]Config portd = &b00001111 Portd = &b11110000[/syntax] W ten sposób łączę konfig i ustawienie pullup . W języku BASIC nie zaleca się oddzielania instrukcji dwukropkiem, zamiast: [syntax=basic4gl]If Pg = 0 Then Kier = 0 : Gosub Ruch_key End If[/syntax] Lepiej zapisać tak: [syntax=basic4gl]If Pg = 0...
Dla sprawdzania jednego klawisza: do ... ... ... gosub sprawdzanie_klawiszy if flaga = 1 then instrukcje gdy wciśnięty klawisz end if ... ... ... loop sprawdzanie_klawiszy: flaga = 0 if Ok = 0 then waitms 50 if Ok = 0 then flaga = 1 end if end if return mniej więcej tak to ma wyglądać. Jeśli chcesz sprawdzać kilka klawiszy robisz bardzo podobnie....
Po prostu podwójne badanie wciśniętego key... Chyba najbardziej znane rozwiązanie (nie koniecznie najlepsze!): [syntax=basic4gl]If Portb.0 = 0 Then Waitms 25 If Portb.0 = 0 Then 'instrukcje które mają się wykonać po wciśnięciu klawisza ' End If End If[/syntax] Co istotne - wciśnięcie klawisza w takim rozwiązaniu spowolni główną pętlę o 25ms (podobnie...
Witam Mój atmega8535 daje się programować aczkolwiek przy wykonywaniu programu wariuje (ignoruje np. polecenie if i bez odczytana stanu przycisku przechodzi do instrukcji podlegajacej warunkowi). Zakładając, że program jest OK (nie jest to mój pierwszy program w Bascomie) czy może być to uszkodzenie procka ?
W Bascomie nie da się przeprowadzić takiego porównania w jednej instrukcji, a to dlatego, że nie da się wyróżnić grup porównań.
Uważam, że moderator ... Działania moderatorskie wykonuję na czerwono za pomocą odpowiednich funkcjonalności. Niestety raz się zdarzyło że na czerwono wyciąłeś tekst o "niewygodnym" środowisku programistycznym :D Ale nie o tym będę pisał. Napiszę jak to wyglądało u mnie. Ja zaczynałem od BASCOMa. I to BASCOMa '51. Były artykuły w EdW. Nie miałem jeszcze...
Do pętli głównej przenieś w takim razie fragment struktury Select Case a zmienną niech będzie cas.Wartości jedynie od 0 do 4. Dlatego, że pozostałe wartości będą wyświetlane z instrukcji If then (alarmy). Do każdego jednak warunku case musisz wstawic Wait 1. Inaczej informacja wyświetli się na czas tak mały, że jej nie zauważysz. Ta strukturę Select...
odczytujemy stan przycisku np : instrukcją IF pinc.4 = 0 then ( tu wstawiamy co ma program zrobić ) najlepiej wstawić jakiś podprogram który zadziała jako stoper zadeklaruj sobie podprogram np: stoper po naciśnięciu przycisku wywołasz podprogram stoper w podprogramie stoper umieścisz jak ma działać stoper declare sub stoper do IF pinc.4 = 0 then call...
Info o ograniczeniach było w wersji 8051. W AVR ja go nie znajduję. Generalnie rzadko stosuję Case, gdyż wiele instrukcji IF..THEN daje znacznie mniejszy kod wynikowy. W Helpie nie piszą też, że Deflcdchar działa tylko ze stałymi :-(...robiw
masz blad skladni w instrukcji IF. wyraznie to pisze. zalacz listing a powiemy ci gdzie jest blad
Robisz sobie ten Shift i w zależności od pozycji modyfikujesz odpowiedni bajt adresu. Po każdej modyfikacji wyświetlasz aktualną wartość. Chyba jest w bascomie instrukcja warunkowa "if"? Dodano po 15 tutaj masz algorytm w pseudo-C, powinien być w miarę zrozumiały... musisz zapętlić to wszystko tak, aby było sprawdzane po każdym naciśnięciu klawisza,...
Napisz tak: Dim Zmienna As Byte Zmienna = 0 Config Intx = Low Level | Rising | Falling [ | Change ] 'Konfiguracja reakcji na sygnał przerwania 'za x podstaw nr przerwania wybierz jeden ze sposobów pobudzenia kocówki uC Enable Interrupts 'Uruchomienie przerwań globalnych Enable Intx 'Uruchomienie przerwania INTx On Intx Obsluga_przerwania 'wskazanie...
Config Portb.0 = Output Config Portb.1 = Output Config Portb.2 = Output Config Portb.3 = Output Config Portd.7 = Output Config Portd.6 = Output Config Portd.5 = Output Config Portd.4 = Output zastąp: DDRD=255 Zastąp IFy case'ami, dodaj procedurę zerującą Portd7-4 i kod będzie zgrabniejszy. Przypisanie logiczne zastąpi 4 instrukcje sbi/cbi warte 8 taktów...
Ok, dzięki. Wymyśliłem że skoryguje pomiary instrukcją if..then. Dużej dokładności nie potrzebuję więc będzie ok.
Jeśli chcesz czymś sterować wpisujesz PORT.X Jeśli chcesz sterować Uc to wpisujesz PIN.X Witam. Mylisz się kolego. Wpisywanie do portu to np: Config PortX = Output , PortX = 255 - dziesiętne lub PortX = &B11111111 - binarnie same jedynki na wyjściu. Pinx.y odczytujemy stan danego pinu np: If Pinx.y = 0 then jakieś instrukcje End If
Witam, ....... a nie wiem jak powinienem napisać poszczególne "wątki" programu, żeby całość się wykonywała jednocześnie. Krótko mówiąc, czy pętla "blokuje" dalsze instrukcje? Bardzo proszę o nakierowanie mnie na właściwe rozwiązanie tego problemu, czytam oczywiście pomoc do BASCOM'a i różne wątki na Elektrodzie. Nie ma takkej mozlowosci aby dwie niezalezne...
...w tamtych czasach wszystko rozkładało się o zagnieżdżenia if-ów, ify w switchach w ifie w ifie w switchu i takie konstrukcje... W Bascomie nie ma instrukcji Switch :P prefix
Mam jeszcze jedno małe pytanie. W BASCOM chcę odbierać ciąg znaków z portu RS232 i przypisać je do jakiś zmiennych. Jak mam to zrobić ppoprawnie bo robie tak i nie za bardzo mi to działa Wysyłam ciąg znaków w Delphi 7 jako PChar: #145#123#150#78 A w BASCOM odczytuje tak: A,B,C,D = są jako Byte do A = Input() if A=145 then B=WaitKey() C=Waitkey() D=Waitkey()...
W pierwszym if zmieniasz na Pozycja =2 a za chwilę w drugim sprawdzasz If Pozycja = 2 i wracasz do Pozycja =1. Nie znam Bascom ale odpowiedniejszym w tym przypadku sprawdzeniem będzie instrukcja Select Case
Gdy procesor jest w trakcie wykonywania procedury przerwania, następne przerwanie nie będzie przyjęte , gdyż procesor (nie kompilator!) zeruję flagę globalnego zezwolenia na przerwania. Tak samo flaga bieżącego przerwania (tego, którego procedura obsługi jest wykonywana) zostaje automatycznie wyzerowana. Po zakończeniu przerwania flaga globalnego zezwolenia...
Chyba dokładniej się nie da skomentować ;) Powinno być już wszystko jasne... [syntax=basic4gl]Do ' pętla główna jakiegoś programu ' ' ' tu jest badany przycisk If P = 0 Then 'czy wciśnięty przycisk (P to pin procesora od guzika) If Lk = 0 Then 'czy licznik programowy doliczył już do zera Lk = 50 'jeśli tak to ustaw znowu na 50ms ' (można też nieco mniej,...
Echo wyłączyłem ; nic nie pomogło. Wykorzystuję takie coś: Xdane: Odb_txt = "" 'wyczyść odb_txt While Bufspace(1) < 254 'dopóki jest coś w buforze Bajt = Inkey() 'pobierz znak If Bajt <> 13 And Bajt <> 10 Then 'jeżeli nie jest to znak CR lub LF Odb_txt = Odb_txt + Chr(bajt) 'dodaj znak do Odb_txt Else 'w przeciwnym wypadku Odb_txt = Odb_txt...
Początkową wartość Timera1 liczymy: Częstotliwość / preskaler i wynik odejmujemy od 65536 (bo timer1 liczy do tylu) czyli 16000000 / 1024 daje 15625 65536 - 15625 = 49911 I tą wartość ładujemy do timera1 A gdzie ty to wynalazles ze Timer1 "liczy do tylu" ? e marcus Tam nie jest napisane "do tyłu" tylko "do tylu" czyli do 65536. A swoją drogą dokładniejszy...
a instrukcja if powinna sie znajdować w pętli do loop inaczej działa tylko podczas startu programu ;)
Dzięki za odpowiedź. Na symulacji strzałka po prostu leciała po kodzie i przynajmniej ja nie byłem w stanie z tego zbyt wiele wywnioskować. Czy jest inna metoda (instrukcja) która jest podobna do pustej pętli "do-loop until" (poza przerwaniami)?
Witam, posłuchaj, gdy piszesz program w Bascomie to zawsze trzymaj się takich zasad jak używasz instrukcji IF 1.) prosty IF If a = 1 Then Gosub JakasProcedura 2.) bardziej złożony If a = 1 Then b = a + 1 Call Inna_procedura Endif 3.) jeszcze bardziej złożony If a = 1 Then b = a + 7 Call Procedurka2 Else b = a + 2 Call Procedurka3 Endif nie staraj się...
niedziała, co niewpiszę to i tak nic z tego. Gdy zapełni się zmienna to przestaje odsyłać znaki do kompa. Na dodatek nie działa instrukcja if then else, bo czy z nią czy bez to program zachowuje się tak samo.
Tak tylko, że ja chciałem wykorzystać fragment kodu no i nie wstawiłem całości dlatego były takie wyniki. Otrzymałem od autora pełny program i te If''y odnoszą się do konkretnych instrukcji i wszystko działa i nie przeszkadza te 7us.
Dzięki za pomoc. Zamieszczam zmodyfikowaną część kodu. Jeśli chodzi o instrukcje IF to sugerowałem się się książką "Programowanie mikrokontrolerów AVR w języku Bascom M. Wiązania: cyt. „Bascom pozwala na zagnieżdżanie instrukcji If...Then, ale aby nie stosować dość złożonych zagnieżdżonych bloków instrukcji If...Then, przewidziano instrukcję Eleseif,...
Rozumiem, czyli zmienna String to jakby ciąg zmiennych bajtowych stanowiący całość i w programie instrukcja: IF zmienna_string_1znak(to jakby jedna zmienna bajtowa, tylko inaczej interpretowana, bo nie mogę do stringa w programie wpisać prosto wart. liczbowej, a jedynie literę, która reprezentuje ową wartość liczbową) = "a" then... jest równoważna...
Łap. Napisałem w przerwie między... Zajmuje połowę mniej niż Twój a działa :D [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 8 $swstack = 8 $framesize = 8 Config Portb = &B01110 : Portb = &B10001 Sw Alias Pinb.0 D1 Alias Portb.1 : Set D1 D2 Alias Portb.2 D3 Alias Portb.3 Config Timer0 = Timer , Prescale = 1024 , Clear...
ej racja, kurde. Sorry przeoczylem to oczywiscie :D Dodano po 4 $regfile = "m8def.dat" $crystal = 1000000 Config Portc = &B1111111 Portc = &B1111111 Config Portd = &B11111111 Portd = &B11111111 config pinb.1= input ' tego nie miales a bardzo wazne S1 Alias Pinb.1 Set Portb.1 Declare Sub Buz Declare Sub Buze Declare Sub X Dim I As Byte Dim...
Przerwanie_0: 'co 2ms If Liczniczek_przygotowanie_odczytu < 400 Then Incr Liczniczek_przygotowanie_odczytu If Liczniczek_przygotowanie_odczytu >= 400 Then 'co 800ms odzyt DS Liczniczek_przygotowanie_odczytu = 400 Flaga_przygotowanie_odczytu = 1 End If End If Flaga_dodatkowa = 1 'do wykorzystania w innym sub- też co 2ms- to Twoje sterowanie...
Witam if godz_od >=godz_PCF8583 and godz_do <= godz_PCF8583 then if min_od >=min_PCF8583 and min_do <= min_PCF8583 then reset portc.2 end if end if Dlaczego ten warunek miałby się nie zdążyć wykonać ? Sprawdzasz go z dokładnością do minuty, więc masz całą minutę na jego potwierdzenie i odpowiednie do wyniku działanie. Inna sprawa, że warunek...
Na forum pomagamy osobom które wykazują chęć nauki lub maja konkretny problem. Jak uruchomić zegarek z pełnym kalendarzem itd. jest opisane w Helpie przy instrukcji "Config Clock" Jeśli Ci się nie chce czytać lub nie masz czasu to zleć napisanie tego programu. Osoba z doświadczeniem napisze Ci go w jeden dzień z wszystkimi wodotryskami. Pisze to bo...
Select Case Nr_przycisku się nigdy nie wykona. [syntax=basic4gl]Incr A 'zwiększ zmienną A o jeden If A = 0 Then 'jeśli A=0 to A = 255 'A nadaj wartość 255 End If[/syntax]Czemu ma służyć ta konstrukcja?
Sugeruję zapoznać się z instrukcją "SHIFT zmienna, kierunek, ile bitów przesunąć"... 8-) Wystarczy zapoznanie się z podstawową instrukcją "IF ... End If", SHIFT zostawiłbym na późniejsze udoskonalanie programu, jak autor tematu opanuje podstawowe instrukcje bascoma.
Pascal może stanowić pewien problem przy nauce C, jeżeli za bardzo przywiązałeś się do jego składni. Jest w nim kilka elementów, które, chociaż kosmetyczne, potrafią utrudnić życie przy przeskokach między językami. Przykładowo operatorem przypisania w C jest = , co w Pascalu jest porównaniem i wtedy jeśli w C przez pomyłkę napiszesz: [syntax=C]if (zmienna...
A spróbuj tak: [syntax=basic4gl] ' Fuse bity ustawione fabrycznie $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Output 'sterowanie segmentów LED Config Portd = Output 'sterowanie segmentów LED Config 1wire = Portc.5 Anoda1 Alias Portc.1 ' Lewy wyświetlacz Anoda2 Alias Portc.2 Anoda3 Alias Portc.3 Dim Nr_wysw As Byte Dim Liczba As Long Dim...
Wszystkie zmienne programu są przechowywane w RAM. Kod inkrementacji czasu jest błędny - instrukcje If powinny być skaskadowane - nie ma sensu sprawdzać, czy minuty doliczyły do 60, jeśli wcześniej nie zwiększałeś licznika minut.
Nie ma opcji byś utrafił obydwa przyciski na raz. A nawet jeśli jakimś cudem utrafisz to wykona się ten, który akurat będzie nadchodził w pętli głównej. Możesz także wszystko co masz w podprogramie wpisać w instrukcję IF..END IF sprawdzając czy przypadkiem drugi pin nie ma stanu wciśniętego przycisku.
e zastosowac podprogram ? Declare sub kartofel kartofel: set lampa If a > b then zrob cos end if return i teraz mozesz sie do tego slowa "kartofel" odwolac przez call kartofel
Help bascoma już czytałem. Co w tym kodzie jest źle? Kolejność bracie , kolejność.Ponieważ w Twoim kodzie nie ma nigdzie instrukcji skoku do funkcji/podprogramu , to uC wykonując program po kolei , włazi do ... Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte) I2cstart I2cwbyte Addressw I2cwbyte Adres I2cwbyte Value I2cstop Waitms...
... Ale niestety jak na razie pisze tylko tak jak potrafie :( No tak ... hmmm ... każdy orze , jak moż... umie ;) Męcze się z tym co kolega tutaj podał, teraz odświerzanie to raz na sekunde :( Dopisałem to do podprogramu "save" aby na bieżąco, od razu po obliczeniu uaktualniał dany słupek, tzn Nie wiem czy zauważyłeś , ale podany przeze mnie "podprogram"...
rozwiazań powtórzeń n.. razy pętli jest kilka nawet w Bascomie , kwestia znajonmości języka i poczytania helpa można przy użuciu - pętli FOR... - warunku IF .... - pętli LOOP - pętli LOOP UNTIL .... cała sprawa po umiejętne połaczenie odpowiednich instrukcji ...... których funkcje i zastosowanie trzeba znać jak w każdym jezyku programowania
A o instrukcjach warunkowych nie słyszałeś :?: Np. If PWM > 0 Then Decr PWM '... If PWM < 255 Then Incr PWM
Gdybym opisał program wszystko stałoby się oczywiste :D Użycie IF ELSE bez END IF zawsze warte jest omówienia bo potem nikt nie może się doliczyć END IF :D Chodzi o to że jeśli tylko jedna instrukcja jest od jakiegoś warunku zależna to można ją zapisać w jednej linii. Jeśli z powodu jakiegoś warunku musza juz być zmienione dwie zmienne lub wykonać się...
Witam , wklejam kod jaki udało mi się wypocić. Miało być tak pięknie a wyszło jak zawsze :-( Ten twój kod jest oczywiście błędny. Po pierwsze, jeżeli stosujesz napięcie referencyjne wewnętrzne, to dla AtMega 8 wynosi ono 2.56V. Zatem poziom napięcia mierzonego podanego na dowolny pin ADC nie może przekroczyc tej wartości. Jeżeli jednak ten warunek...
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). A włączyłeś przerwania :?: Bez bufora(przerwanie RX) , ciężko dogadać się z fonem :( Właśnie zauważyłem że jak zepnę RX z TX uP (wywale printa z głównej pętli i dam wait na 5sek. ) to odbiór też jest na 3 znaki :/ Czy wiesz jak wygląda transmisja asynchroniczna ,...
nie wiem czy o to chodziło bo nie mam na czym uruchomić tego programu (tzn. mam Bascom ale nie mam zestawu '51), ale wg mnie dopiero ten program zadziała: $crystal = 16000000 '$default Xram $large Dim Cyfra(12) As Byte Dim Jedn_sekund As Byte Dim Tempo As Byte Config Timer0 = Timer , Gate = Internal , Mode = 1 Th0 = &Hd8 ' Tl0 = &Hd7 ' =10025 cykli...
Jeśli chodzi o soft, to powstał szkielet programu. Na razie odmierza to czas, i powinno obsługiwać pilot RC5. W polach „A:” – powinien wyświetlić się adres pilota, „C:” – numer przycisku z pilota. W symulacji programowej poszło, ale na razie nie mogę przeprowadzić prób z braku modelu. Ale żeby stworzyć wersje BETA...
A jaką instrukcją, bądź kawałkiem kodu mógłbym zastąpić tą instrukcję ( encoder ), czy mógł by mi ktoś napisać, opisać taki kawałek programu, wiem, że jakoś się go robiło na instrukcji "If...Then", a nawet spotkałem się na obsłudze encodera, na Timerach... Mógł by mi ktoś pomóc....
Bardziej zagnieżdżonej instrukcji IF to jeszcze nie widziałem. To znaczy, że o godzinie 7.30, 8.00, 8.30.... przekaźniki się załączają? Może za mało/dużo End If masz w programie. Rozważałeś instrukcję "CASE"? Spróbuj na początku tylko 3 warunki (6.30, 7.00, 7.30) i jak będzie działało, to dodawaj kolejne.
Zastosowałem się do instrukcji i dalej nic mi nie wychodzi.Przepraszam ,że zawracam głowe ale ja dopiero się uczę i to moje pierwsze pisanie. Dodano po 7 Teraz wygląda to tak: $regfile = "2313def.dat" $crystal = 800000 Config Pind.0 = Output Config Pind.1 = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_1s Dim Licz_8ms As...
Najprościej będzie zmodyfikować program tak: [syntax=vbnet] Rez = Getadc(5) 'przechwycenie wartości napięć na wejściach ADC Pot_max = Getadc(4) If Rez >= Pot_max Then Wait 1 'wykrywanie przeciążenia Rez = Getadc(5) 'przechwycenie wartości napięć na wejściach ADC Pot_max = Getadc(4) If Rez >= Pot_max Then Reset Portd.0 'wyłączenie silnika Reset Portd.1...
Witam, albo mi się wydaje albo widzę poważny problem. Po odebraniu sms z pamięci 1 jest sprawdzany ciąg znaków, jeśli się zgadza to jest coś tam wykonywane i kasowany sms z pozycji 1. Przyjmijmy że ktoś się pomyli i wyśle jakikolwiek sms, który zapełni pozycję 1. Program sprawdzając ciąg znaków nie wykryje ciągu, nic nie zrobi i nie usunie sms z pozycji...
bascom instrukcja instrukcja bascom bascom instrukcja obsługa
wentyla nadmuch zgrzewania folii bosch wfb1604 programator
vodafone calculator vodafone calculator
Jak sprawdzić działanie diody 1.5KE39CA? Obliczanie długości drutu dla cewki prostokątnej