to zmienna *10 i do integera nastepnie funkcja str i format fusing to jest to czego sie unika w bascomie ;)
Witam co do tej funkcji format to faktycznie nie ma w 8051 w AVR już jest zrobiłem za pomocą instrukcji fusing i działa w każdym razie dzięki za odpowiedzi być może jakiś user początkujący wykorzysta te informacje w swoim projekcie Pozdrawiam.
Fusing beeeeeee:-) , Ale jak ja biedny teraz wyświetle sobie liczbe do dwuch miejsc po przecinku?:-) bo juz taki dobry z programowania to narazie nie jestem. Nie ma jakies innej instrukcji jakiegoś format czy coś:) Zaznaczam, ze C nie znam tylko Bascom na poziomie radzenia sobie i VBA ale to nie ta działka:) PS Patrze na wyswietlacz i nie wierze ze...
Bascom help: "FUSING" :)
Zedytowałem post. Zobacz. Dodano po 1 Ale i to może by zadziałało. Dodaj jeszcze jedno "0": Z = Fusing(a , "#.##") Z = Format(z , "00000")
Jeśli pomnożysz x 1000 to funkcje int i round są już niepotrzebne. target = FUSING(source, "mask") target = FORMAT(source, "mask") Dokładny opis w helpie.
Text = "99.9999" Text = Format(text , " 0.00") LCD Text Pytanie poza konkursem: dlaczego wszyscy notorycznie stosują Fusing(xxx, "#.&&")? Nie lepiej Fusing(xxx, "#.##")?
Poczytaj helpa o funkcjach Fusing i Format.
W miejsce instrukcji Fusing użyj Format.
To sięgnij po" fusing" dla single i "format" dla reszty.
Zaoszczędziłem 32bajty. A teksty z lini: 45, 47, 304, 373, 477, 517, 519, 566, 568, 614, 616, 663, 665, 713, 715, 761, 763, 798 dlaczego nie są w Eepromie :)? Możesz wykasować spacje w łańcuchach i zmodyfikować początek Display_msg. Te wszystkie sztuczki pozwolą ci zaoszczędzić parę bajtów , ale największe oszczędności przyniesie ci rezygnacja z liczb...
Poszperaj w pliku pomocy do bascoma (1.11.7.4), zwróć uwagę na funkcję fusing(), format() Pozdrawiam.
rozwiązałem to w nstp sposób gdzie: -x0 to korekta dla zerowego ciśnienia -x4 to wartość dla 4rech atmosfer -a,b zmienne pomocnicze -ezero, e4bar wartości zapisane w eeprom x0=ezero d=getadc(0) x4=e4bar a=x4-x0 a=4/a b=d-x0 p=a*b S = Fusing(p, "#.#") thirdline lcd "Bar="; Locate 3 , 5 S = Fusing(p, "#.##")...
Tak na szybko mam takie rozwiązanie: Dim Go_s As String * 2 , Mi_s As String * 2 , Se_s As String * 2 Go_s = Str(godzina) Mi_s = Str(minuta) Se_s = Str(sekunda) Lcd Format(go_s , "00") ; ":" ; Format(mi_s , "00") ; ":" ; Format(se_s , "00") Wartości...
Poczytaj o "Fusing" i "Format" Edytowałem post. Robak
Problem leży w tym że zaraz po pierwszym odczycie bez uśredniania wyników zerujesz flagę [syntax=basic4gl]If Flaga_1uruchomienie = 1 Then Wart_nap1 = Fusing(y , "#.#" ) Wart_nap1 = Format(wart_nap1 , " ") Flaga_1uruchomienie = 0 Else Wart_nap1 = Fusing(yyy , "#.#" ) Wart_nap1 = Format(wart_nap1 , " ") End if[/syntax] a powinno być [syntax=basic4gl]If...
Fusing to jest do ułamków dziesiętnych... Do formatowania służy Format, ale już sobie poradziłem, dzięki wszystkim za pomoc, zamykam temat.
pisałem że próbowałem rozwiązać problem, patrzyłem do helpa i nie wykombinowałem więc pisze tu. Takie wyświetlanie miałem już zrealizowane bez funkcji format (dodając parę pętli if) jednak na przyszłość chciał bym wiedzieć normalne rozwiązanie. Według mnie bascom help mówi żeby zrobić tak Stout1 = Fusing(wout1 , "##.#" ) Stout1 = Format(stout1...
Widzę, że kolega zamierza ostro optymalizować swój kod, skoro dał 1wreset do podprogramu. Z tym, że skoro nie przekazuje do niej żadnego parametru to szkoda go deklarować i lepiej użyć Gosub. Druga spawa to jeśli jest zegar to zamiast używać waitms do wstrzymywania programu na czas konwersji to można by np. w sekundzie nieparzystej rozpoczynać konwersję,...
Witam Wart_nap = Fusing(r , "#.##" ) Wart_nap = Format(Wart_nap , " ") Wtedy nie będzie się przesuwał napis
Witam Może dla większości proste pytanie, ja niestety nie umiem sobie z tym poradzić. W zmiennej single mam wartość z kilkoma miejscami po przecinku i teraz mam pytanie: czy jest możliwość odcięcia zbędnych cyfr po przecinku tak, aby w/w zmiennej fizycznie pozostała pożądana wartość? np: wartość w zmiennej 1.2345 potrzebna 1.2 lub 1.23 Dodam tutaj,...
...Pytam, ponieważ muszę użyć funkcji: X = Fusing(ds1 , "#.##") A dlaczego musisz :?: Mam nadzieję że nie dlatego bo chcesz wyświetlić część ułamkową ;p Jeżeli już to: Dim Ds As Integer Dim Ds1 As Single Ds1 = Ds X = Fusing(ds1 , "#.##") Jeżeli chodzi tylko o dodanie kropki to może: Dim Ds As Integer X = Str(ds)...
durny błąd Nap: Wart_u2 = Getadc(4) U2 = Wart_u2 * 0.004887585533 V2 = U2 * 4.83 Wart_nap2 = Fusing(v2 , "#.#" ) Wart_nap2 = Format(wart_nap2 , " ") Return 'to wywalić Select Case Wyswietlanie Case 0:
Program napisany w BASCOM AVR i wyskakujące 3 błędy , mogę wiedzieć dlaczego one wyskakują podczas kompilacji , poniżej zamieszczam kodzik. 'podwójny woltomierz i amperomierz (dwa kanały pomiaru napięcia i dwa kanały pomiaru prądu 'UWAGA _ PONOWNE WGRANIE PROGRAMU SKASUJE WARTOŚCI WSP KOREKCJI Z PAMIECI EPROM '---------------------------------------...
... Może ktoś wie jak to zrobić bez sztucznego sprawdzania i dopisywania końcówek. PL Ja chyba wiem ;) 'dla Frm = 0 , kompiluje Fusing() 'dla Frm = 1 , kompiluje Format() 'teraz mozna porównać "pamięciożerność" Const Frm = 0 Dim A As Single , B As Integer , C As String * 10 A = 1.1625 B = A * 10 #if Frm C = Str(b)...
Problem polega na tym, że odczytujesz wartość ADC z uC zamiast z DS18xxx. Brakuje ci obsługi DS18B20. Poniżej fragment kodu działającego u mnie. [syntax=vbnet] Config 1wire = Portb.0 '0,1,2 NOP 3,4,5,6,7 works good ON MY Equipment Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms...
super dokładne wyniki nie są aż tak wymagane... w sumie to zasilacz i odczyt napięcia i prądu. Potwierdzam, wiem, że funkcja fusing zabiera sporo flasha i przygotowałem już w zanadzu podobną do Twojej funkcję wykorzystującą str i format... mniejszy kod fakt ! Byłem ciekaw co szło nie tak z tym fusing stąd ten post. Szukam po helpie informacji odnośnie...
Tak też robiłem ale to nic nie dawało. Wyświetlacz cały czas pokazuje zero. On wogóle tej zmiennej nie zwiększa. W kość daje ta linijka U_wy = Fusing(v , "#.&") ona powoduje wyzerowanie zmiennej licznik i za cholerę nie mogę dojść dlaczego. Spróbuj tak: [syntax=basic4gl]Do Wart_ac = Getadc(1) 'odczytanie wartości z wejścia 'ADC1 mikrokontrolera Lcd...
Witam serdecznie! Mam problem z wysyłaniem po RS danych. Korzystam z funkcji Print , używałem jej z i bez średnika, używałem też konwertowania na hexy cuda, wianki..... :) Program odbierający stringi (c#) czyta mi z tego portu jakieś badziewie (prawidłowy format to 20.58) a dostaję: 20.58 .58 0.58 8 20 20.58 celowo dałem tam spację bo jest, w bascomie...
Juz lepiej z przejrzystością kodu , sam chyba przyznasz ze łatwiej ogarnąć program , tylko te Wait'y . Miałeś je usunąć z programu . Stosujesz dokładne odmierzanie 1 sekundy i minuty a zatrzymujesz program Wait'em 10 na około 10 sekund . Napisałem jak wykorzystać odmierzanie 1 sekundy do odmierzenia 10 sekund dla buzzera Dopisz w tej linijce kodu Wart_nap...
w negatywie nie (też to kiedyś przerabiałem ;-) ) zostaje tylko lcd designer , zapisywanie temperatury do epromu , nie wiem ile to pamięci zabiera sprawdz czy np przy pomocy debounce i dwuch przycisków ( + , - ) mógłbyś ustawić sobie (niestety za każdym razem jak wyłączysz zasilanie) temperaturę alarmu , może zaoszczędzisz trochę pamięci trochę poprawiłem...
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...
Jest to woltomierz: $regfile = "m8def.dat" $sim $crystal = 1000000 Config Lcd = 6 * 1 Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , E = Portd.3 , Rs = Portd.2 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Pinb.1 = Input Portb.1 = 1 S1 Alias Portb.1 Dim Wart_u1 As Word Dim U1 As Single...
To była moja pierwsza myśl, Disable INT0 umieściłem w pętli głównej na zasadzie [syntax=basic4gl]Do Czas = Czas * 0.22148394241 Predkosc = Fusing(czas , "###.#") Predkosc = Format(predkosc , "00000") Mid(predkosc , 4) = " " Text = Predkosc Disable INT0 gosub sendnap Enable INT0 Loop [/syntax] I działanie to przyniosło efekt w postaci narastania licznika...
Proszę. Gotowe bo jak widzę kilka If`ów do tej samej zmiennej zamiast Select Case i tym podobne kwiatki... [syntax=vbnet]$regfile = "m32def.dat" $crystal = 11059200 $hwstack = 64 $swstack = 16 $framesize = 64 Const Timeout_time = 8 'x500ms Config Submode = New ' config LCD 2X16 Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4 , Db5 =...
Troszkę długo to trwało, bo miałem problemy, atmeszkie 16 spaliłem przez przypadek nie wiedząc o tym i z tym się bawiłem bo mi ADC nie działały........... Mam problem z czymś innym mianowicie zabrakło mi pamięci i wyskoczyło mi w bascomie komunikat. A w optymalizację programu się nigdy nie bawiłem a muszę jeszcze sporo dopisać. Jak na razie wyrzuciłem...
Witam serdecznie! Mam problem z inkrementacją zmiennej Z, ponieważ wszystko opiera się o dokładność przedstawiania liczby zmiennoprzecinkowej. Zamiast 0,1 pokazuje 0,09. Próbowałem już fusing(), frac() (wskazywanie liczby po przecinku, chciałem tą resztę zaokrąglać round() ) , może format() ale tu trzeba non stop konwertować zmienne na znaki z liczb...
Witam Chciałem przesłać wynik obliczeń który jest zmienną typu Integer. Ale wcześniej muszę do zmienić na Byte i wtedy dopiero mogę wysłać. Zmienna Integer jest z zakresu 990 - 1115 ( wartość ciśnienia ). W układzie odbiorczym muszę ją z powrotem złożyć ( do wyświetlania na LCD i zapisu na SD ). Próbowałem coś takiego: Dodano po 1 Już mam: [syntax=basic4gl]...
Poprawiłem błędy, w tym ten związany z częstotliwością a nie z okresem sygnału. Dodałem zmienną typu Single Czestotliwosc, do obliczeń zmiennoprzecinkowych. W Timer0 wpisuję na starcie 131, Config Int0=Rising. Czy dobrze to robię, czy we właściwych miejscach kodu? Pytania: Jak zaokrąglić wynik ze zmiennej Czestotliwosc do dwóch miejsc po przecinku?...
Witam. Buduję woltomierz do zasilacza laboratoryjnego. Jak zwiększyć zakres pomiarowy tego woltomierza ? Obecnie mierzy on od 0V do 24,04V. To fragment programu: Start Adc 'uruchamia wbudowany przetwornik 'początek pętli programu Wart_ac = Getadc(1) 'odczytanie wartości z wejścia 'ADC1 mikrokontrolera 'czyszczenie LCD 'kursor do drugiej linii...
Witam. Żeby trochę usystematyzować: - posiadam enkoder 100pulsów/obrót - spodziewam się wyniku na wyświetlaczu z rozdzielczością powiedzmy 1/10 obrotu Poczyniłem taki krok, że zmienną Encounter zmieniłem jak Single. Dodatkowo wstawiłem linijkę Encounter=Encounter/100 poza pętlą Do...Loop według sugestii Kolegi. Niestety nadal wyświetlana jest ilość...
Witam. Po jakimś czasie musiałem wrócić do mojego projektu gdyż przydałby mi sie woltomierz w aucie teraz i postanowiłem dodać go do mojego zegarka z temp. Wszystko działa ok ale po kilku sekundach wyskakują mi jakieś krzaki na LCD. Może ktoś zerknąć na kod i zobaczyć gdzie dałem ciała ;) tak to wygląda: http://obrazki.elektroda.net/83_12427340...
Złego jest to, że nie jest to mój wynik czasu zapisany jako jedna zmienna w postaci dziesiętnej. Potrzebuję tego, aby później porównywać ten wynik zapisanymi z innymi danymi i zależności od tego czasu zmierzonego będzie wykonywać inne zadania. Nie wiem jak to rozwiązać. Więc tak jak pisałem: przeformatuj wynik! Zmień wymiar zmiennej 'Del' na: Dim Del...
Testując dłuższą chwilę wydaje mi się, że teraz na pewno nie wywala się program, i temperatury śmigają aż miło. Wyrzuciłem całe obliczenia: [syntax=vb]'----------------------------... ADC2------------------------------------... Adc2: Wart_u1 = Getadc(6) U1 = Wart_u1 * 0.004887585533 V1 = U1 Y = V1 ^ 6 Y = Y * 3.627 X = V1 ^ 5 X = X * 38.63 Y =...
Witam kolegów serdecznie tuż przed świętami. Piszę program realizujący pomiar temperatury i zapisujący uzyskane dane do pliku zlokalizowanego na karcie SD. Powoli wtrącam timery zamiast wait(). Mam w sumie trzy problemy. 1) Formatuje uzyskane dane przez zapisem do pliku. Niestety nie wiem jak w stringu zamienić kropkę na przecinek i dopiero taki format...
Witam mam taki kod: $regfile = "m1280def.dat" $crystal = 16000000 $baud = 9600 Dim A As Integer , B As Single Dim S As String * 7 A = 0 Config Portb = Input Portb = 255 Waitms 1 Enable Interrupts Config Timer0 = Timer , Prescale = 1024 Enable Timer0 On Timer0 Prze_timer0 Do B = A * 256 B = B + Timer0 B = B / 15625 S = Fusing(b , "#.###")...
wynik końcowy faktycznie za każdym razem jest inny. (at) emarcus możesz podpowiedzieć jak powinien wyglądać serwis int1? Popatrzyłem troche bliżej na twoj kod. Z jakiego powodu potrzebujesz otrzymać wynik ("Czas_2") z dokładnocią aż do 9 miejsc decimal? Jeżeli jeden z czynników iloczynu (rozdzielczość timera) jest liczbą wymierną z dokładnościa do...
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 =...
Witam mam problem z zapisem w programie następującego wielomianu: y = 3,627*V1 do potęgi 6 - 38,63*V1 do potęgi 5 + 167,9*V1 do potęgi 4 - 382,0*V1 do potęgi 3 + 475,2*V1 do potęgi 2 - 307,4*V1 + 101,2 Wynik y ma być wyświetlany na LCD. Próbowałem tak, ale wychodzi zły wynik: $regfile = "m16def.dat" 'informuje kompilator o pliku $crystal =...
Witajcie, mam problem z kodem poniżej. Chodzi o ten element: [syntax=basic4gl]Do B = A * 256 B = B + Timer2 B = B / 15625[/syntax] W takim przypadku kompilator wywala mi błąd w wierszu z Timer2 - niezadeklarowana zmienna TIMER2. To nie jest zmienna!! A gdy zmieniam na Timer1 - wszystko jest OK. Ale dla mnie ... to całkowicie bez sensu. Błędy w kompilatorze?...
bascom fusing fusing bascom bascom format
oporność głośnik przekładnia hydrostatyczna zawieszenie tylne laguna
ekspres krups ea897 bosch suszarka
LG 55EG9A7V - Czarny ekran po włączeniu Naprawa chowanego wyświetlacza LED Cronos Heaters CRP-770 w Głogowie