Albo napisac uniwersalną która jednoczesnie zajmie najmniej miejsca. dim ala as byte dim do_podzielenia as word dim do_podzielenia_pomoc as word do_podzielenie=987 'pierwszy raz trzeba zaladowac gosub dzielenie 'a teraz tylko wywolujemy wyswietlacz(3)=ala 'zaczynamy od ostatniego gosub dzielenie wyswietlacz(2)=ala 'srodkowy gosub dzielenie...
Kłania się po prostu - najprostsza matematyka ;) masz np liczbę 123 i chcesz wyodrębnić poszczególne cyfry żeby je po kolei wrzucić na wyświetlacz LED 1. dzielisz liczbę 123 przez 100 - resztę z dzielenia odrzucasz i pozostanie ci cyfra odpowiedzialna za setki czyli 1 - prawda ? ;) 2. odejmujesz od liczby 123 liczbę 100 - bo wyżej już wykonywałeś dzielenie...
Jak wykonać dzielenie bez reszty w BASCOM-AVR? Użyj operatora `\` do dzielenia całkowitoliczbowego. Przykład kodu: `Wynik = A \ B`. Dowiedz się więcej o optymalizacji i unikaniu błędów.
Witam Bardzo dziękuję za pomoc oaz ten program. Jedyne czego nie rozumiem w programie Kolegi, to zasady działania polecenia Shift. Z tego co zrozumiałem, to chodzi o przesuwanie bitów zmiennej, czyli umożliwia to de facto dzielenie lub możenie liczby. A co w przypadku, gdy chcę pomnożyć moją liczbę np przez 0.74, w tym wypadku byłby to zapis: [syntax=vbnet]Liczba...
jak chcesz do 1 miejsca po przecinku, to mnożysz liczbę zmiennoprzecinkową przez 10 (jak do dwóch miejsc, to przez 100, itd.) zamieniasz ją na człkowitą i masz dwie (no w sumie to trzy) drogi. 1. zamieniasz liczbę całkowitą na tekst, wyświetlasz wszystko oprócz ostatniej cyfry (ostatnich dwóch, trzech...) wyświetlasz kropkę i dopiero ostatnią (ostatnie)...
Dzieląc (w zasadzie to mnożąc bo mniej zajmuje pamięci niż dzielenie) przez odpowiednią wielokrotność 10 i odejmując. Na kartce sobie rozpisz co od czego odjąć i co przez co pomnożyć i będziesz wiedział co i jak. Musisz z liczby wydobyć jednosci,dziesiatki,setki,tysiace..itd.
Dzielisz liczbę przez 100, masz setki. Dzielisz przez 10, masz dziesiątki ;-) Jeśli będziesz operował na byte to powinien zaokrąglić. Dim A As Byte Dim A100 As Byte Dim A10 As Byte Dim X As Byte 'zmienna pomocnicza A = 235 A100 = A / 100 X = A100 * 100 A = A - X A10 = A / 10 X = A10 * 10 A = A - X
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...
:) Komenda mod to taka reszta z dzielenia czyli: zmienna = liczba mod 4 zmienna - miejsce gdzie zostanie wpisana reszta z dzielenia liczba - zmienna która jest dzielona przez 4 (w miejsce 4 możesz wstawić inną liczbę lub zmienna) Dodatkowo w Bascomie są dwa rodzaje dzielenia znak / i \ pierwszy (/) używamy do dzielenia z resztą (w przypadku zmiennej...
dzielenie całkowite + modulo. Przy dzieleniu przez 10 uzyskasz górną cyfrę, przy modulo 10 dolną.
eeee.... ale to przeciez bezsensu. zamiast dwubajtowa liczbe rozdzielic na dwa bajty, to ty ja chcesz rozkladac na jakies cos, ktore pozniej jeszcze trzeba przeliczac zeby poskladac spowrotem... a tajemnicza operacja jakiej poszukujesz sie chyba nazywa 'dzielenie przez 100'. ogolnie... po prostu BASCOM <: 4\/3!!
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 ?
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.
Mam problem, dla niektórych to może łatwizna ale potrzebuje zapisac liczby 6-7 cyfrowe do pamieci mikroprocesora. Zmienna jest typu long a po odczycie chciałbym żeby nadal nią była. Jest jakas funkcja która to robi? czy trzeba sie bawić w dzielenie przez 256 i sprawdzanie reszty?
niewiem dokładnie jak to jest z procesorami programowalnymi w tem sposub ( jeszcze) W zwykłym asemblu robił bym to na podstawie kilku operacji arytmetyczno/logicznych pierwszą liczbe (jedności i dziesiątek) otrzymasz poprzez uruchomienia polecenia funkcjonującego jako modulo z argumentem 100 ( reszta z dzielenia przez 100) Drugą liczbę możesz otrzymać...
Witam. Mam w zmiennej bitowej jakąś liczbę z zakresu 0-60, np. 34. Czy można tą liczbę rozbić na 2 cyfry - przypisując do pierwszej zmiennej bajtowej cyfrę 3, a do drugiej 4? Czy są jakieś instrukcje w Bascomie, czy muszę to robić za pomocą SELECT CASE: Select case liczba ... case 34 Cyfra1=3 Cyfra2=4 .... End select
Witam. Czy jest w Bascomie jakaś procedura która bezpośrednio sprawdza, czy liczba przechowywana w zmiennej single jest całkowita (naturalna)? Ewentualnie jak przy użyciu jak najmniejszej liczby kroków pośrednich sprawdzić czy wartość po kropce dziesiętnej ma wartość 0? Chcę użyć tego jako warunku i gdy single zawiera część ułamkową wyświetlić z maską...
Nie zmienia, bo masz błąd w innym miejscu. Dokładnie to miałem na myśli-że błąd jest gdzieś indziej. Zastanów się, co oznacza nazwa trybu CTC (?) – w ang. jest to ‘Clear Timer on Compare’ (pol. - wyzeruj zawartość licznika/timera, gdy jego zawartość jest równa wyznaczonej z góry i ustalonej, bądź to wyliczonej jakiejś wartości w zmiennej...
Przerwanie co 8ms (ze względu na to że stosuje bascom i liczby zmiennoprzecinkowe nie mogę zejść niżej) W przerwaniu: - sczytane wartości napięć i prądów i porównanie ich z wartościami zadanymi -jeśli prąd powyżej 1A niż zadany to wyjście napięciowe zmniejszone o połowę i wystawia zmienną kontrolną1 na 1 -Jeśli różnica 0,5A a 1A to napięcie zmniejszone...
Mam taki mały problem... jak rozłozyć do osobnych trzech zmiennych typu byte np liczbę 123?
Witam Mam dwie zmienne np: a=25 b=5 i jak to zapisać w bascomie aby: c=25,5 potem zrobić coś takiego: d=(25,5-12,3)*10 już sam nie wiem jak to zrobić :( próbowałem z instrukcją const ale nie chciała działać i cały czas miałem błąd nr. 222 Pozdrawiam
jak dodac dwa bajty np 1 i 2 w sposob taki aby wyszlo 12 a nie 3 chodzi mi o wynik w bajcie .... bo umiem to zrobic na stringach
Witam. Czy wie ktoś jak z jednej liczby np. 25 zrobić dwie zmienne na pierwsza i=2, i druga j=5.bez użycia ifów czy switchów. Dodam że ta liczba dwu cyfrowa bedzie się zmieniać.
Witam Mam problem może banalny ale.......... chodzi mi o dzielenie np. zmienna1 = zmienna2 / zmienna3 chodzi mi co się dzieje z resztą z dzielenia a może jestem poprostu niedouczony??????????????????????
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.
Pewnie to proste, ale nie mogę znaleźć gotowej komendy. Posiadam liczbę 101101100 i chce zamienić ją na: zmienna 1 = 1 zmienna 2 = 0 zmienna 3 = 1 zmienna 4 = 1 zmienna 5 = 0 zmienna 6 = 1 zmienna 7 = 1 zmienna 8 = 0 zmienna 9 = 0 zmienna 10 = 0 (nieużywane zmienne niech pozostaną zerami) Zmienna A = 9 'ilość cyfr w danej liczbie binarnej Pozdrawiam.
Dana jest zmienna 'sx' s zawsze jest takie samo - jest to znak Chr(10). Potrzebuję "wyłuskać" x. [syntax=basic4gl]zmienna = Chr(10);x[/syntax] Coś takiego nie działa, niestety. Ani przecinki, ani kropki ani średniki. Pozdrawiam
Witam serdecznie, Chciałbym się podzielić z Państwem programowym rozwiązaniem szybkiego dzielenia przez (małą) stałą liczby 8 bit. Długo szukałem jakiegokolwiek wytłumaczenia dlaczego AVRy nie zostały wyposażone w moduł sprzętowego dzielnia, i niestety wprost tej informacji nie znalazłem. Uniwersalne procedury, zgodnie z opracowaniem Atmela o nazwie...
Witam. Mam pytanie odnośnie sumatorów pełnych. Muszę za pomocą sumatorów jednobitowych zrealizować dzielenie liczb: 1/4. Jak się do tego zabrać?
wyswietlanie takiej liczby nie jest problemem. Jezlei masz narazie tylko to to zwykłe dzielenie i modulo (reszta z dzielenia) ... ala=235 ela=ala mod 10 '235 podzielone przez 10(=23) i to co zostanie (=5) ala=ala/10 led_cyfra(3)=ela ela=ala mod 10 '23 podzielone przez 10 (=2) i to co zostało (=3) ala=ala/10 led_cyfra(2)=ela...
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...
PRZEPRASZAM, POPEŁNIŁEM BŁĄD !!! WZÓR JEST "Vref/1023", a nie, jak pisałem odwrotnie Atmega8 żeby mierzyć napięcie musi mieć jakieś odniesienie - napięcie odniesienia czy też inaczej referencyjne. Są trzy możliwości - napięcie referencyjne to: - napięcie zasilania AVCC (około 5V) - napięcie odniesienia wewnętrzne 2,65V - napięcie referencyjne z zewnątrz,...
Sam komplikujesz sobie życie bez zagłębiania się dokładnie w notę i brak matematycznego myślenia oraz dokładnego sprawdzenie tego co napisali inni. To moja podstawowa uwaga, jednak możesz zrobić jak poniżej napisałem: - pobierasz częstotliwość wyjściową (np klawiatura dziesiętna) - podstawiasz do przekształconego wzoru na wyliczanie wartości ładowanej...
Witam! Dziwny problem. Dlaczego? Zobaczcie. $crystal = 12000000 $regfile = "89c2051.dat" Config Scl = P3.0 Config Sda = P3.1 Reset Tcon.0 Enable Interrupts Enable Int0 On Int0 Odczyt Const Adresw = 160 'adres do zapisu układu 2404 Const Adresr = 161 Dim P As Bit , A As Byte , X As Byte , Y As Byte , I As Byte Dim Z(10) As Byte Kbdclk...
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...
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...
Musisz zastosować sterowanie multipleksowe albo jakiś długi rejestr przesuwny (np. 4 układy 4094) żeby obsłużyć 4 cyfry wyświetlacza. To może być coś takiego: $regfile = "attiny26.dat" $crystal = 8000000 Config Portb = Output Config Portd = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim V as Word Dim V_real as Single...
Można to zoptymalizować i nie przeliczać na Volty w ogóle, ale tak bedzie prościej zobrazować. Jeśli napięciem odniesienia jest AVCC to znaczy że 5V trzeba teoretycznie podzielić przez rozdzielczośc 1024 i wyjdzie 0.00488 no i to się często zaokrągla do 0.0049 Teraz żeby odczytać napięcie wystarczy pomnożyć odczytany wynik przez te 0.0049, ale to wymusza...
Bardzo dużo pytań... Mój BootLoader (z połączeniem przy pomocy TCP/IP) został napisany właśnie w oparciu o ten bascomowy BootLoader. Nie wiem czy nie zamęczysz nas pytaniami, może ktoś też będzie się udzielał - ja Ci odpowiem na pytanie: Maxwordshift - ????? - Const Maxwordshift = Maxwordbit + 1. Ktoś podpowie dlaczego tak ? Ano dlatego, że (mój błąd...
[syntax=basic4gl] $crystal = 4000000 Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111100 Portd = &B1111111 Config Timer0 = Timer , Prescale = 64 Enable Timer0 Enable Interrupts On Timer0 Co1ms Dim Liczba As Single Dim Ktorywysw As Bit Dim Lol As Byte Dim Jednostki As Byte Dim Dziesiatki As Byte Dim Pomoc As Bit Dim Aaa As Word Dim...
Nie ma gotowej komendy w Bascomie i zaczynają się schody:) Na forum wiele razy był poruszany temat konwersji do BCD. Metody są dwie. Cykliczne odejmowanie, albo dzielenie. Poszukaj dobrze:)
Każdy porządny język może dzielić słowo word na 2 bajty. Najczęściej instrukcje typu Lo(word) i Hi(word) zwracające dolną i górną połówkę 16bitowej liczby.
(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.
A co będzie jak będę chciał wysłać większą liczbę np H1E240 czyli 123456 ,muszę je sam dzielić na 4 bity i po kolei wysyłać?
(A). Czy w Compare0a = 186 mogę wstawić liczbę w zakresie 0-255? (B). by uzyskać interwał =~100ms to 9 600 000Hz/ 1024 /37,5 (połówek pewnie nie można używać wiec zaokrąglę do 38 to będzie 247Hz (C). natomiast dla interwału 50ms to 9 600 000Hz/ 1024 /75 to będzie 125Hz czy dobrze to rozumiem? Nie dobrze , .. (at)A. -formalne/teoretycznie możesz w Compare0a...
A gdybym chciał się zając mikrokontrolerami, czego bym potrzebował?? Mikrokontroler (jaki?) programator (jaki?) kompilator na kompie (jaki?) hmm.. coś jescze???? _emes Na początek polecam zacząć od mikrokontrolerów rodziny AVR. Nie daj się nabrać na początki w '51 - owszem, może to i "sztandarowy" mikrokontroler, tak jak Pascal w językach programowania,...
Wielkie dzięki za pomoc. Używam zmiennej typu Single ponieważ w dalszej części występuje dzielenie i pojawiają się liczby zmiennoprzecinkowe a z tego co sie orientuje to Word ani Integer takiej możliwości nie mają (chyba, że mają?) :)
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...
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ć...
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...
Albo jak radzi mirekk - tym bardziej że m8 kosztuje około 8zł Albo wywal instrukcje STR i FORMAT. Formatowanie wyniku zrób jako dzielenie zwykłe (liczba całkowita) i po kropce MOD (pozostałość z dzielenia). Ewentualnie napisz wszystko jako wstawka assemblerowa, ja tak zawsze robiłem i było ok :-)
zwraca ile razy liczba x mieści się w liczbie y A nie wyjdzie to z dzielenia? W VB dzielenie bez reszty realizuje operator "\" ("zwykłe" dzielenie to "/"). http://obrazki.elektroda.pl/5353910100_1...
W bascomie też masz liczby zmiennoprzecinkowe- np. typ single. Jest też konwersja i dzielenie z resztą modulo. Tylko Attiny2313 może się w pewnym momencie okazać za mały. Ta część całkująca- to w zasadzie ograniczenie od góry PWM- oczywiście nie może być większe niż 100%. Znalazłem kiedyś taki link: http://elm-chan.org/works/smc/report_e.h... Ale go...
Na LCDku wyświetlałęm już liczby sklejone z kawałków ;) ale nie kumam jak można by rozwiązać wyliczanie tej wartości dzieląc ją na kilka liczb. Natomiast 255 i FF to jest taka sama wartość i w pamięci zajmie tyle samo (tak myślę) tylko sposób reprezentacji jest różny. W sumie zrobiłęm to na zmiennej typu Single i liczy bardzo ładnie baaardzo wielkie...
Witam goreckidiy. Twój projekt spełnia funkcę, którą chciałeś osiągnąć. Ale jest ale :) Niezwykłe zbiegi okoliczności sprawiły, że to działa (mam nadzieję) prawidłowo. Spójrz na zdjęcie. http://obrazki.elektroda.pl/9690955600_1... W programie masz coś takiego:[syntax=text]'*********WAŻNE!!!*... data1 = data_in - 1048574 'tyle suwmiarka...
Dim T1 As Single Dim T2 As Single A co to? "Przesunięcia bitowe" na liczbach zmiennoprzecinkowych? Zamień single na int i powinno śmigać. Procedury obliczeńna liczbach zmiennoprzecinkowych pożerają mnóstwo miejsca. Dzielenie liczb całkowitych w bascomie AVR robi się za pomocą \, a nie /, ot taka ciekawostka. Użycie / powoduje wykonanie tego dzielenia...
Zawsze piszę programy tak aby zapełniały całą dostępną pamięć w procesorze (bo czemu mam nie korzystać z całej pamięci skoro za nią zapłaciłem). Dziwne podejście. A jak za jakiś czas poddasz kod optymalizacji, to będziesz wymyślał nowe funkcje by znów zapełnić pamięć? Tak tylko pytam, ogólnie fajna zabawka. Program próbuje zoptymalizować na maxa, potem...
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ęć.
O zasilaniu czy sprawności kodu nie pisałem z prostych przyczyn: Piszącego w Bascom interesuje tylko to by program działał a nie ciągnął mało prądu (zasilanie bateryjne i Bascom? Nigdy nie słyszałem by ktoś to łączył) Piszącego w Bascom interesuje by progam działał niezależnie czy musi użyć procka z 16kb czy 32kb Ja wolę by program mieścił się w 1kb...
Dziękuję ślicznie za szybką pomoc. Oba sposoby są świetne. W moim przypadku lepiej sprawdzi się dzielenie liczb całkowitych z operatorem [MOD], tak jak to podał Sp3ots. Bo otrzymuję gotowe dane do wyświetlaczy 7-seg jak i do LCD. Tak mi to wyszło - sprawdzone, działa - a nuż jakiś zielony jak ja wykorzysta. [syntax=vbnet]Dim F As Word ' pięciocyfrowa...
Mam pytanko oto część programu z postu Odczyt = 1wread(2) T = Odczyt - 16 T = T * 10 T = T \ 16 T = T \ 10 Możecie mi powiedzieć dlaczego najpierw mnożycie przez 10 potem dzielicie przez 16 i dalej dzielicie przez 10 ( czyli 10*16/10=16). Nie lepiej tylko podzielić przez 16. I jeszcze jedno pytanie dotyczące liczb ujemnych Ds przedstawia liczby ujemne...
Typy się kłaniają, typy danych, jeśli więc zrobisz tak: dim droga as long dim droga1 as single droga1 = droga/12.54 to powinno zadziałać ;) przecież dzielisz nie przez liczbę całkowitą tylko zmiennoprzecinkową, a więc w wyniku też masz dostać zmiennoprzecinkową - dlatego trza wybrać typ single w Bascomie. Ale to z kolei spowoduje ci straszny rozrost...
dzielenie liczby dzielenie liczby 16bit bascom liczby
gasną światła skoda fabia drukować toshiba słabe ciśnienie oleju
miernik napięcia prądu bateria niteo
Wzmacniacz STK 402-930: Specyfikacja i Problemy Renault Espace 4 2.0 16V 2004 - brak iskry na świecach