Config DP działa od wersji 2.0.1.0, jeżeli masz tą lub nowszą wersje Bascom'a w Fusing zamień "#.##" na "#,##".
Tablica Bufor() jest typu Byte więc to nie Stringi i konwersja Hexval do niczego się nie przyda. Bajty są zamieniane niejawnie we Frame tylko na potrzeby wyświetlania na LCD. Coś w ten deseń powinno działać. Ogólnie to można to mocno poskracać, ale nie chciałem zaciemniać. [syntax=vbnet]Dim Arr(4) As Byte Dim Test As Single At Arr(1) Overlay Dim Bufor(9)...
Witam Kolego Unreal89. Pracuję pod Bascomem 8051 i nie spotkałem się z funkcją, o której wspominasz. Przejrzałem pliki help'a i tam również nic nie znalazłem. Zainteresowany jestem z jakiego powodu odpada komenda "fusing"? Dla czego pytam? Pozwolę sobie obszerniej skomentować zaprezentowany listing. 1. Termometr DS18B20 przechowuje informacje o temperaturze...
Nigdy nie miałem tego sensora u siebie i dlatego nie czytałem dokumentacji i koła od nowa tez nie chciałem wymyślać. Jest gotowy kod na to na innym forum. On moze obsługiwać więcej czujników. Najważniejsze że pokazane jest jak do tego Twojego dodać obsługę temperatur ujemnych. [syntax=vbnet] ' ' Sensor DHT22 ' Insanity ' $regfile = "m328pdef.dat" $hwstack...
W miejsce instrukcji Fusing użyj Format.
Bascom help: "FUSING" :)
Będą wyglądały tak samo. http://obrazki.elektroda.pl/6316574600_1... Jest to związane z tym o czym można poczytać wciskając na klawiaturze przycisk F1 kiedy Bascom jest uruchomiony. Wpisujesz "Language fundamentals" i masz wyjaśnione co i jak ;) Jeśli dalej będzie Ci przeszkadzać to że trzy rzędy wielkości dalej masz końcówkę 37 to użyj...
Bascom nie jest taki głupi i nie pozwoli skompilować jeśli Relative Call or Jump jest zbyt daleki. Wywali błąd. Przykładem jest biblioteka hexval.lib autorstwa MWS. Nie jest to biblioteka MCS i użyto w niej RJMP i RCALL. Jest pomocna bo sprawdza czy wartości HEXstringów zawierają tylko dozwolone znaki A-F 0-9, jednak dla większych programów np. z obsługą...
to zmienna *10 i do integera nastepnie funkcja str i format fusing to jest to czego sie unika w bascomie ;)
Text = "99.9999" Text = Format(text , " 0.00") LCD Text Pytanie poza konkursem: dlaczego wszyscy notorycznie stosują Fusing(xxx, "#.&&")? Nie lepiej Fusing(xxx, "#.##")?
Niestety , to nie błąd Bascoma tylko Twój.Pewnie z chytrości ;) , zadeklarowałeś "za krótkie" zmienne STRING. Dim Napiecie As String * 3 'zadeklarowano 3 znaki Dim Prad As String * 3 'j/w ... Napiecie = Fusing(v , "#.##") 'próba "upchnięcia" 4 znaków Prad = Fusing(i , "#.##") 'j/w ... Piotrek
wymieniłem procesor i zamieniłem kolejność kodu ................ coś pomogło :) chyba zmiana kodu :) Raczej pomogła zmiana processora... Obie alternatywy kodu nie różnią się od siebie, ponadto patrz wyjaśnienia; mam jeszcze problem po przerobieniu na volty wyświetla mi np. 345 a powinno 3.45 stosuje: Pokaż w jaki sposób "przerabiasz" odczytaną wartośc...
dzieki za odzew a)wiec tak bascom to 8051 wersja 2.0.11.0 b)chcialbym zeby to dzialalo wiec jesli nie trzeba to zapomnijmy o nr. c)co do FUSING masz racje zmienie przy nastepnym kompilowaniem d) co do e) to probowalem wszystkiego zeby tylko zadzialalo pozdrwiam i jeszcze raz dziekuje za odzew
no ok, ale jeżeli zmienna Mnożnik_vład_2 ma wartość 0,01760 to po przypisaniu Mnożnik_vład = Val(mnożnik_vład_2) , zmienna Mnożnik_vład ma wartość 0,017599937 a żeby ją skrócić trzeba użyć instrukcji fusing nie może być jako single i koło się zamyka.
Witam Funkcję Fusing znam. Niestety, zgodnie z instrukcją Bascoma, nie pozwala ona na zaokrąglanie liczby do całości "po kropce musi wystąpić przynajmniej jeden znak # lub &" Więc nie spełnia ona moich oczekiwań. Pozdrawiam Karol
Ja miałem podobny problem z fusing przypadkiem to rozwiązałem a mianowicie robiłem konwersję dajmy na to g = fusing(tu wiadomo) potem wysyłałem na lcd locate 1 , 2 lcd g potem dopiero znowu konwersja nastepnej wartości i znowu wysyłałem na lcd jeśli fusing miałem w grupie, czyli konwertowałem zmienne a potem dopiero wysyłałem te wartości na lcd to zawsze...
witam mam nastepujacy problem w bascom moze banalny ale nie moge go przesskoczyc:(brak logicznego myslenia) chodzi o pomiar temperatury na ds 18b20 przed wyswietleniem temperatury formatuje liczbe za pomoca polecenia: Str_temp = Fusing(temp , "#.&") wiec z liczby np: 22.6255 zostaje mi 22.6 i moge to wyswietlic jest ok tylko liczba jest zapisana jako...
Ok jest wszystko pięknie chodzi. Ale zdążyłem to zrobić innym sposobem, rozdzielałem liczbę na wiele sposobów, najpierw z pierwotnej uzyskiwałem całkowitą potem pierwotną razy 10 - odejmowałem całkowitą poprzednią i miałem wartość dziesiętną potem wyświetlałem to jako dwie liczby w środek dając przecinek. A tu jeszcze przetłumaczona instrukcja używania...
zobacz jak wyglada sam odczyt temperatury: B1=1wread... gdzie B1 masz zdeklarowane jako Byte, czyli wartośc całkowitą, dalsze operacje to tylko odpowiednie przeliczenie tego i przesunięcie przecinka a operacja fusing to tylko czysto kosmetyczna i jednoczesnie pamiecio żerna zabawa w estetyczny wynik na lcd.... Jednocześnie nie jestem do konca przekonany...
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...
Soft nie jest napisany optymalnie, ale wiem że to ten co krąży po necie :) Oczywiście należało by go odchudzić o Single czy Fusing i te niepotrzebne podprogramy.... Po pierwsze jak masz ustawione fusebit odnośnie taktowania wewnętrznego RC ??? W programie nie zdefiniowałeś jaki dajesz crystal i idzie domyslnie na wpisie z zakładki conf Complier>chip......
Witam. Wybrałeś dość trudny temat na początek nauki 1./ przed wysłaniem danej na wyświetlacz skasuj go instrukcją CLS. 2./ pomiary z przetwornika różnią się, należałoby wykonać np. 10 pomiarów co 25ms i wyciągnąć średnią. 3./ wynik aby był czytelny należy zaokrąglić do np. dwóch miejsc po przecinku można zastosować funkcję Fusing
Zaokrąglenia single... na LCD. Powiem szczerze ze pomysłów mi już brakło. Spróbuj więc takiej funkcji: CONFIG SINGLE = SCIENTIFIC , DIGITS =1 co obcina zbędne miejsca zmiennej 'single' do jednego miejsca po decimal point. Zamiast 1 może byc dowolna wartośc w zakresie 1 do 7. albo jak wyżej "FUSING". e marcus
Użyj FUSING.
Szukaj komendy Fusing
Long = GetAdc(0) Single = Long * 0.01955 String = Fusing(Single, "##.##") LCD String; "V"
Użyj funkcji do zaokrąglania FUSING
Do testów spróbuj pominąć fusing...
Bo fusing robi stringa proszę szanownego kolegi:) To nie tędy droga...PS może nie zaokrąglanie a histereza?:)
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.
Przepraszam, podczas kopiowania zeżarło mi U1 = Fusing(V1 , "##.&")
Buzzer działa świetnie. Mam problem z ADC. odczyt mam tak: [syntax=vbnet] Rezu = Getadc(0) Wynik = Rezu / 205 V = Fusing(wynik , "#.##") Setfont font8x8tt : Lcdat 1 , 96 , V ; "V" '3 , 1 , V ; "V"[/syntax] W kodzie od Ciebie jest : [syntax=vbnet]Dim Prev_adc As word [/syntax] Kompilator odwołuje do ustawienia Prev_adc as Single. Czy to ma związek z...
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 chcesz wyświetlić bez miejsc po przecinku to rzutuj zmienną cisn na jakąś zmienna typu Integer lub Word. Zdefiniuj ją na przykład Dim cisn_int as integer i nastepnie napisz cisn_int= cisn I wyświetl bez fusing. Bascom to nie jest prymitywny język. Jest bardzo dobrym narzędziem do pisania nawet skomplikowanych programów.
locate 1,8 lcd "I=" '<- nie mam jak sprawdzić ale tu może trzeba dać średnik Lcd Fusing(amp , "#.##")
Poczytaj helpa o funkcjach Fusing i Format.
Cls Do Wart_ac = Getadc(1) Locate 1,1 Lcd Wart_ac V = Wart_ac * 0.0049 Wart_nap = Fusing(v , "#.&&") Locate 2,1 Lcd "Waga= " Lcd Wart_nap Lcd "kg " Waitms 1000 Loop End
- powyżej 10W: "Pwej= Tak będzie się wyświetlało jeżeli pierwszym bajtem zmiennej String Pwej będzie 0. Zero jest końcem łańcucha (dwie możliwości takiego błędu już podałem stos, albo nadpisanie przez inny łańcuch ;)). Nie piszesz też jaka wersja Bascoma to jest, może w którejś wersji był błąd z funkcją Fusing. Możesz podglądnąć co się dzieje z Pwej...
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ą...
Witam, Mam pytanie... Jak zamienić zmienną Integer na Single w Bascom AVR?? Pytam, ponieważ muszę użyć funkcji: X = Fusing(ds1 , "#.##") a zmienna ds1 mam typu integer. Pozdrawiam A.
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...
wiem że do wywołania służy komenda GOSUB Widzę że nawet help napisany po polsku to dla ciebie trudna lektura... Podpowiem bardziej łopatologicznie: declare sub odczyt Sub odczyt Lsb = 1wread() : Msb = 1wread(): Tempa = Msb * 256 Tempa = Tempa + Lsb Tempa = Tempa / 16 T1 = Fusing(tempa , "#.##") end sub Podprogram...
To nie w tej linijce - gdzieś wcześniej jest komenda fusing - o niej poczytaj nieco
Poszperaj w pliku pomocy do bascoma (1.11.7.4), zwróć uwagę na funkcję fusing(), format() Pozdrawiam.
To sięgnij po" fusing" dla single i "format" dla reszty.
Sprawa wygląda tak: Powiedzmy w zmiennej XT mam wartośc temperatury (już przeliczonej i obrobionej - z 12bit) daj my na to 23.34775643 ... Czyli tyle stopni celcjusza. No i własnie jest bardzo dużo tych drobnych po przecinku w tej zmiennej. A powiedzmy zależało by mi na ograniczeniu jej do 3 miejsc po przecinku, tak aby zuyskać 23.347 . Założenie maski...
Nie lubię i nie używam Basica, ale moim zdaniem jest tak: PRINT wysyła dane typu STRING, a FUSING zamienia liczby na ciągi ASCII. Dodatkowo PRINT wysyła znaki końca wiersza. Żeby wysłać bajt spróbuj CHR() mniej więcej tak: PRINT CHR(Msb); CHR(Lsb) Teraz wysłane zostaną dwa bajty - starszy i młodszy a za nimi znaki końca wiersza. Teraz...
Zmienna typu SINGLE i komenda FUSING.
Witam niestety komendą LCD nie można wyswietlać zmiennej typu Word. Jak obejść ten problem? Zadeklaruj jakąś zmienną jako string (np. tak jak poniżej jest ss1) Dim Ss1 As String * 12 Ss1 = Fusing(W, "#.&&") ' formatowanie zapisu doformatu x.xx Lcd "U=" ; Ss1 jak wartość odczytana komendą getADC ma się do wartości napięcia...
Dzięki za cenne uwagi. Teraz wiem czego szukać. Generalnie zmiana kontrastu pokaże że dolna linia nie działa. Szpilki na zasilaniu przy LCD mogą się pojawić, nie dałem dodatkowego kondensatora. Inicjalizacja wyświetlacza co pewien okres czasu na pewno pomoże. Poprawki wykonam w Piątek lub Sobotę i się odezwę za tydzień. Kontrast jest regulowany dla...
bascom fusing bascom format fusing ds18b20 bascom fusing
suszarka włos obrót aktualizacja subiekt skoda octavia licznika
samsung ue49mu6472 samsung ue49mu6472
Solarman – brak danych dziennej produkcji prądu od 2 dni, migracja serwerów, logger Wi-Fi Wtryskiwacze Bosch Delphi Siemens – zapowietrzanie układu paliwowego Diesla, nieszczelności przelewów