Jest to kod z Pana Wiązani być może nieudolnie przerobiony. Oryginał ma tak: Dim licz_8ms As Byte Incr Licz_8ms If Licz_8ms = 125 Then ............. I to działa, czyli ja nie mogę używać liczby stałoprzecinkowej . No dokładnie. To działa tylko dla Byte (i podobnych). Chociaż typ danych Single mówi, iz może przyjmować wartości stało i zmiennoprzcinkowe....
http://obrazki.elektroda.pl/8267947700_1... Ponad 20 lat temu jako amator hobbysta budowałem proste układy elektroniczne. Studia i styczność z informatyką spowodowały, że porzuciłem hobby pod nazwą "składanie elektroniki" na rzecz "składanie programów komputerowych". W bieżącym roku (2011) dzięki uprzejmości kolegi Jacka.M, który okazał...
Może Frac ?
Dobrze jest pisać jaka wersja Bascom bo czasem rozmowa jest bezcelowa jak ktoś używa ver 1.1 coś tam spolszczonej. Funkcja Round zaokrągla do najbliższej wartości czyli z 2,4 zrobi 2 a z 2,6 zrobi 3 Jeśli chcesz zwykłą zmienną to wystarczy przepisać wartość z Single i program zrobi automatyczne rzutowanie i obetnie to co po przecinku. Kwestia potrzeb...
Witam Szanownych Kolegow... Czy posiada ktos moze opracowana procedure dodawania liczb calkowitych (wprowadzanych z klawiatury) w Bascom? Liczby sa 2 cyfrowe. Poczatkowa liczba jest zero. jesli mam operacje dodawania, wynik jest zwiekszany i zapamietany, podobnie z odejmowaniem... Bardzo prosze o pomoc.
No ale w takim razie powiniem zwracać wartości ułamkowe na najmłodszych bitach. A nie zwraca. Albo inaczej: Ty traktujesz te liczby jako całkowite a mimo to masz je tylko do 2047. Czyli to nie jest przetwornik 16-to bitowy. Ale uwaga. Po obliczeniu wartości, przepisuj wyniki ze zmiennej Integer do zmiennej typu Long. Inaczej jak offset ustawisz na przykład...
Program wygląda dużo lepiej. I = 1wread(2) pobiera dwa bajty w których znajduje się temperatura. Polecam zajrzeć do karty katalogowej DS18B20 str.4. W I znajdzie się liczba 16 bitowa, gdzie pierwsze 4 bity to znak, następne 8 bitów to część przed przecinkiem, a cztery ostatnie to to co po przecinku. Liczby ujemne są w kodzie U2. S = I / 16 Powyższe...
Jednak liczylem na lepsza pamiec, rasowy asemblerowiec chyba powienien ja miec.Co do zmiany zdania to napisales, ze nic tu nie napisales o necie. Piszac tu zaponiales chyba co pisales 5 dni wczesniej, ze na necie sa takowe biblioteki. nie napisałem tutaj nic o tym, że coś jest na necie Tutaj, czyli tak jak się patrzysz na monitor i przewijasz ten temat...
Witam Chciałbym z liczby np. 34 Uzyskać dziesiątki i jedności Robię sobie coś takiego: Dim A As Byte , B As Byte , Wart As byte Wart = 34 Wart = Makebcd(wart) A = Wart And &B00001111 Shift Wart , Right , 4 B = Wart I w zmiennej A mam jedności a w zmiennej B mam setki. Chciałem sobie teraz zrobić tak z liczbami większymi od 99(liczby 3 cyfrowe)...
Witam! Mam tu taki kawałek kodu: Dim Tick_time As Single Dim Length As Single Dim Mps As Integer Dim Fps As Integer Dim Fff As Single Dim Tick_count As Integer Dim Czas As Single Tick_time = 0.000096 Czas = Tick_count * Tick_time Mps = Length / Czas Fff = Length / Czas Fff = Fff * 10 Fps = Fff / 3 Tick_count = 0 Cls Lcd Mps Lcd " m/s " Lowerline...
Witam Napisałem program który zlicza impulsy z przycisku ale nie chce mi wyświetlać wyniku, wyskakuje taki komunikat: Error : 35 Line :30 3 parameters expected a to jest ten program: Dim J As Byte , D As Byte , S As Byte , T As Byte Dim Wynik As Byte Config Portb = 255 : Portb = &B11111111 Config Portd = &B1111100 : Portd = &B1111111 Cls Do...
Chyba jednak nie ta instrukcja. Dzięki formatowi mogę uzyskać to że nie będzie przesuwało napisu Cool1 = Cool * 0.1953125 Cool2 = Fusing(cool1 , "#.#") Cool2 = Format(cool2 , " ") Tak masz rację, na symulatorze nie działa. Przy aliasach chyba jest błąd, dwa razy przypisy do tych samych pinów. [syntax=basic4gl]Ac Alias Pinb.0 Ss Alias Pind.7 Sg Alias...
tak jak pisał kolega wyżej 34/10=3 (pod warunkiem deklaracji jako liczba całkowita) 34 mod 10=4
Witam "integer" nie jest zmienną tekstową. Integer przyjmuje watrtość liczby całkowitej w zakresie od- 32768 do +32767 Integer nie zapisuje ułamków.
Dokładnie tak jak mówi Fredy - kiedyś w jednym z projektów na Atmega8 miałem już praktycznie całą pamięć zajętą i po przejściu tylko na liczby całkowite zyskałem ponad 0,5kb
To może koledzy mają jakiś inny sposób na zamianę liczby z postaci zmiennoprzecinkowej w całkowitą? No to w końcu chcesz mieć liczbę całkowitą w zmiennej zmiennoprzecinkowej czy liczbę całkowitą w zmiennej całkowitej? Jak to drugie, no to Round: Dim Co2_w As Single Dim Co2_int As Long ... Co2_int = Round(co2_w) Niezgodnie z Helpem BASCOMa,...
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...
A np. logiczne zero w NECu to 560us wysoki i 560us niski. Żeby mieć liczbę całkowitą, to muszę użyć 10us. Czemu nie można ustawić przerwania od razu co 560µs?
Namoje szczęście mnożenie ma być przez liczby całkowite Ale mnożenie przez liczby całkowite też będzie z błędem. Nie podaję częstotliwości i innych szczegółów- na tym etapie jest to nie istotne. To akurat jest bardzo istotne. Do wysokich częstotliwości trzeba inaczej podejść. Podaj chociaż bardzo przybliżony zakres. I powiedz czy wymagana jest stuprocentowa...
Mea culpa zapomniałem że mega8 ma wewnętrznie podciągnięte AVCC do VCC. Dodano po 4 A jak oblicza się to 0.0048? 5/1024=0.0048. Więc 1024/5= 204.8 z tym że operujemy na liczbach całkowitych więc 205.
Bash zna tylko liczby całkowite. Można wykorzystać bc, na przykład tak (porównanie do 1.23): [syntax=bash][ $(echo "$(exec 3</dev/ttyAMA0 && echo "S" >/dev/ttyAMA0 && head -1 <&3 ; exec 3<&-)" " < 1.23" | bc) = 1 ] && echo prawda || echo fałsz[/syntax] Ale to wyglądałoby lepiej jako skrypt, a nie jedna...
Łopatologicznie to by było tak... Masz zmienną o nazwie np. LICZBA=123 i chcesz z niej wyodrębnić setki, dziesiątki i jedności... Musisz stworzyć nowe zmienne typu całkowitego, np. SETKI=LICZBA/100 --> (123/100 = 1,23 zmienna typu całkowitego utnie te 23 po przecinku i zostanie 1 --> SETKI=1) DZIESIĄTKI=(LICZBA/10)-(SETKI*10) --> (123/10=12 --> 12-1*10=2...
A jeszcze mam takie pytanko o zaokrąglenia ponieważ funkcja ROUND nie do końca prawidlowo działa. Powidzmy otrzymuję wynik liczbowy z przetwornika ADC, dzielę go przez powiedzmy 3 i mnożę przez 100. Liczba po przeliczeniu to powiedzmy 325.4286. Jeśli zastosuję na tej liczbie funkcje ROUND mój wynik to 325 .0 Nie mam pojęcia jak się pozbyć tej kropki...
więc kanał możesz otworzyć tak: Open "COM1:" for RANDOM as #1 Szybkość ustawiasz za pomocą polecenia BAUD lub $BAUD na początku programu jeśli nie masz zamiaru tego zmieniać w programie Liczba 123,45 nie jest liczbą typu integer tylko single. Liczby typu integer są to liczby całkowite. przykład nadajnik: Dim a as integer Dim al as byte...
Ja bym zrobił to tak mam zmienną "a" typu single np potem dziele ją przez 10 a = a / 10 potem przepisuje ją do zmiennej typu np integer np "b" , ktora to automatycznie odcina, zostawia mi tylko liczby całkowite a potem znów mogę ją przepisać do a lub innej a = b zienną typu single można by potraktować tylko jako pomocniczą do obliczeń ale są zapewne...
Czyli masz już w systemie przerwania zgłaszane ze stałą częstotliwością, zapewne na poziomie przynajmniej kilkuset Hz. Oznaczamy tę częstotliwość jako f. Mamy zmienną a - długą i całkowitą. Inicjujemy ją na 0. W każdym przerwaniu timera: - Dodajesz do tej zmiennej liczbę kroków na 10 s (czyli od 1 do 99) - Jeśli wartość tej zmiennej przekroczy 10*f,...
Po prostu wyobraź sobie, że liczysz na liczbach całkowitych, a jednostką jest jedna dziesiąta, czyli jedynkę zapisujesz jako 10, a półtora - jako 15.
Bascoma nie znam, ale jeżeli będziesz wydzielał do zmiennych całkowitych to powinny ci się poprawnie wydzielić poszczególne wartości.
Więc tak potrzebuje wyświetlić liczbę w formacie x.x. I nie wiem jak to zrobić próbowałem tak iż daną liczbę mnożyłem razy dziesięć zaokrąglałem do liczby całkowitej funkcją round a następnie robiłem dzieliłem na dziesięć ale na wyświetlaczu lcd i tak pojawiało mi się kupę liczb po przecinku w formacie x.x00000001 lub podobne x.x999999991. Jak to zrobić...
A bo bascom to taki kaszaniasty trochę jest jeżeli chodzi o wydajność i dzielenie za pomocą '/' wykonuje jako zmiennoprzecinkowe, czyli obie liczby na zmiennoprzecinkowe zamienia, dzili i wynik zamienia na format docelowej wartośc (i tu chyba jest coś skopane). Natomiast dzielenie za pomocą '\' to dzielenie na liczbach całkowitych, o wiele szybsze.
dzielenie całkowite + modulo. Przy dzieleniu przez 10 uzyskasz górną cyfrę, przy modulo 10 dolną.
O ile dobrze pamiętam bascom na 2 rodzaje operacji dzielenia jedno w wyniku daje liczbę całkowita 2 liczbę rzeczywistą. Poza tym wykorzystanie dzielenia to przesada, lepiej i szybciej jest wykonać 4-krotne przesunięcie w prawo, które jest równoważne podzieleniu przez 16. AVR nie ma instrukcji dzielenia wobec tego wykorzystujesz skomplikowany algorytm....
Doszedłem do ładu z tym, cała funkcja jest napisana prawidłowo i skrajne zakresy zawsze powinne się pokrywać niezależnie od obliczeń na liczbach całkowitych. Błąd był jedynie w zapisie złych zmienny do eepromu...
Dzięki za podpowiedzi teraz wiem że double jest liczbą zmiennoprzecinkową i występuje jako liczba dodatnia jak i ujemna. Teraz zostaje tylko przeliczanie na liczbę ........... a to mi się wydaje jak na razie nie tak proste. To znaczy że nie wiem jak się za tą double zabrać. A może na początek bym się musiał nauczyć jak zamienić liczbę Integer (2bajty)...
Działasz na liczbach całkowitych tylko. Pisałem, że sekundy co 2 tylko taka dokładność. Zmienna typu word.
Wszystko się da zastąpić liczbami całkowitymi i zawsze, pamiętaj o tym:) Co do przeliczenia napięcie -> ciśnienie -> patrz datasheet a pewno to tam napisali...
Witam Mam liczbę integer 47 którą zamieniam na single i dzielę przez 10 , wynik to 4.69999806 . I teraz w jaki sposób uzyskać dwie liczby integer całkowitą czyli 4 i ułamkową po zaokrągleniu czyli 7 ?
Tych ułamków, które tak naprawdę są liczbą całkowitą, przedstawianą przy pomocy zmiennej U. Sądziłem, że komentarze obecne w programie wystarczą do zrozumienia zastosowania konkretnych zmiennych.
Więc pytanie zasadnicze. Jak zaokrąglić otrzymany wynik zmiennoprzecinkowy w bascomie AVR? Wykorzystywanie liczb zmiennoprzecinkowych do odczytu temperatury z DS18B20 jest lekko mówiąc mało rozsądne, zwłaszcza że "po przecinku" może być tylko 16 różnych wartości. Takie rzeczy to się zaokrągla na etapie pisania programu, który potem operuje wyłącznie...
Dzięki za odpowiedź ale nim wpisałem pytanie na Elektrodę to sporo męczyłem się z tym (przesuwanie przecinka, mnożenie, dzielenie) ale niestety bez rezultatów. W bascomAVR jest polecenie "Round" ale ono zaokrągla wynik do liczby całkowitej i tym samym odpada. Może jest jeszcze jakieś polecenie coś w rodzaju formatowania wyniku, którego jeszcze nie znam/znalazłem...
To sobie zapisuj w postaci całkowitej i pamiętaj ile miejsc po przecinku dla wszyskich liczb jest przesunięcie, a resztę zaokrąglij.
Zwykle bardzo łatwo jest zastąpić operacje na liczbach zmiennoprzecinkowych, operacjami na liczbach całkowitych. U ciebie w kodzie masz taki kwiatek: Pomoc3 = Cykl / Y Prc = Pomoc3 * 100 Czyli najpierw liczysz wartość która u ciebie jest ułamkiem, a póżniej praktycznie zamieniasz ją na liczbę całkowitą. A wystarczy zamienić kolejność i operować na liczbach...
Działaj na zmiennych całkowitych 1000 razy większych niż liczby które chcesz wpisywać. A na koniec wynik przepisz do zmiennej Single i podziel przez 1000.
Stosuj zasadę 2 jednostki = 1 stopień, tak jak ma to miejsce w np. DS1820. Temeratura dzielona przez 2 daje rzeczywistą wartość, a reszta równa jeden oznacza wtedy połówkę. Dzięki temu wszystko zapisuje się na liczbach całkowitych, co oszczędza pamięć.
Witajcie, czy istnieje możliwość zapisania dużej liczby całkowitej (powyżej 255) w pamięci eeprom procesora M32? Najlepiej aby dało się ją zapisać do konkretnych komórek pamięci - by nie nadpisać przypadkiem innych. Jeśli tak, to w jaki sposób? Druga sprawa... chciałbym zwiększyć licznik o jeden po każdym pełnym wykonaniu programu (nie w pętli). Niestety...
Powiedzmy, że mam zmienną N, która może przyjmować wartości całkowite z przedziału od 1 do 20. Chciałbym żeby dla niektórych (rozmieszczonych przypadkowo) wartości wykonało się jedno polecenie a dla pozostałych drugie. Myślałem o instrukcji "Select Case" ale czy da się to zrobić w uproszczony sposób, czyli do jednego "Case" wstawiamy pierwszą grupę...
Pod warunkiem, że wartość nie przekroczy 255. Podział na bajty składowe singla w pamięci masz przedstawiony! Część całkowita? Funkcja INT() Przeznaczenie: Zwraca całkowitą cześć podanej liczby. Składnia: zmienna = INT( wartość ) gdzie: zmiennadowolna zmienna, do której wpisana będzie całkowita część podanej liczby, wartośćliczba której całkowita część...
Po pierwsze nawet jak by Ci się to skompilowało to wynik działania A = 1 / Timer1 prawie zawsze będzie równy 0. Więc późniejsze mnożenie go przez 60 nic nie zmieni. Zrób: A = 60 / Timer1 A ten błąd to jest w linii B = Int(a) ? Jak tak to pewnie Int nie przyjmuje innych parametrów niż typu Single. Po co wyciągać część całkowitą z liczby całkowitej?...
Jak użyć znaków specjalnych LCD z tej dokumentacji Poszukać informacji o sposobie zapisu liczb naturalnych całkowitych w postaci dwójkowej (binarnie). Poszukać informacji o sposobie kodowania znaków wg standardu ASCII. Otworzyć helpa i poszukać informacji o funkcjach manipulujących na tekstach i znakach, a także podstawy języka.
Witam, mam problem ze zrozumieniem obsługi transmisji 1-wire w Bascom'ie. Chciałbym obsłużyć jeden układ DS18B20 przez mikrokontroler ATMEGA8. Zależy mi na programie odczytującym wartość temperatury i zapisaniu tej wartości w postaci liczby dziesiętnej jako zmienna. Jeżli ktoś ma chwilę czasu to bardzo proszę o umieszczeniu kompletnego kodu, wtedy po...
(1200-2*60)/300=3 (zapomniałem napisać, że dzieli się do liczby całkowitej - myślałem, że to oczywiste; dopiszę, że pierwsze dodawanie 1 po dzieleniu można pominąć, jeśli podzieli się bez reszty); (1200-2*60)/4=270 (mm) i to jest odległość punktów, a ich ilość to 4+1=5. (1250-2*60)/300=3, (1250-2*60)/4=282.5 (mm), nadal 5 punktów.
Najprościej zrobić to tak: wyliczasz napięcie z proporcji, ale nie do 20 tylko do 2000. Następnie dzielisz to przez 100 a wynik zapisujesz do liczby całkowitej - masz to co przed przecinkiem. Potem mnożysz to przez 100 i odejmujesz od pierwotnego napięcia - masz to co po przecinku. Wyświetlasz tak jak napisałeś. LCD przed_przecinkiem;",";po_przecinku;
Ale - dla stringu "84.2" otrzymuję wartość zmiennej 84.199996946 Niestety rozdzielczość zmiennych typu Single jest skończona i nie można w nich zapisać każdej liczby zmiennoprzecinkowej. Jak sądzę, jest to problem konwersji do single - czy jest jakiś sposób, aby otrzymać tą wartość dokładnie taką jak w stringu ? Jeśli masz dużo pamięci RAM to zastosuj...
liczby całkowite reprezentująca liczby całkowite bascom liczby
zestaw mieszający podłogówki wariować zegar content watch
samsung ue40k5672 bateria milwaukee
Audi A2: Kontrolka klocków po skręcie w prawo Jak połączyć laptop z projektorem Epson EMP-1705?