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...
nie ja piszę z pamięci więc może tam i niema nawiasów. Przypisuje jej pusty ciąg po każdej operacji ale to nic niedaje
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....
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
A jeśli chodzi o "Błędne operacje matematyczne" , to: Czy rozumiesz dlaczego zmienną Pokaz , zadeklarowałeś jako Integer , a nie np. Byte,String czy Double :?: Sprawdź jakiego typu zmienne oferuje Bascom Basic , postaraj się zrozumieć czym one się miedzy sobą różnią , a wtedy 1-szy problem masz z głowy ;) Piotrek
Bo taka konstrukcja w Bascom nie jest dopuszczalna do operacji na stringach - to że coś jest intuicyjne, nie znaczy, że istnieje w specyfikacji języka ;-)
odnośnie zapamiętywania i pobierania stringów z pamięci ROM(flash) to nie mam jakby problemów ale chodzi mi o sposoby obróbki tych "ala" stringów. Tzn po wykładzie kolegi Freedie już czuję o co chodzi ale np tak: w pascalu(delphi) mam taką swoją ulubioną i często potrzebną mi funkcję function ScanStrSP(var Text: string; Separator: string):...
Chodzilo mi o bascoma, wiec jesli ktos mialby rozwiazanie pod ten jezyk to chetnie ogladne.
Error 10:Wrong type(bit,byte,integer,word,or string) Linia przy której Bascom protestuje , ma za zadanie zmienić znak zmiennej T2 , na przeciwny.To co przechodzi w BascomAVR , nie działa na Bascom8051-fakt.Każdy , kto chce pisać jakiekolwiek programy na uP czy uC , nie może być z algebrą na bakier :D 2 przykłady: If T2 < 0 Then T2 = T2 * -1 lub...
Jakoś mi ten post umknął pewnie przez to że to weekend :P W Attiny2313 SRAM`u jest dość bo 128 B tylko pewnie zderzyłeś się z czymś o czym ludzie, albo nie wiedzą, albo zapominają. Otóż chodzi o stosy. Nie wgłębiając się w zagadnienie stosów podpowiem, że operacje na stringach Bascom przetwarza w tak zwanej ramce. Kiedy ma podzielić string to robi jego...
To pewnie wynika z tego że powstało dużo różnych AVR`ów. Jeśli na początku ktoś korzystał tylko z jednego typu to mógł sobie w IDE ustawić konfigurację dla stosów a nawet wyświetlacza LCD czy I2C. Stąd dla wstecznej kompatybilności dalej tak można zrobić. Na przykład ustawienia dla stosów są tutaj tylko moje są już zmienione bo mogę szybko wkleić to...
Pozwolę przyłączyć się do tematu. Przeglądając kod natrafiłem na deklaracje zmiennych w dziwny sposób Dim Tekst1 As String * 10 Dim Tekst2 As String * 10 Dim Tgodzina As String * 4 Dim Tminuta As String * 4 Dim Tsekunda As String * 4 Co oznaczają te znaki mnożenia? Czy można z takimi zmiennymi wykonywać operacje arytmetyczne jeśli tak to jak? ja jak...
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....
Czy gdzieś znajdę może opis (bardziej uporządkowany niż w helpie) operacji tekstowych ? Potrzebuję "wyciągnąć" określony string z stringu pobranego przez INPUT. Czyli np - string pobrany przez INPUT ma długość 10 znaków. A ja potrzebuję pierwsze 4 znaki.
znając jakiś język bez problemu z innego można to przerobić na ten jaki się zna. Druga sprawa sam nie jesteś wstanie wymyślić swojego sposobu, aby coś zaszyfrować. Wykonać parę operacji na stringu w swojej tylko znanej kolejności?
I jeżeli np. zmienna_tekstowa , z której będę pobierał poszczególne znaki może mieć max 5 znaków, a zapiszę do niej np. tylko 3 - tj. "ABC" . I jak jako pierwszy znak do zwrócenia(tj " początek ") podam pozycję np. 1, a ilość znaków 1 - to mi zwróci ze " zmienna_tekstowa " do zmiennej " zmienna " literkę A. Tak. -> A co będzie, jak podam jako pierwszy...
Hej! Zobaczcie jak ja to robię, może komuś sie to przyda: 'Powiedzmy ze zmienna Liczba(single) wynosi 22.62555426 Temp = Int(liczba) ' dzieki temu poleceniu odcinam czesc setna czyli ' zmiennej Temp(byte) przypisuje liczbę 22 Liczba = Frac(liczba) ' dzieki temu poleceniu odcinam czesc ' dziesiętną czyli zmiennej Liczba(single) przypisuje ' liczbe 0.62555426...
Hmmmm, liczba o 16 znakach to dość nieprecyzyjne określenie :] Jeżeli chodzi Ci o przechowanie 16 cyfr, każdą z osobna, to oczywiście zwykły łańcuch tekstowy, czyli STRING (chyba tak to w bascomie sie zwie). Ale na stringach nie da się wykonywać operacji matematycznych na stringach (no dobra, da się, ale trzeba wszystko samemu od zera pisać :] ), operacje...
Koncepcja liczenia się zmieniła. Coś źle robię. Chce zapisać pomiar czasu jako jedna zmienna, Pomiar = Sekundy_d + " " + Sekundy_j "" + Setne_d "" + Setne_j Jak i : Pomiar= pomiar + str (sekundy_d) pomiar = pomiar + str (sekundy_j) wtedy to już kosmiczne wyniki mam. Jak to zapisać poprawnie ? Po pierwsze: Bascom akceptuje tylko jedną operacje arytmetyczną...
Nie dokładnie opisałem. U mnie A01 jest uzyskiwane ze zmiennej Sring - i tu jest problem jak to wyświetlić. Może tak - w wyniku operacji na zmiennej string otrzymuję wynik A01(też string). I teraz potrzebuję wyświetlić to co jest zapisane pod zienną A01 (czyli w przykładzie tekst1. c jest string = 5 , d jest string = 0, A50 ="Test1" B = C + D E = Val(b)...
arnoldziq napisał: W żadnym języku programowania nie ma możliwości określić "gdzie w tablicy" się "znajdujesz", Można to zrobić. Wystarczy dodać drugi wymiar tablicy i w tej dodatkowej komórce dla każdego wiersza tablicy zapisywać znacznik aktywnego wiersza. Napisać własne procedury odczytu i zapisu - przesuwające znacznik i funkcję zwracającą dane...
To akurat nie wina BASCOMa. Masz zmienne na 3 znaki podczas gdy potrzebujesz na 4: Volt = Fusing(v , "#.$$") Czyli znak, kropka (czyli też znak) i dwa znaki. Razem 4 znaki. Winą BASCOMa mogło być dopiero to że zmienne String wpływały na działanie przycisków. Ale jednak tak nie było. Teraz to przeanalizowałem i to jednak nie to. Przyciski...
Witam Program ma za zadanie otrzymania 6bajtów przez RS232 i operacje na nich Problem w tym że po odebraniu transmisji program staje i trzeba resetować procka Pomocy! Siedzę przy przy tym już kilka godzin i nic $baud = 2400 $regfile = "m32def.dat" $crystal = 16000000 Dim Bufor As String * 6 Do Enable Interrupts On Urxc Odebrano Enable Urxc...
Dim S As String * 15 , Z As String * 15 S ="ABCDEFG" Z = Left(s , 5) Print Z 'ABCDE Z = Right(s , 3) : Print Z Z = Mid(s , 2 , 3) : Print Z End Komendami left, right i mid masz możliwość operacji na tekscie. Troszke sprytu i robisz bardzo ładny scroll
Witam wszystkich. Proszę o drobną pomoc. Muszę wyodrębnić dane z łańcucha string odebranego po UART. Łańcuch ten jest bardzo długi i za każdym razem dane z łańcucha są umieszczone w losowy sposób, długość łańcucha także za każdym razem jest przypadkowa. Jedyną stałą zależnością jest fakt, że dane zawsze rozdzielone są przecinkiem "," i chciałbym je...
Panowie, cały problem tkwi w konwersji zmiennych. Pewnie nikt nie wie co się stanie jak BASCOM zrzutuje integer (16) i to pewnie ze znakiem (signed) na bajt albo lepiej char (bajt ze znakiem). Trzeba się dowiedzieć jak on to robi albo po prostu zacząć pisać w poważnym języku na poważny kompilator (bez obrazy oczywiście) :) Pozdrawiam (M.) Nie wiedzą...
Spróbuj użyć tego sposobu obsługi parametrów zapisywanych w EEPROM (traktujesz je jak zwykłe zmienne): Dim Reserved As Eram String * 8 'Przyzwyczajenie ze starych AVRów - zapobiega(ło) utracie danych z początku obszaru EEPROM :) Dim Zmienna1 As Eram Byte Dim Zmienna2 As Eram String * 8 Dim Zmienna3 As Eram Long Dim Temp as Byte [...]...
B100=4 ;) tyle to wiem, tylko w tamtym przypadku to było zapisywanie konkretnych pozycji do tablicy, potem konwersja danych z tablicy do stringa, potem do binarki no i nie pamiętam jak to się robiło :) Co do kodu - póki co nie działa. Wyświetla się tylko na pierwszej pozycji wyświetlacza na zmianę znaki * oraz -. Całość nie reaguje na żadne wejścia...
No...to...w czym problem? Jeśli to jest string?:> Powiedziałbym BASCOMOWIEC:P Ehh Ehh... Pokolei... na pewno nadajesz ASCII (mam nadzieję). Poczytaj o operacjach na stringach... Np: -lookupstr, -dim cos as typ at adres dim cos1 as typ at adres Overlay HELP:) Dodano po 1 Do tego jakaś prosta logika typu jeśli następny znak nie jest liczbą -> odczytano...
Witam Mam taką sytuację, odbieram w przerwaniu dane z RFM12 i ustawiam Flagę. W pętli głównej jest warunek, że jeśli wystąpi Flaga, to będą się wykonywać obliczenia. Odebrany ciąg zawiera pięć znaków identyfikujących nadajnik. Dołożyłem również warunek określający, czy ma się wykonać ta czy inna operacja, w zależności, który nadajnik przysłał dane....
Dzięki. Spróbuję obu metod. A dlaczego w podprogramie jedynie ustawić flagę a całość operacji realizować w głównej pętli? Jaka jest zaleta tego rozwiązania a wady obsługi w podprogramie? Pytam gdyż pętla główna w docelowym programie będzie miała i tak co robić, więc nie chciał bym jej jeszcze dodatkowo blokować. Na razie problem odbiory kilku danych...
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...
Może nie umie wstawiać? $regfile = "m88def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Portd = &B00001111 'portd 0 1 2 3 jako wyjscia portd 4 jako 1wire 5 6 7 jako wejscia Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portd.3 =...
Drodzy koledzy. Mam poprawnie skonfigurowane połączenie pomiędzy dwoma Atmegami8 przez RS485. Nie ma problemu z komunikacją wszystkie znaki odbieram, niestety pojawia się przed każdym ciągiem danych znak prawdopodobnie "spacji". Na razie robię proste testy na RS485, ale później muszę użyć tego do komunikacji między ruchomą głową a sterownikiem. 1. Najpierw...
oczywiście, że można to rozpatrywać jeszcze na miliony sposobów. Ja w swoim teście nadaję te ramki co ok 50ms. Jeśli ustawię ich wysyłanie np co 10ms to tych błędów nawet bez zasobochłonnych procesów pojawia się nieco więcej. Jeśli ustawię interwał czasowy na 100ms to błędne ramki nie pojawiają się nawet przy obciążaniu windy innymi procesami. Te błędy...
Moi Drodzy, Przepraszam Jezeli Moje Pytania Beda Glupie Lub Lamerskie Ale Nie Moge Sobie Z Pewnymi Bascomowymi Problemami Poradzic. Pytan Jest Troche Wiec Podziele Je Na Oddzielne Posty Aby Szybciej Mozna Bylo Na Nie Odpowiedziec: Praca Na Portach. Realizujac Projekt Wspolpracy Procesora Z Dekoderem Dtmf Musze Odczytac Wartosc Podana Na Port. Co Wazne...
Ja zrobiłem taki układ na SE T300 (może być też T68i) jeśli chodzi o odbiór sms i sterowanie czymś tam jest fajny przykład w samples - sms.bas Mój układ dzwoni do mnie i wysyła sms kiedy mam alarm na centralce, a po odebraniu sms o treści UZBR lub ROZBR uzbraja/rozbraja zdalnie centralkę alarmową. Jeśli zaś treść sms to ZAL lub WYL to układ steruje...
Przesiadka na inny język niż Bascom zbliża się do mnie, ale staram się odwlec ten moment. Mam za dużo napisane, żeby teraz to przepisywać na C, dlatego usiłuję każdy problem rozwiązać. Udało mi się ustalić przyczynę problemów z zawartością Ubuf(). Winny okazał się kompilator - u mnie na wersji 1.11.9.5 problem występuje, natomiast u kolegi Jaca na wersji...
Druga kwestia, to zapis do pamięci 24c04 liczby zmiennoprzecinkowej, hmm. nie robiłem nigdy tego, nie bardzo wiedziałem jak to ugryźć. Sprawa jest generalnie prosta. Liczba typu single zajmuje cztery bajty, wystarczy więc ją rozbić na pojedyncze bajty i zapisać każdy z osobna. Przy odczycie robisz dokładnie odwrotnie. Powiesz pewnie "no dobra, ale...
Czuję się powalony na łopaty..... Piotrek ja nie wiedziałem, że do wewnętrznego eeprom-u można tak bezpośrednio zapisać zmienną SINGLE. Ciągle czytałem o konieczności rozbiórki, a nikt do tej pory takiej prostej rzeczy nie napisał.... Nawet w Pomocy BASCOM-a (tłumaczenie na polski) tego nie ma, ba nawet w książkach na temat AVR "tysz ni ma".... To jest...
W tym przykładzie Zakładam że czytałeś to: Nie łatwo przejść tak z marszu z Basic na LUA, za dużo w LUA znaków przy instrukcjach, których w Basic niema. Łatwiej z C wejść do LUA, bo to prawie C tyle, że wyższego poziomu. Dlatego trzeba uważać na aplikacje gdzie potrzeba dużej wydajności, a LUA nie przewiduje wstawek w asemblerze ;) Na domiar złego LUA...
Znalazłem kod tablicy świetlnej, 8x8 sterowanej przez rejestr 74164, niestetypo załadowaniu programu na tablicy świecą się tylko trzy kolumny diód :(. Czy ktoś mi pomorze to rozgryść? 'Program tablicy świetlnej 'Sterowania multipleksowe wyświetlaczem matrycowym 7x5 LED 'Częstotliwość sterowania kolumn wyświetlacza wynosi ok. 333 Hz 'czyli częstotliwość...
Przy okazji mam jeszcze jedno pytanko.Co prawda nie dotyczy lcd ale szkoda zakładać nowy temat. Chodzi o stringi. Otóż każde z moich urządzeń w sieci zdaje masterowi tzw. raport. Otrzymuję taki tekst jako odpowiedź z modułu: <007_(at)_/TIN:H18.0_TOUT:H16.7_POZ:0... i teraz pytanie....
Wiem że zżera. Ale nie wiem w jaki inny sposób mógłbym to rozwiązać.Pewnie , lepsze było by jakieś bezpośrednie ładowanie grafiki na LCD. W przypadku "showpic" nie ma problemu ale znowu grafika musi siedzieć albo bezpośrednio w atmedze albo w zewnętrznym eepromie co w obu tych przypadkach nie ma miejsca bytu. Zapewne C lub asm poprawiło by wyświetlanie...
Witam Poszukuję polskiego tłumaczenia Avr-libc. Mam wersję anglojęzyczną ale jakoś nie mogę zrozumieć działania na stringach. Znalazłem w sieci kilka szczątkowych tłumaczeń ale to nie to o co mi chodzi. Czy dysponuje któryś z Forumowiczów takim tłumaczeniem albo potrafi mnie naprowadzić na sposób aby ze stringu np: "ABCDEFGHIJKLMNOP" wyodrębnić do...
Część po przecinku to sobie normalnie matematycznie wyodrębniasz. Nie wiem dokladnie o co chodzi:( mozesz troszke jasniej? moze na jakims przykladzie? Kolega snow ma rację , ale nie koniecznie musi to być "matematycznie" :) Załóżmy , że po pomiarze i obliczeniu napięcia w zmiennej SINGLE , użyjesz instrukcji FUSING , do konwersji SINGLE na STRING.Po...
Albo w ogóle nie bawić się w liczby zmiennoprzecinkowe, tylko... utworzyć 2 zmienne całkowite, jedna odpowiedzialna za części tysięczne, druga za jedności i wyższe. Dodatkowo zaoszczędzisz nieco flash'a, gdyż operacje na liczbach zmiennoprzecinkowych zajmują dużo pamięci programu. A zabawę w Stringi też odradzam... nie wytaczajmy armaty na muchę :D
Ten program jest dziwnie napisany i być może po czasie brakuje mu stosu. Już wyjaśniam. 1. Po pierwsze powinno się deklarować wielkość stosu #hwstack bo inaczej to masz tam tyle ile masz wpisane w IDE a tam możesz mieć dalej jakieś Tiny2313. 2. Po drugie użycie instrukcji GoTo by przeskoczyć z jednego Sub do drugiego lub wyjście z Sub do pętli głównej...
(at)adamusx ja umiem bascom i asm jak potrzeba to wstawiam. co c niemogę sie przekonać bo ma taką dzika składnie. i wkurza mnie że wszyscy tylko ten c i c jak by to było niewiem co. wiem że basick kładzie go na łopadki jeśli chodzi o operacje na stringach hehe. juz kilka razy prubowałem przejść na c ale zawsze wracam na Basica. (at)bartods wyświetlanie...
Hmm, i wtedy można podawać komórki nawet do ograniczenia czyli 256*7 stron, też jest zaletą. O co chodzi z address,kolega tylko tak przykładowo go nazwał? Address mam użyty przy RC5. A nie lepiej dać instrukcję warunkową jak np.: if komorka>256 then komorka=0 ppp=ppp+1 endif Trochę prostsze- przynajmniej krótsze :D ps. "ale że mam dziś dobry dzień do...
Cytuję: "Ustawia się to w zależności od skomplikowania programu. (...)" O co tutaj chodzi i o jakie wartości tutaj chodzi? Dokładnie chodzi o ilość bajtów jaką początkowo zajmie każdy ze stosów. Stos jest elementem rozrastającym i kurczącym się dynamicznie. Może dojść do sytuacji gdzie jeden zajdzie na drugi - stack overleap - i kłopot gotowy. Dlatego...
Dzięki! Dokładnie o coś takiego mi chodziło. (at) Paweł Es. , pomiary są wykonywane co 750ms i na bieżąco wyświetlane na wyświetlaczu, dlatego dopiero co 1200 pomiar jest brany do porównania. Niestety nie mogę zapisywać 3 pomiarów i później ich porównywać ponieważ zabrakło pamięci Flash dla ATtiny2313. Muszę ograniczyć się do 2 pomiarów. Pojawił się...
Tzn. wiem, że zmienna typu bajt nie może być większa niż 255, ale zapomniałem, że nie robi się operacji na różnych typach zmiennych razem [syntax=vbnet] Solar_mid_mod_temp = Solar_mid_mod_temp \ 2 ' srednia z dwoch czujnikow = 283 [/syntax] co prawda przekracza 255, ale wynik z dzielenia przez 10 i Modulo 10 już nie, czyli 28 i 3 [syntax=vbnet] Solar_mid_dec...
Walczę i walczę z tym programem ale nie daje rady.... :cry: Wrzucam cały kod, jest on zrobiony na bazie jak wspomniałem wcześniej: Projekt powiadomienia o alarmie by Xury wersja 2.0 [syntax=basic4gl] '***************************************... 'Projekt powiadomienia o alarmie by Xury wersja 2.0 'Działanie na przerwaniach...
Termostat, zasilanie 230V, praca w pomieszczeniach suchych, temperatura 20..30 stopni Celsjusza. Wejścia: 3 termometry ds18b20, max 100m (można stosować repeatery, konwertery protokołów czy zdalne termometry RF). Wejścia zabezpieczone przed uszkodzeniem, i zwarciem. Awaria jednego termometru nie może wpływać na pozostałe. Klawiatura lokalna foliowa...
Dołączę do dyskusji C kontra Bascom. tmf napisał Warto spojrzeć kto doradza - jakoś tak się składa, że C/C++ doradzają osoby mające tysiące postów na koncie i często setki lub tysiące "pomógł", po przeciwnej stronie mamy osoby z licznikiem na poziomie kilku-kilkunastu. Mam "licznik na bardzo niskim poziomie" mimo to doradzam C/C++. Jestem osobą która...
Po zastosowaniu większości zmian Mundi1970 wynik kompilacji to 7780B z poprzednich 7942B. Nie zmieniłem jeszcze operacji na eeprom - jakoś nie mogę tego ogarnąć - co z zapisem do eeprom czy w takim przypadku pozostaje bez zmian? Można też, gdyby Ci zabrakło kilka bajtów, odzyskać je zamieniając warunki IF...AND... na łączone IF...IF... Mógłbyś podać...
Witam, męczę się z pewnym programem który za zadanie ma odebrać sekwencje tonów i wysłać przez UART oraz wyświetlić na LCD. Mam program zaczerpinięty z jednej strony ale nie wykonuje mi on operacji tak jak bym chciał. Ten program musze przerobić żeby: - rozróżniał dlugość sekwencji dźwięków tzn w zalezności od tego czy dźwiek ma 5 tonów 6 tonów itd....
Witam ,właśnie zaczynam wzmagania z operacjami matematycznymi w BASCOM (jak dotąd nie były mi potrzebne) ;) Zauważyłem pewne zjawisko ,że po przekroczeniu 90% Flash przy kompilacji zaczynają się dziać dziwne rzeczy ,jakby stos czy ram niszczył zmienne i pojawiają się dziwne wyniki ,stąd z ATTINY2313 ,przeskoczyłem na Atmegę8. Ten sam program bez jakichkolwiek...
bascom string string bascom bascom operacje zmiennych
zakładanie nowych tematów potencjometr liniowy logarytmiczny amilo instrukcja
Czy stara antena satelitarna działa z Polsat Box? Kontrolka oleju w silniku 1.8T 20V poniżej 2000 obr./min