Ten powinien działać musisz wszystko wykonywać w odpowiedniej kolejności. A wspak to on może też czytać sensu to nie będzie miało (2 znacznie nawet objaśnienie :D )musisz zmienić na adres-1, kierunek musi być dodawany zakres adresu dla zmiany kierunku zamienione miejscami i adres musi się zaczynać na 80. A Pętla for next jest tylko po to aby wykonać...
Hej, Jeśli chcesz płynnie regulować współczynnik wypełnienia to musisz wybrać jeden z modów PWM i wtedy będziesz skazany na jedną z kilku częstotliwości wynikających z zegara systemowego i tego jak ustawisz prescaler, Jeśli chcesz płynnie regulować częstotliwość to wybierasz mod CTC(clear timer on compare) ale będziesz miał wtedy stałe wypełnienie,...
Nie wiem jak to w Bascomie się robi ale to wygląda mniej więcej tak: 123°C 123 dzielisz przez 100 i otrzymujesz 1 , resztę z dzielenia przez 100 dzielisz przez 10 i masz 2 , reszta z dzielenia przez 10 daje 3 . Tak się robi w C ale czy da się tak zrobić w Bascomie to ty powinieneś wiedzieć . w helpie Bascoma chyba jest coś o dzieleniu .
Nie do końca tak jak myślisz . Jeżeli liczba ma mieć postać xx,x to zamiast np. 12,5 * 3 = 37,5 do obliczeń biorę liczby 125 i 3 . Wynik 125*3 = 375 Jeżeli w programie mam ten wynik porównać z liczbą 35,0 to porównuje z 350 ( napisz program operujący na liczbach zmiennoprzecinkowych a potem na całkowitych i porównaj rozmiar i szybkość działania , wykonując...
wstawić dodatkową i uzależnić zliczanie od niej
No właśnie jeśli w programie przed pętlą główną nadam wartości zmiennym w eeprom np. zm_eeprom = "jakis tekst" to po resecie program wystartuje od nowa i zapisze z powrotem wartości początkowe w programie do eeprom ? posłuchaj - jeśli potrzebujesz zapisać domyślnie zm_eeprom = "jakis tekst" to robisz to tylko wtedy jeśli wszystkie komórki tej zmiennej...
AVR nie traci zawartości pamięci przy resecie. Więc jeżeli program nie będzie jej zerował, rozwiązanie jest pewne. Inna sprawa, że w tym wypadku sugerowałbym, by watchdog nie robił resetu, tylko wywoływał przerwanie. Co to będzie za układ?
czy nie potrzebna jest tutaj instrukcja INKEY() ? swojego czasu zrobiłem taki układ , że dwa procki atmega8535 przesyłały między sobą zmienną. program zajął dosłownie 3,4 linijki w odbiorczym użyłem instrukcji inkey() tzn , jeżeli było coś w buforze(różne od 0 ) to wyświetlało daną. oczywiście czasy w realizacji pętli były takie same oraz kwarce również...
Nie ma takiej możliwości w BASCOM-ie. Przynajmniej nie automatycznie. "Coś" musiałoby zmieniać twój kod, za każdym razem, gdy go kompilujesz. Jest możliwe rozwiązanie tego problemu, ale wymaga trochę zachodu, w początkowej fazie. Bascom posiada funkcję "INCLUDE", która pozwala na dołączenie dowolnego pliku BAS, zawierającego dowolny kod. Musisz (można...
Zawsze odbierasz przez UART dane binarne. Możesz je tylko sobie wyświetlić lub wypisać jako znaki, liczby dziesiętne lub szesnastkowe. Odbierasz bajty, masz z nich złożyć daną 16-bitową, np. tak: wartosc = bajt_mniej_znaczący + bajt_bardziej znaczący * 256
Zadeklaruj ile i gdzie chcesz przydzielić pamięci. Przykładowo $hwstack = 32 $swstack = 18 $framesize = 8 Połączenie ATTiny13 z bascomem to fatalne rozwiązanie, ale przy odrobinie samozaparcia da się coś zrobić. Z tymi ustawieniami udało mi się użyć 6 zmiennych, przy czym program w symulatorze i tak szedł w krzaki. Jak będziesz pisał to musisz unikać...
Funkcja MID. :) [url=http://avrhelp.mcselec.com/index.ht...
E tam, nic strasznego.... Tu masz błąd: Dim U_wy As String * 2 Zwiększ to na: Dim U_wy As String * 3 I leci aż miło. Nie mieścisz się w zmiennej, that's all:) Poza tym skonfiguruj watchdog oraz TIMER. Pewnie jeszcze coś tam siedzi (wyświetlanie bez wymazywania poprzednich, większych o rząd wartości na przykład) ale to tak na szybko. Pozdrawiam, TD
Powiem tak: Nie znam się na BASCOMie ale widzę, że END kończy program a dokładnie pustą pętlę w której powinien znajdować się odczyt z przetwornika i wyświetlanie, używając napisanych przez Ciebie funkcji. Przykładowo siała baba mak.../deklaracja zmiennych Do /pętla główna programu wykorzystująca twoje funkcje ODCZYT WYSWIETL Loop END ODCZYT: bla bla...
Cześć :) Spróbuj tak: zmienna_bitowa_0 = zmienna_bajtowa.0 zmienna_bitowa_1 = zmienna_bajtowa.1 zmienna_bitowa_2 = zmienna_bajtowa.2 itd... Pozdrawiam
Jeśli dobrze rozumiem pytanie to: [syntax=basic4gl]Dim Zmienna1 as String*10, Zmienna2 as String*10, Wynik as string*10 Zmienna1 = "s1234" Zmienna2 = "s67" Wynik = Mid(Zmienna1,2) '1234 Wynik = Mid(Zmienna2,2) '67[/syntax]
użyj do obsługi odczytu temperatury z DS timer0 ;) dzieki czemu nie bedziesz musiał zatrzymywać całego programu
Przyciski powinny zwierać do masy i mieć ustawione wewnętrzne pull-upy lub w aktualnym układzie (czego się nigdy nie robi) mieć zewnętrzne rezystory pull-down.
Poczytaj w pomocy o instrukcjach: DATA , RESTORE, READ... To się nie nadaje , ponieważ Restore potrzebuje etykiety , a Read to odczyt sekwencyjny i nie da sie wybrać konkretnego elementu tablicy , tylko trzeba odczytywać kolejno , począwszy od pierwszego elementu. Ale ... Bascom AVR posiada funkcje , za pomocą których można naśladować mechanizm wskaźników...
Usuń znaczek hash i nazwę zmiennej umieść w nawiasach klamrowych. Będzie odwołanie do pamięci, a nie ładowanie stałej. Oczywiście pisze o tym w pomocy, ale szukać się koledze nie chce. :bad-words: Można uzyskać dostęp do zmiennej umieszczając jej nazwę w nawiasach klamrowych { }. By mieć dostęp do bajtu MSB zmiennych Integer/Word, należy użyć formy:...
Chyba ten kod nie jest jednak dobry. (Ups, to komentarz do starego kodu, którego już nie ma ;) . Jeżeli mysz to ta z pdf-a z tego drugiego wątku i x to wartość odczytana, a x1 bieżąca pozycja, to raczej powinno być tak, jak pisałem powyżej: x1 = x1 + x if x > 127 then x1 = x1 - 256 end if Edit: nowy kod jest chyba poprawny (póżno już ;) ), ale niepotrzenie...
Chyba nie czytałeś ostatnio tego rozdziału z Language Fundamentals. W ten sposób sam sobie robisz kuku... Pomijając to myślę, że jeśli te Twoje zmiennoprzecinkowe masz tylko do dwóch miejsc po przecinku, to dlaczego, po prostu, nie pomnożysz tego x100 a na końcu wyniku nie podzielisz /100? Zapewne wszystko się wykona dużo szybciej niż na tych zmiennoprzecinkowych....
Źle definiujesz typ zmiennych. Żeby można wykonywać operacje zmiennoprzecinkowe, typ zmiennych powinien być single lub double. Dim Dawka_temp As Single, Dawka As Single
Witam ATMega8 ma Timer1 16-Bitowy i do odczytu lub wpisu służą dwie dane: "TCNT1L" - odczyt lub zapis "dolnej" 8-Bitowej części i "TCNT1H" - odczyt lub zapis "gónej" 8-Bitowej części n.p. stan licznika "21456" odpowiada : TCNT1H =83 ; TCNT1L=208 bo 21456:256(pojemność TCNT1L=256)=83+208 Aby wszystko było OK to obie wartości (TCNT1H i TCNT1L) muszą być...
Porównaj pierwszą z drugą i jeśli pierwsza jest większa od drugiej to zamień je miejscami. Następnie zrób to samo porównując drugą z trzecią. Możesz też stabilizować zmienne i posortować tabelę zmiennych.
Działa elegancko. Żeby było wiarygodnie to nawet wygrzebałem Ardu Leonardo z m32u4 na pokładzie. Na jedną rzecz bym jeszcze uważał. Twój kod nie jest w żaden sposób synchronizowany. Może się kiedyś zdarzyć, że jedna z wiadomości nie dojdzie. Z nie będzie miało wartości 3 i przy nastepnej wiadomości procesor zacznie przypisywać wartości innych zmiennych...
Bez problemu, ale chyba program wie jaki jest dzień i nie musi tego sprawdzać więc tak powinno wystarczyć [syntax=vbnet]For N = 1 To 5 If Alarm_status(n) = 1 Then ' gdy alarm 1 wlaczony If Czas_minuty = Alarm_minuty(n) Then If Alarm(n).d_tygodnia = 1 Then Alarm_ustaw = 1 End If End If Next N[/syntax] Dodatkowo, mała ciekawostka. Aliasy nie są tylko...
To jest dosyć niewygodny sposób na przesyłanie zmiennych w postaci znaków ASCII i sam się nieco ograniczasz, bo pierwsza zmienna musi mieć zawsze dwa znaki, druga trzy itp... Jeśli chcesz troszkę bardziej uniwersalnie podejść do tematu to przesyłaj wartości zmiennych w ten sposób: PRINT XX,YYY,Z,KKKK czyli każda wartość oddzielona np przecinkiem. Później...
Deklarujesz jakąś zmienną, która "pomieści" znaki wszystkich zmiennych Dim S As String * 200 S=zmienna1 Zamieniasz zmienna2 na stringa zmienna1=str(zmienna2) i sklejasz całość s=s+zmienna1 'lub s=s+" "+zmienna1 s=s+zmienna3 Powinno zadziałać też s=zmienna1+" "+str(zmienna2)+" "+zmienna3
Porównuj etapowo. Najpierw dzień i jeśli się zgadza to potem minuty itd.
Albo zmień Local na Dim.
Może można to inaczej rozwiązać, ale jako pierwsze do głowy przychodzi coś takiego: [syntax=vbnet] Dim A As Byte Dim B As Byte Dim C As Single A = 123 B = 255 C = A * 1000 ' c=123000 C = C + B ' c = 123255 C = C / 1000 ' c =123,255 [/syntax] ..tylko przemyśl czy nie lepiej dokonywać obliczeń na tych 123255 i na samym końcu wynik podzielić przez 1000....
Przecież 63 And 19 to właśnie jest 19. Wszystko działa tak jak należy. Błąd jest, ale w tym manualu który podałeś.
1. Sub trzeba zadeklarować (Declare Sub Menu), następnie piszesz Sub Menu .... . ..... ... End sub 2. Aby się odwołać do Sub`a piszesz call Menu. 3. Do Incr M Locate 2 , 1 Lcd M Loop Jak program wejdzie w tę pętlę to już z niej nie wyjdzie 4. Osobiście do obsługi przycisków używam takiej składni: If pind.1=0 then Waitms 50 Bitwait pind.1, set ... ......
Składnia: rezultat = LOW( zmienna ) Przeznaczenie: Zwraca młodszą cześć (bajt MSB) podanej zmiennej. gdzie: rezultatzmienna do której zapisana będzie młodszy bajt zmiennej, zmiennazmienna której młodsza część ma być określona.
Witam ! Sprawdź: Lcd hex(a) lcd bin(a) Pozdrawiam. Stefan
Jeśli chodzi o oczekiwanie na pomiar to przy podłączeniu 3 przewodowym (+5V, masa i sygnał) to nie ma potrzeby oczekiwać na pomiar. Jest on dostępny od razu po wykonaniu komendy ow_write_byte(DS18B20_CMD_CONVERT);
Zajrzałem do Helpa. Waitus nie przyjmuje parametrów w postaci zmiennych. Muszą być stałe.
po usunięciu drugiej linijki, czyli $lib "mcsbyte.lbx" i zmianie pierwszej z $regfile = "m16adef.dat" na $regfile = "m16def.dat" błędu nie wywala. Z helpa wynika, że : Biblioteka MCSBYTE.LIB jest zoptymalizowaną wersją, która obsługuje tylko liczby typu Byte. i zmieniając wpis na Dim A As Byte A = 255 Lcd A wtedy błędu nie wywali, ale zmienna a musi...
Teoria powiadasz. Ciekawe co czytałeś... Mimo iż wyczuwam lekki roszczeniowy charakter wypowiedzi to postaram Ci się coś jednak wytłumaczyć. Kiedy pisałem o podpisywaniu zmiennych to miałem na myśli takie wysyłane osobno. Od razu uściślijmy, że dla takich wartości dwubajtowych jak Word łatwiej to przesłać jako Hexstring. Długość stringa zawsze będzie...
Brak kropki w deklaracji pinów wyświetlacza ma byc: DB6 = portb.1 Następnym razem sprawdz dokładnie tego typu błedy i nie dodawaj tematu z tak błahego powodu
Moze zmien algorytm tych obliczen. Wydaje mi ze ze jak po "Do" zrobisz od razu: [syntax=basic4gl]For Cykl = 1 To Y Z = ( Cykl * X ) \ Y Prc = ( 100* Cykl ) \ Y Call Oblicz Next Cykl[/syntax] to bedziesz mial co potrzebujesz i to bez uzywania single Nie znam dobrze Bascom, wiec jak nie mozna robic tylu operacji w jednej linii to dodaj zmienna pomocnicza...
Nie używałem nigdy BASCOMa, ale chyba powinno się dać w nim zrobić coś takiego: wynik = round(liczba*100)/100
Niestety, inaczej nie sformatujesz single. Zapis zmiennej z przecinkiem jest dość skomplikowany (mantysa, wykładnik) i znalezienie przecinka nie jest prostą sprawą. Jakie działania potrzebujesz wykonać na single? Może nie trzeba jej używać. Wykonałem próbę w symulatorze najpierw single na string za pomocą fusing(), potem z powrotem na single za pomocą...
Witaj, Masz 2 opcje ;) np. masz cos takiego: dim a as byte a.0 = 1 a.1 = 1 a.2 = 1 set a.0 set a.1 set a.2 a.3=0 a.4=0 a.5=0 reset a.3 reset a.4 reset a.5 Instrukcja: a.[numer bitu] = [0 lub 1] set/reset a.[numer bitu] gdzie set ustawia 1 reset ustawia 0 analogicznie dla zmiennych typu word integer - tylko że tam możesz zmieniać więcej bitów;) Pozdrawiam
Masz dwie możliwości, możesz pobrać nowszą wersje BASCOM'a lub dopisać taką linie: [syntax=basic4gl]$lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014[/syntax]
Zobacz funkcję FUSING() ze strony 199 pomocy [url=http://www.pe.ifd.uni.wroc.pl/Basco... Bascom PL Pozdrawiam Dawid
Zmienna = -Zmienna ?
Można zerować, ale nie trzeba, bo każda instrukcja, która ją "obsługuje" i tak ją wyzeruje jeśli nie ma błędu lub ustawi po błędzie.
Witam, Napisałem program w BASCOM AVR, z komputera otrzymuje dane np: "14" te dane są i muszą być odbierane do zmiennej typu string. Mam problem z: chciałem tą zmienną ze zmiennej typu string przypisać do zmiennej typu BYTE. Nie wiem jak by to zrobić. Probowalem już kilu sposobów ale zawsze otrzymywałem jakieś bzdury w zmiennej typu byte. Czy istnieje...
Użyj po prostu VAL(zmienna typu string). Ale nie jestem teraz przekonany, czy VAL zwróci wartość stringa zawierającego HEX. Możesz napisać prostą procedurę, która zamieni dwa znaki w HEX na wartość dziesiętną, a tą już łatwo wyślesz. EDIT: Jest komenda HEXVAL - opis w helpie.
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ć...
Jak nie radzisz sobie na razie z tym timerem to przynajmniej nie nadużywaj bezpodstawnie Wait. To co Ci zaproponuję nie zwalnia Cię od ogarnięcia timerów! Ustal sobie jakie dopuszczasz maksymalne opóźnienie pętli i użyj go tylko raz np. 10ms. Za rozwiązanie, może nie do końca eleganckie, zaraz zbiorę burę od fachowców ale w wielu przypadkach to naprawdę...
Wartość w poleceniu lookup to jest właśnie adres wiec nie kumam w czym problem. przeskaluj adc z 0-1023 na 0-90 i potem wywołuj zmienna=lookup(adc,tablica)
Taka niestety jest konstrukcja Bascom'a. Jeśli nie chcesz robić tego krok po kroku to możesz sobie stworzyć funkcję, która to będzie robić. Innej alternatywy nie ma... no chyba że zmiana języka na C.
Pomnóż przez 2, zaokrąglij do wartości całkowitych, podziel przez 2, i wyświetl z rozdzielczością do 1 miejsca po przecinku.
Ja to zawsze robię w ten sposób: ldi r22,5 Go: Pomiar1 = Getadc(0) dec r22 brne Go Zawsze działa, nie wygląda tak rażąco, no i zżera mniej pamięci z programu.
...Czy istnieje jakiś sposób, aby ostateczną zmienną 'Ss' (string) zapisać w zmiennej typu Single (lub innej?) aby umozliwic porównanie jej z tą zapisaną w eepromie? A może ktoś zna inną metodę na rozwiązanie tego problemu? Z Twojej wypowiedzi wynika , że nie wiele masz wspólnego z programowaniem uC - ale mniejsza z tym. Zmienna string jest potrzebna...
A ten błąd wyskakuje jaki? Sprawdź typ zmiennej.
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
Kompiluje się bez tego $lib "mcsbyte.lib"
http://www.elektroda.pl/rtvforum/topic22...
Integer to nie jest zmienna tekstowa. Sprawdź w helpie jaki zakres ma ten typ zmiennej.
Witam ! Usuń to z programu: $sim Pokaż schemat.
Źle robisz to że próbujesz wykonać mnożenie i dodawanie jednocześnie na 4 zmiennych. Niestety Bascom tego nie potrafi. Proponuję zrobić np. coś takiego: T = T * 1000 S = S * 100 D = D * 10 Wynik = T + S Wynik1 = D + J Wynik2 = Wynik + Wynik1 Nie zapomnij zadeklarować nowych zmiennych.
Jaki będziesz miał wyświetlacz? Alfanumeryczny że string będzie ok? Czy może LED lub LCD segmentowy? Żeby zmieniać wartość enkoderem trzeba go obsłużyć... Enkoder ma przycisk? Zatem weź zmienną Word w której będziesz zmieniał nastawy np. [syntax=vbnet]dim wartosc as word dim index_wartosc as byte if index_wartosc =1 then wartosc=wartosc + 1 end if if...
Najprościej skorzystać z gotowych funkcji. W Bascomie 51 jest funkcja MAX. Działa ona na zmiennych typu Byte. W Bascomie AVR funkcja ta działa na zmiennych Word. Więcej info w helpie do Bascom-a. Jeśli musi to być koniecznie Integer, można zastosować jakąś konwersję typu Word na Integer lub napisanie własnej funkcji, co nie powinno być trudne.
Powinieneś mieć funkcje niskiego poziomu która buforuje przyciski, a następnie API, które wyciąga przyciski z bufora. Sama funkcja konwertująca powinna wyglądać mniej więcej tak: void convert(void) { float_t val = 0; val = get_key() * 100; val += get_key() * 10; val += get_key(); val += get_key() / 10; }...
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...
Wystarczą dwie instrukcje MAKEINT i SHIFT : [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 $baud = 2400 Dim A As Byte , B As Byte , C As Word A = &b00110000 B = &B00100000 C = Makeint(b , A) ' z dwóch bajtów zrób słowo Shift C , Right , 5 ' zmienną C przesuń w prawo o 5 bitów Print Bin(a) Print Bin(b) Print Bin(c) End[/syntax]
A w kodzie masz Rs=Es
Uwaga! Zdarza się czasami, że funkcja zwraca numer naciśniętego klawisza choć żaden z nich nie jest naciśnięty. W takim wypadku należy dołączyć rezystory 1k, połączone z jednej strony do końcówek portu PORTx.4 – PORTx.7, a z drugiej do masy (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005 Pokaż schemat jak masz tą klawiaturę podłączoną.
Witam Nie będę się tutaj zbytnio rozpisywał. Ogólnie program nie jest zły tylko zmień Portd.x na Pind.x, gdyż do odczytywania stanu stosuje się PIN a nie PORT.
tak, stosuj tablice. Ulatwi ci to robote.... ALE pamietaj zeby NIE ZAPISYWAC DANYCH W KOMORCE EEPROMA O ADRESIE 0. Jesli zaczniesz deklarowac zmienne w bascomie to : ...jakies zmienne... .... .... .... 'EEPROM dim foo as eram byte 'to ci zalatwia komorke 0, bo tu bascom umiesci tą zmienną, i z niej niekorzystasz dim tablica1(3) as eram byte dim tablica2(3)...
Nastepnym razem napisz jaki masz blad, na moje to zapis powinien byc i=i+1 oraz i=i-1
Po kompilacji jest zapisany plik raportu, tam też umieszczone są adresy zmiennych. http://obrazki.elektroda.pl/4066371000_1...
Można zrobić tak: $hwstack = 32 $swstack = 32 $framesize = 32 Dim Aa As Double Dim B As Double Aa = 5 Aa = Aa / 6 Print Aa B = Sin(0.2) Print B Do Loop End ...i będzie działać ! Pozdrawiam...
W sumie można, lecz autor chciał mieć format byte, domyślam się że potrzebne to mu było do wyświetlania liczby na wyświetlaczach siedmiosegmentowych. Jeżeli tak, to Ciekawy jestem czy autor korzysta z lini Data i instrukcji lookup(), czy może z select case?
Po prostu spróbuj, nie wybuchnie ... (chyba) :)
Witam To nie jest skomplikowana sprawa. Deklarujesz zmienne kontrolne które beda zmieniału swoją wartość po wykryciu 0 na pinie. dim kontrolka1 as byte dim kontrolka2 as byte kontolka1 = 0 ' najpierw je zeruje kontrolka2 = 0 ' / Teraz musisz dodać jakies warunki które bedą powodować zmiane ich wartości If pind.0 = 0 then kontrolka1 = 1 then wywołaj...
W przerwniu i programie głównym używasz zmiennych zadeklarowanych jako word. Myślę, ze tu leży pies pogrzebany. W C wystarczy użyc volatile i atomic_block. W Bascim? Był taki na Elektrodzie (niveasoft) co wiedział w jaki tajemniczy sposób Bascom zarządza takimi zmiennymi. Myślę, że nie masz wyjścia, tylko przed odczytej w programie głównym zmiennej...
Post wyżej napisałem jak ma wyglądać wyświetlanie tekstu. Wstaw tą linię tam gdzie umieściłeś komentarz "Tu wstawiam..." :) ps. Pisałem z pamięci i zamiast Seq(1) = Text powinno być Seq(1) = Tekst czyli zapisanie aktualnej wartości po przesunięciu.
W timerze (np. co 0.5 sek) gasisz albo zapalasz flagę (powiedzmy o nazwie fMiganie) Oczywiście po każdej zmianie flagi (fMiganie) następuje odrysowanie całości wyświetlanego zbioru elementów w najstępujący sposób: 1. Jeśli fPozycja jest poza zakresem zbioru wyświetlanych elementów (np. =0) - wtedy obraz wyświetlany jest bez migania. 2. Jeśli fPozycja...
Napisałem podobny programik na ATtiny2313 w zeszłym roku. Użyłem komparatora bo szkoda mi było przerwań. Można go przerobić na ATmega8 Jest na elektrodzie-attiny2313 bascom pwm działa.
W pierwszym przypadku jak masz wybrane MSB to wysyła od najstarszego bitu bajtu z indeksem 1 (1) czyli: 7..0, 15..8, i 23..16 (liczac od zera bity) W drugin przypadku powinien wyslać podobno sekwencje tylko zacznie od bajtu najmłodszego zmiennej ( o ile bascom zapisuje zmienne w little endian ??) czyli tez : 7..0, 15..8, i 23..16 (liczac od zera) gdy...
Witam Jest taka instrukcja MID. Podajesz ciąg z którego chcesz wyłuskać znak i dodatkowo pozycję, od której odczytujesz oraz ilość danych, które odczytujesz. Poczytaj o tym w helpie. -- pozdrawiam
Widzę, że moderatorzy posprzątali zwyczajowy hejt na Bascoma :D Niestety przy okazji usunięto też ważną informację. Rzeczywiście potrzebujesz instrukcji VAL https://wiki.mcselec.com/bavr/VAL do zamiany reprezentacji tekstowej liczby na wartość liczbową. W drugą stronę, jeśli chcesz wysłać zmienną WORD do komputera możesz zrobić to wprost. Bascom sam...
Myślę, że jest to naturalne. Zmienna typu Long zajmuje 4 bajty a Integer tylko 2. Nie da się ciężarówki zaparkować w garażu dla malucha. W helpie jest informacja, że można dokonywać konwersji typów. Oto fragment: Dim I As Integer, S As Single S = 100.1 'przypisujemy liczbę zmiennoprzecinkową I = S 'ta instrukcja zmieni liczbę typu single na Integer...
zrób tak: Print A ; chr(13) ; to ci zniknie ten kwadracik przed liczbą
U mnie wszystkie zmienne są typu Integer.
Paluszasty zauważ, że kod który podałeś nie jest ideowo równoznaczny kodowi podanemu przez autora wątku. Poprawiony kod podany przez autora wygląda tak: If Pinb.0 = 1 Then Kierunek = Kierunek Xor &B00000001 Elseif Pinb.1 = 1 Then Kierunek = Kierunek Xor &B00000010 End If maly_miszcz czy jesteś świadomy tego, że jeśli pierwszy warunek będzie spełniony...
Witam; Na wstepie chciałbym zasygnalizować, że programowania w Bascom-ie ucze się dopiero od niedawna :) Mam takie pytanko: mam sobie wyświetlacz LCD 16*1 i prosty układ który sobie zlicza detale. Na wyświetlaczu pojawia się napis: ilość sztuk 123 jak zrobić żeby liczba którą wyświetla zawsze była wyrównana do prawej strony? Aktualnie zrobiłem coś takiego:...
Zadeklaruj stringa o znanej długości tj. Dim x as String * 10 a nie samo string * .
W przerwaniu Int0 inkrementuj zmienną. Ustaw timer na jakąś jednostkę czasu i w przerwaniu od tego timera obliczaj cześtotliwość i zeruj zmienną
Z tego powodu ze raz uzywaz "Tablica" a drugi raz "Tabela" Zmien na to samo i bedze oki
Najprawdopodbniej w tej zmiennej coś jest jeszcze na końcu. Mogą być znaki niewidoczne, np CR lub /i LF. Spróbuj wyświetlić długość tego stringa (w Bascomie chyba funkcja Len) i wtedy bedziesz wiedział czy aby tam jest tylko liczba. Możesz spróbować też konwertować tego stringa po jednej cyfrze, a więc robisz pętlę w której wycinasz fragment stringa...
Jak chcesz wpisywać liczbę z klawiatury to powinieneś uwzględniać wagę poszczególnych składników tej liczby. Pierwsza cyfra z trzech to, waga=100 zatem key*100, przy następnej cyfrze waga=10 zatem key*10, a na koniec samo key bo waga=1 i operacja mnożenia jest zbędna, jak to wszystko zsumujesz to otrzymasz ostateczną liczbę. Np. liczba 467 to 4*100+6*10+7....
Nie ma potrzeby ustawiać adresów zmiennych "na sztywno". Ponieważ Bascom dla zmiennych wielobajtowych , stosuje zapis typu Little Endian to kod może wyglądać tak: Dim Zmienna As Word Dim Zmienna_lo As Byte At Zmienna Overlay Dim Zmienna_hi As Byte At Zmienna+1 Overlay I nie obchodzi nas pod jakim adresem znajduje się Zmienna , bo kompilator zadba o...
Nic nie jest wcześniej robione automatycznie a także ty nie musisz robić żadnych takich sztuczek cyrkowych jak to podałeś w ostatnim przykładzie. W obydwu przypadkach albo za każdym razem bez żadnych dodatkowych czynności odbędzie się ta sama prosta operacja. Zarówno do zmienna_byte jak zmienna_typu_string trafi dokładnie ta sama wartość czyli 97 czyli...
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
tablice zmiennych bascom bascom definicja zmiennych bascom tablica zmiennych
kolektor toyota corolla samsung 65cali renault megane instrukcja obsługi
płyta główna klimatyzator płyta główna klimatyzator
Audi A8 D3 3.7 V8 – układ podciśnienia, typowe usterki, diagnostyka, serwo, IMRC Renault Master 2008 dCi – gaśnie po odpaleniu, immobiliser, układ paliwowy, czujnik wału