No więc jest na to prosty sposób i zwie się fixed-point math. Zakładasz, że liczba jest zapisana w formacie np. 4:4 bity , gdzie 4 wysokie bity to liczba całkowita w przedziale 0-15 , a 4 niższe to ułamek w przedziale 0/16-15/16 Jeżeli mnożysz liczbe 8:0 przez 4:4 to masz wynik 12:4 i wszystko cacy - masz swój wynik i wartość ułamkową. Jeżeli chciałbyś...
zadeklaruj w funkcji zmienne jako long...
Lecz w który miejscu mnożę dwie liczby 16 bitowe podczas zapisywania do tablicy? mnożę 8 bitowe b i 256 ( 8bitów ) Ty to rozumiesz. Ja to rozumiem. Kompilator tego NIE rozumie. Poza tym dziwny ten zapis: [syntax=c]b=0b&00011111[/syntax] Ani średnika na końcu ani sensu w środku.
Jak na tym układzie zrobić taki mnożnik? Jakich funkcji użyć? Co z czym i dlaczego tak Najpierw próbowałam to zrobić samodzielnie dając na wejścia sterujące 1011 i M=1 które odpowiadają funkcji AND , ale wtedy wymnażają się poszczególne bity a nie całość, kombinowałam jeszcze z przenoszeniem, ale również nie skutecznie, skończyły mi się pomysły jak...
Możesz wykorzystać w tym celu układ scalony 74181, który jest 4-bitowym ALU w technologii TTL. Na jedno wejście podajesz na stałe liczbę 9 a na drugie liczbę 4-bitową. Jako funkcję wybierasz mnożenie arytmetyczne. Pozdrawiam wszystkich jjanek
Mnożenie przez 7 to inaczej A + 2A + 4A czyli na pierwszy sumator jedno wejście podajesz liczbę A a na drugie liczbę A przesuniętą o jeden bit (mnożenie przez 2) i na wyjsciu masz 3A. Nastepnie wynik podajesz na kolejny sumator (pierwsze wejście) i liczbę A przesuniętą o dwa bity (mnożenie przez 4) na drugie wejście i na wyjściu masz 7A. A mnożenie...
Witam. a i x są liczbami 16 bitowymi. wykonałem mnożenie liczby 16bitowej przez 16 bitową i teraz mam problem bo nie mogę zrobić dodawania(+b). wynik mnożenia liczba 32bitowa, chciałem dodać jakąś liczbę 8bitowa. moje pytanie jak zrobić w asemblerze dodawanie liczby 8b do 32b?
Witam, mam do rozwiązania zadanie, w którym trzeba zrobić układ iteracyjny mnożący liczbę binarną 16-bitową razy 3. Nie mam pojęcia jak narysować graf do tego układu. Czy mógłby ktoś narysować ten graf? Pozdrawiam
Witam wszystkich. Mam małą prośbę mam do zrobienia układzik mnożący liczby 8 bitowe bez znaku (mnożenie przez dodawanie i przesuniecie). nie wiem zbytnio od czego mam zacząć. prosiłbym o pomoc. z góry dzięki dla wszystkich którzy pomogą.
Otrzymane 2 bajty łączę w liczbę 16 bitową. Mnożę ją przez 10 i dzielę przez 16 (tj. przesuwam o 4 bity w prawo). Mam w wyniku temperaturę 10x większą niż w rzeczywistości. Ewentualne obliczenia i ustawienia wewnątrz programu robię na liczbach 10x większych. Dla procesora to żadna różnica. Wyświetlaniem zaś zajmuje się za każdym razem ten sam podprogram,...
Jest źle. Największe liczby 3-bitowe to 111b = 7d 7×7=49 49d = 110001b Jest to liczba 6-bitowa, a na rysunku jest 7 bitów wyjściowych. Nie mogę wykluczyć, że siódmy bit jest zawsze 0, ale gdyby tak było, należałoby wyeliminować to wyjście. Laborkę miałem 40 lat temu, więc więcej nie napiszę. Na dziś zamiast bramek dałbym procesor PIC 1 szt. i program...
Proszę o podpowiedź czy układy CPLD/FPGA będą w stanie przetworzyć operacje matematyczne w kilku cyklach zegarowych (może nawet w jednym cyklu) ? Temat dotyczy sprzętowego (bardzo szybkiego) mnożenia liczb 64bit x 64bit a nawet 128bit x 128bit, Większość nowoczesnych układów FPGA ma wbudowane sprzętowe układy mnożące, tyle że one operują na liczbach...
Czemu ten pierwszy kod działa źle? Jeżeli obie 32-bitowe liczby są typu int, to wynikiem mnożenia będzie też int i prawdopodobnie z przepełnieniem w tym wypadku. Liczby int przed mnożeniem nie są promowane do long.
Bo tam są 16-bitowe dane i 16-bitowe współczynniki, a łącznie jest ich 60. A więc z każdego mnożenia danych i współczynnika wyjdzie Ci liczba 32 bitowa i takich liczb trzeba zsumować 60. A więc wynik zwiększa się aż do prawie 38 bitów (dokładnie 38 bitów miał by dla zsumowania 64 liczb).
Poza tym pobieżnie przejżałem DS ATTiny i nie widzę instrukcji analogicznej do DIV w 8051?? Jak w nim dzielić liczby?? A czy znalazłeś MUL? ;) Do takich obliczeń niestety trzeba pisać własne funkcje. Można mnożyć i dzielić poprzez wielokrotne dodawanie lub odejmowanie danej liczby, ale to jest oczywiście dosyć mało optymalna metoda. Oczywiście mnożenie...
nikt nie liczy alpha blendingu tylko mnożył 3 liczby 8 bitowe.
Czy ktos wie jak zrealizowac podstawowe funkcje arytmetyczne ( dodawanie ,odejmowanie, dzielenie mnożenie) na liczbach 16- bitowych w procsorze 99c51.
Poczukaj w notach aplikacyjnych microchipa, są tam opisane procedury mnożenia, dzielenia a nawet chyba jakieś funkcje trygonometryczne.
Mnożysz lewą cyfrę przedstawiającą wartości dziesiątek x10 i dostajesz 10100 binarnie mnożenie warto zrealizować jako odpowienie przesunięcie bitowe, gdy mnożysz x10 to tak jakbyś mnożył x8 i mnożył x2 27x10 = 27x(8+2)= 27x8 + 27x2 = 27x2^3 + 27x2^1 czyli wynik mnożenia dowolnej liczby x10 jest rowny sumie jej przesuniecia w lewa o 3 bity i przesuniecia...
Mam spore doswiadczenie w projektowaniu układów cyfrowych, ale o czymś takim nie słyszałem. I przyznam, że nie rozumiem problemu. Bo co to właściwie znaczy "jednobitowy" i ma mnożyć ten bit przez 6 ?! To jakaś bzdura. Natomiast przy mnożeniu liczby (iluś-tam bitowej) przez 6 można skorzystać z zależności, że: y = 6 * a = 4 * a + 2 * a A mnożenie przez...
ADMUX=0b10000000; //kanał 7 ADC Zamiast 7 ustawiasz zerowy kanał ADC, a ten pin wykorzystujesz jako wyjście na wyświetlacz przecież... nic dziwnego, że bzdury wychodzą. O co chodzi z tym mnożeniem przez 100 (i dlaczego w przerwaniu, do tego jeszcze na zmiennej globalnej)? Jeśli już to powinno być przez 2 (wtedy wystarczą liczby 8-bitowe) albo (na 16-bitowych)...
Zaczynasz wprowadzanie znaków od najstarszych pozycji, nie? Jeśli zaczniesz od 0, to będziesz miał (na starcie) liczba = 0 liczba = 0*2 + '0' - '0' // kody ascii objaśnił Łuk_F czyli liczba się nie zmieni, ciągle będzie wartość 0. Gdy trafisz na pierwszą jedynkę dostaniesz liczba = 0*2 + '1' - '0' czyli w liczbie pojawi się 1. Kolejna jedynka liczba...
Mam 3 algorytmy: bootha karatsuby i jeden inny wszystkie mnożą mi liczby 32 bitowe w symulatorze Isim (Web Pack ise). Podczas symulacji moge ustawić dowolny czas symulacji ale nie wiem jak długo sam taki algorym liczy. Wiek ktoś w jaki sposób można by było porównać czas mnożenia tych algorytmów?.
Potrzebuję skonstruować układ mnożący x3. Mam do dyspozycji bramki, 5 przerzutników JK i dwa rejestry przesuwne jednokierunkowe. Wiem, że układ musi najpierw przesunąć liczbę w lewo (czyli pomnożyć razy dwa = dopisać zero z tyłu), a następnie dodać do tego pierwotną liczbę. Jak to zrealizować ? Obydwa rejestry są 8-bitowe, ale można przyjąć założenie,...
Jak liczba 62-bitowa jest stała to mnożenie jest jeszcze prostsze bo wystarczy napisać stały algorytm bez żadnych skipbittestów - to jedna sprawa. Po drugie lepiej takie mnożenie robić w bazie danych - transmisja będzie 2x szybsza a i samo mnożenie na PC-ie szybsze.
Nie mam za bardzo w tym momencie napisania kawałka kodu (brak programu na tym kompie). Tak jak pisałem w poprzednim poście użyj instrukcji mnożenia MUL_E. Jak poczytasz "helpy" od tych instrukcji, to tam piszą, że: Jeżeli zmiennymi wejściowymi dla MUL_E są liczby 32 bitowe, to wynik jest również 32 bitowy, a w przypadku MUL_M 64 bitowy i wtedy wchodzisz...
Używam do pisania w języku VHDL programu Xilinx ISE 9.1i ale bardzo mi on nie leży. Na zajęciach korzystamy z WebPacka, który jakoś bardziej według mnie jest przysfajanly jednak problem jest z legalnością tego więc jadę na wyżej wymienionej darmówce. Może mi ktoś powiedzieć czy idzie to jakoś zoptymalizować i wyłączyć zbędne funkcje żeby nie wciągało...
To działa tak samo dla dowolnej ilości bajtów. Liczbę wejściową wysuwasz z najstarszego bitu najstarszego bajtu Czyli przesuwasz liczbę 32 bitową (mnożysz przez 2). Wysunięty bit (w znaczniku przeniesienia) wprowadzasz do najniższego bitu najniższej tetrady liczby BCD. Przed każdym kolejnym przesunięciem sprawdzasz każdą tetradę czy nie jest >=5...
Poszukaj bibliotek mnożacych 16bitowe liczby. Dodano po 26 TEN PROCEK JEST 8 BITOWY!!!! Dodano po 50 A w ogóle chcesz mnożyć bitowo? Czy matematycznie?
Witam, proszę o pomoc, mam do wkonania nastepujące zadanie: napisać program wykorzystując assembler procesora z80, który będzie mnożył 2 liczby 8-bitowe, wykorzystując stos do przechowywania. Mnożną można umieścić w rejestrze A, natomiast mnożnik w rejestrze B, (wynik w HL). Byłby ktoś w stanie napisać taki programik?? pozdro... rrally(at)interia.pl...
No więc tak: (zakładam liczby w kodzie NKB (tj. bez znaku)) - ponieważ mnożysz liczby 4 bitowe więc wynik może być 8 bitowy: 15*15=225 (11100001) z tego wniosek, że akumulator wyjściowy powinien być 8 bitowy (2 sumatory 4 bitowe, 2 rejestry 4 bitowe pamiętające wynik) Wyjście sumatorów podajesz na wejście powyższych rejestrów, Na jedne z wejść np a0,a1,a2,a3,a4,a5,a6,a7...
Nie widzę jak radzisz sobie z przepełnieniami podczas dodawania i mnożenia, a z opisu problemu wydaje mi się, że u Ciebie właśnie to następuje. Po pewnej ilości działań masz przepełnienie i dalsze wartości są błędne. Pamiętaj, że gdy mnożysz dwie liczby 8-mio bitowe wynikiem jest liczba 16-to bitowa i musisz z niej wybrać któreś 8 bitów do dalszego...
Witam, Co do instrukcji dodającej 0 w 7 linijce kodu, należałoby sprawdzić rodzaj zmiennej "Temp_1". Jeżeli jest to zmienna 16-bitowa, to operacja +I ma prawdopodobnie za zadanie zmianę liczby 32-bitowej (powstałej po operacji mnożenia) na liczbę 16-bitową (dlatego dodawane jest 0). Fragment opisu funkcji +I z help'a w Step7: The instruction produces...
Witam, Mam za zadanie napisać w assemblerze (pod RAID-em) program działający na zasadzie kalkulatora, ale mający tylko jedną funkcję - mnożenie liczby 8 bitowej przez 16 bitową. Niestety kompletnie nie wiem od czego zacząć i jak tak naprawde ten program powinien być skonstruowany. Dodam, że czasu pozostało mi niewiele - do poniedziałku (tego!). Pojęcie...
1. Round() dostaje argument całkowity, zamienia go na float, a następnie z powrotem na int. Operacja ta nie robi nic, za to zajmuje zapewne grube setki cykli procesora. 2. Te pętle while() działają tak: tak długo, jak jest spełniony warunek, zapalaj (już zapaloną diodę) i czekaj - ciut bez sensu. Dlaczego nie: if (NORTH() < SOUTH()) zapal; else zgaś;...
btw nie jestem pewien ale za pomocą przesunięcia bitowego w lewo << na AVR się chyba nie da otrzymać liczby 32 bitowej. Trzeba albo przesuwać w prawo albo inaczej cudować :)
I wszystko się zgadza. Wynik mnożenia (256*adc1) jest zapisywany jako liczba 16 bitowa, a więc już masz obcięcie i dalej muszą wyjść bzdury. Samo to mnożenie jest zresztą bez sensu, bo mnożysz tylko po to, żeby zaraz potem dzielić, więc to samo ale bez przekroczenia zakresu wartości mógłbyś policzyć jako 62500u / adc1.
(...)Dlaczego w takim razie stała z większą liczbą 100000 jest obliczana prawidłowo a 10000 tylko z wymuszeniem longa?(...) 100000 jest od razu traktowane jako „long“ (32 bity), więc i mnożenie 8*100000 wykonywane jest jako 32-bitowe, z prawidłowym wynikiem. Natomiast w działaniu (8*10000) preprocesor mnoży dwie stałe 16-bitowe, traktując...
dobra a wiec od nowa pisze co i jak, dostałem od nauczyciela trzy pytania dotyczace asemblera, ja osobiscie jeszcze nic w nim nie robilem nie mialem stycznosci i troche go nie kumam.... 1. Inkrementacja jest to..., natomiast dekrementacja jest to ... w języku programowania ASEMBLER 2. Napisz prosty program w ASEMBLERZE dla układu 8051 realizujący funkcje...
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...
Mnoży się starszy bajt * 256 i dodaje się młodszy !
Owszem będzie jeśli zależy Ci na szybkości wykonywania programu. Operacje na 32 bitowych liczbach w AVR-ku są bardzo wolne ponieważ procek musi się nieźle napocić z przeniesieniami itd. Jak wolne? Ile może trwać np. mnożenie dwóch kilkucyfrowych liczb, albo obliczanie pierwiastka kwadratowego?
Witam, mam problem. Próbuję zaprojektować układ synchroniczny, który mnoży dowolną liczbę binarną przez liczbę 3. Wejście ma być podawane z rejestru nr 1, a wynik zapisywany do rejestru nr 2 (rejestry 8-bitowe jednokierunkowe). Wiem jedynie, że liczbę muszę rozbić na x << 1 + x, ale nie do końca wiem, jak to wrzucić na schemat układu na kartce....
Mylisz się nic nie trzeba będzie robić żadnego dzielenia ani mnożenia. Wartość liczby będzie 12 bitowa czyli maksymalnie 4095 (liczba int) więc aby wyrazić ją w voltach wystarczy między liczbą reprezentującą tysiące a setki wstawić po prostu znak przecinka i będziesz miał "ludzką" postać swojego napięcia.
tylko nie wiem w którym momencie to przegapiłem w moim kodzie i o to właśnie proszę, o wskazanie gdzie gubię bity / przekraczam zakres prawie w każdym mnożeniu, zwłaszcza jeżeli tablica Cal edit: hmm... widzę że próbowałeś tak robić? (zmienna tmp?) no i biorąc pierwszy z brzegu przykład, tmp=Cal[2]*dUT, mnożenie dwóch liczb 16bit, wynik przekracza...
Witam, to mój pierwszy post na forum, więc przepraszam, jeśli umieściłam go w złym dziale. Mam problem ze zrealizowaniem układu na laboratorium z układów logicznych. Muszę zrealizować układ mnożący zadaną liczbę 4-bitową przez 1 lub przez 4 w zależności od wyboru, z tym że przez 4 mnożone mogą być tylko liczby z zakresu 0-3. Do dyspozycji mam układ...
Tak myślałem, że należy cały port zapisać do jednej zmiennej, tylko nie byłem pewny czy po zapisaniu do zmiennej liczby binarnej mogę korzystać z niej jako dziesiętna. Jeszcze pytanko z tym mnożeniem, jeżeli po pomnożeniu wartość liczby się nie zmieni, to po co ją w ogóle mnożymy? :D Chyba nie do końca dokładnie przeczytałeś posty wyżej. McMonster...
Przesuwanie liczby oznacza mnożenie lub dzielenia (w zależności od kierunku przesuwania) przez 2. Poniewaź liczba 10 nie ma rozwinięcia binarnego, przesuwanie nie może być zastosowane. W każdym przypadku (dzielenia przez liczbę 16-bitową czy kilka dzieleń przez liczbę 8-bitową) wystąpi dzielenie. Procesor AVR nie ma istrukcji dzielenia więc należy wykonać...
[url=http://www.elektroda.pl/rtvforum/to... umieściłem swoje procedury bin na bcd, bcd na bin, mnożenie, dzielenie z możliwością deklarowania ilości bajtów do obliczeń.
Ilu bitowa ma być ta liczba? Ogólnie takie coś można wykonać w następujący sposób: mnożysz liczbę przez dwa (czyli przesuwasz w lewo na rejestrze) i na na wyjściu takiego "przesuwnika" dodajesz liczbę wejściową.
Witajcie, Dużo szukałem, ale nie mogłem znaleźć Działającego programu do kalkulatora, który dodaje, odejmuje, mnoży i dzieli ( Może też pierwiastkować ) maksymalnie 3 liczby 16-sto bitowe i wynik pokazuje na wyświetlaczy LCD. Jak by ktoś posiadał to był bym wdzięczny za wstawienie.
ATMega ma ALU zdolne do mnożenia dwóch liczb 8-bitowych w 1 cyklu zegara... http://ww1.microchip.com/downloads/en/Ap... W sumie to istniał układ mnożący dwie liczby 4-bitowe - 74284. Tu masz ładne omówienie teorii, z przykładami: https://www.electronicshub.org/binary-mu...
Napisz jaką potrzebujesz dokładność, jeśli niewielką to najlepiej użyć gotowej tablicy. Jeśli dużej to trzeba rozłożyć funkcję pierwiatkowania np. na szereg Taylora i wtedy obliczać kolejne przybliżenia, ale to wymaga napisania procedur operacji zmiennoprzecinkowych (głownie mnożenie i dodawanie zmiennoprzecinkowe).
Chodzi o pomnożenie próbki przez liczbę x z zakresu 0-255 i potem przesunięcie o 8 bitów w prawo, żeby uzyskać próbkę o współczynniku x/255, tak? Dokładnie. Mnożenie ma niewielki narzut (procesor ma instrukcję MUL), a dzielenie przez 256 to po prostu obcięcie najmniej znaczącego bajtu. Stałą? Przecież volume_coefficient to zmienna. Owszem, ale nie...
Witam, chcę wykonać układ mnożący 2 liczby 4bitowe. Sugestia, to zrobić ten układ na licznikach. Liczby będę podawał zwykłymi przełącznikami równolegle, i wynik wyświetlał na diodach. Kto ma pomysł, odnośnie realizacji ? A nie lepiej użyć 74181?
Czy nie ma szybszych alglorytmów? Oczywiście, że są. Wykorzystaj algorytm mnożenia i dzielenia pisemnego. Dzięki temu znacznie ograniczysz ilość dodawań czy odejmowań. Na przykład 1234 * 5678 zrobione metodą powyższą to 1234 dodawania (zakładam, że program jest chytry i sprawdza na początek która liczba jest mniejsza i ją bierze jako licznik pętli)....
Sensu to nie ma żadnego. Dla każdego 8-bitowca jest to zabójstwo, bo każda operacja na danych czy to BCD, czy binarnych 64-bitowych zajmie wieki (zwłaszcza mnożenie i dzielenie). Są algorytmy resztowe umożliwiające unikanie dzielenia przy konwersji bin->BCD i całkiem zgrabnie to wychodzi (nawet na głupiutkim 51), ale wciąż nie widzę w tym sensu, jeśli...
Wystarczy rzutować jedną liczbę, druga będzie promowana do odpowiedniego typu.
[syntax=c] uint32_t bin2BCD(uint32_t val) { uint32_t retval; uint8_t count, i, *ptr = &retval; retval = 0; for (count = 0; count < BCD_DIGITS * 4; count++) { for(i = 0; i < 4; i++) { ptr[i] += 0x33; if((ptr[i] & 0x08) == 0) ptr[i] -= 0x03; if((ptr[i] & 0x80) == 0) ptr[i] -= 0x30; } retval <<= 1; if(val & (0x08L << ((BCD_DIGITS...
Witam serdecznie, podczas pisania programu na PLC Fatek'a napotkałem pewien problem. Chciałbym aby na podstawie czasu pracy palnika olejowego oszacować bieżące zużycie paliwa wiedząc, iż dysza która jest aktualnie zamontowana spala 0.4 galona na godzinę (1.51 litra). No i tutaj pojawia się problem w jaki sposób to obliczyć? Programując plc nie mogę...
Dobre podręczniki do cyfrówki pokazują schematy z podsawowych bramek logicznych i uzyskuje się sumator np 8 bitowy. W każdym razie rzeczywiście to działa w jednym takcie zegara, a nie w ośmiu czy szesnastu. To trudno pisać na forum, nikt ci nie będzie edytował schematów itd... poszukaj wiedzy książkowej Mnożenie jest bardziej skomplikowaną opowieścią,...
Co do możliwości zrobienia na bramkach, to takie coś jest elementem układu mnożenia liczb metodą [url=https://en.wikipedia.org/wiki/Walla... tree. Prościej mógłby być zrobiony układ działający sekwencyjnie: generator sygnału zegarowego podaje impulsy na CD4017 z wyjściami połączonymi poprzez oporniki z przełącznikami łączącymi do masy, zasilany...
Witam Na czwartek muszę przygotować listingi programów napisanych w asemblerze które wykonają poniższe działania: 1. Dane są liczby: A=0F1h, B=00011111b. Obliczyć binarnie A+B, A-B, B-A. Podać wynik w postaci binarnej i szesnastkowej. 2. Napisać program mnożenia x4 liczby umieszczonej w rejestrze R7 bez użycia instrukcji mul ab. 3. Napisać program...
Przy większych wartościach nie ma problemu, to L, to nie do tego jest. Literki służą do wymuszenia typu przy pomocy którego zostanie zapisana wartość, a nie "mówienia" kompilatorowi do jakiego typu ma właśnie odczytaną wartość przypisać (przypisuje automatycznie do int i "pojemniejszych"). Przydaje się, jeżeli operacja ma być wykonana na typie o innej...
Witam, Uklad kombinacyjny może Ci sie nawet nie zmieścić w takim FPGA. Najrozsądniej by było stworzyć schemat obliczania takiego mnożenia, a następnie optymalnie podzielić operacje mnożenia pomiędzy dostępne układy mnożące - można to nazwać szeregowaniem. Zastanów się - jakoś dla mnożenia 64x64 bity narzędzia syntezują układ wykorzystujący tylko multiplikatory...
Na AVR'ach typ int ma 2 bajty, a wszystkie literały liczbowe domyślnie są typu int. 34816 pewnie normalnie powinno by powodować warning, gdyż komu chciało by się pisać 34816U żeby zaznaczyć, że literał ten ma być int'em bez znaku? Ten warning mogli jawnie wyrzucić, jednak w przypadku operacji 17*2048, jeśli obie liczby traktować jako int ze znakiem,...
272 to taka nieciekawa wartość do mnożenia. Ja zrobiłem tak: Przerwania z TIM0 i TIM1 TIM0 zlicza impulsy z wejścia zliczającego, i gdy się przepełni jest króciutkie przerwanie inkrementujące parę 3 rejestrów. TIM1 zgłasza przerwanie równiutko co pół sekundy. Na samym początku obsługi przerwania jest odczytywana wartość impulsów z TIM0, i jest on resetowany....
Nie wiem w takim razie w czym problem, to prosta matematyka. A procesor ma funkcje mnożenia i dzielenia 8bit wystarczy zrealizować rozszerzenie na 16bit. Tak ma 8bit, ale nie wiem jak optymalnie napisać np mnożenie dwóch liczb 16 bitowych, ma ktoś jakiś kod ?
akurat ten wariant jest dla liczb <0 do wartości -32767. Chcę z tego zakresu uzyskać odpowiadające wartości dodatnie z zakresu 0 ... 65535. Mnożę zatem ten pierwszy zakres przez -1, potem mnożę przez dwa przesuwając bitowo w lewo o jedną pozycję i odejmuję 1, żeby uzyskać przy minimalnej wartości z pierwszego zakresu maksymalną liczbę z drugiego....
Z tym mnożeniem przez 0 i 1 dla 8 bitów to wyjdzie porażka bo albo świeci albo nie świeci. Nie chodzi o mnożenie razy 0 lub 1, bo wynik przecież jest oczywisty. Tylko o mnożenie razy liczbę z przedziału 0 do 1, żeby uniknąć typu float to robi się to wykorzystując arytmetykę stałopozycyjną lub tymczasowe promowanie do typu szerszego - np. liczbę z zakresu...
"przesuwa" zmienną i o jeden bit w lewo (tj. mnoży przez 2). Równoważne czemuś takiemu: << to operator przesunięcia bitowego w lewo.
Sekundę, ale gdzie jest ta potęga? Ja tu widzę ciąg 2 * 2 = 4; 4%10 = 4 4 * 2 = 8; 8%10 = 8 8 * 2 = 16; 16%10 = 6 6 * 2 = 12... A na marginesie, potęgowanie liczby 2 to nic innego jak przesunięcie bitowe o 1 w lewo, które jest 20 razy szybsze od mnożenia.
Zdefiniuj zmienną Temp jako Word. Jak ci ma wyświetlić 600 jesli zmiena Byte może przyjąc max wartość 255. Właśnie powyżej tej wartości będą ci sie wyświetlać dziwne rzeczy. No to może wytłumaczę jak to zrobić na zmiennej typu Byte według wyżej wspomnianej ideii. $crystal = 4000000 $regfile "attiny2313.dat" Dim Pomiar As Single Dim Temp As...
Próbowałeś podkręcić procesor np. do 20MHz? Zanim o tym pomyślę wolałbym raczej przyspieszyć działanie programu. Spróbuję np. pozamieniać niektóre mnożenia na przesunięcia bitowe lub zmniejszyć liczbę operacji na liczbach zmiennoprzecinkowych. Algorytmy rysowania linii i stawiania punktu w buforze chcę oprzeć na asemblerze (zamiast bascomowych komend...
przy każdym programie siedzę z kilkoma kartkami gęsto zapisanego papieru-fakt jest niepodważalny, że to najlepsza metoda, dopiero potem komputer. W asemblerze mnożyć x2 czy dzielić /2 i ich wielokrotności nawet jakby to były liczby 16 czy 32 bitowe - to da się zrobić ale jak mam liczbę 2,8 i to jeszcze na 6-tym miejscu po przecinku to się zaczynają...
:) Dzieki doceniam ale to już wogole mnie przeroslo :) zeby cos z tego wyciagnac trzeba cosik rozumiec :) a ja ni w ząb ktorej sekcji mam się przyjzec i jak moge ja przerobic zeby mnozyla liczby 7 bitowe przy zachowaniu algorytmu mnozenia metoda Bootha. Chetnie pomoge w kazdej innej dziedzinie... ale ASM to nie moja bajka :/
Witam. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
Wiesz, trochę nie bardzo mamy głowy do treningu na cudzym kodzie. Ja nie potrzebuję ćwiczeń, mam je na co dzień. Dlatego pomagamy jak możemy, pokazując jak trzeba zrobić a Ty musisz zrozumieć jak działa twój kod. To z resztą dla twojego dobra. Nawet nie wiesz ile godzin spędzałem np na szukaniu spacji po znaku łączenia linii "\" w macro w C. Taka szkolna...
Witam. Czy potrafi ktoś pomóc mi z zadaniem z assemblera? Mam do napisania program, który mnoży dwie liczby 5 bajtowe (40 bitów) szesnastkowe oraz podaje wynik również w tym systemie (tylko wynik będzie wtedy 80 bitowy). Problem polega na tym, że do tego mnożenie trzeba wykorzystać algorytm, ponieważ instrukcja mul nie działa dla tak dużych liczb. Mnożenie...
Wynik Twojego działania to: 64449, czyli mieści się w zakresie i nie powinno być problemu. I właśnie dlatego 63 jest ostatnią wartością którą widzisz. Powinieneś widzieć jeszcze 64, ale pewnie nie ma wystarczającej precyzji potencjometru i od razu przeskakujesz na (teoretyczne) 65. Poza tym muszę mieć przetwarzanie z 10-bitową precyzją. Ciekawe po...
AND mnoży liczby z wejścia. czterowejściowa pokaże 1 jeżeli 1 jest na wszystkich wejściach. Masz dwuwejściowe i trzywejściową. Na szybko z dwóch dwuwejściowych pomnożysz 2 pary sygnałów. Oba wyniki pomnożysz w kolejnej i gdziekolwiek pojawi się zero, to bramka to zasygnalizuje. Prościej do dwuwejściowej NAND dodać inwerter i podłączyć do trzywejściowej...
Nie mam na myśli zmiany wartości (i mam wrażenie, że nic takiego nie napisałem), tylko zmianę tego, jak zmienna działa (jest interpretowana) jako indeks pętli. Nie jest dobrze, że działania w których używa się wartości zmiennej, wpływają na inne operacje, które jej dotyczą. W bardziej złożonym programie takie oddziaływanie "wstecz" będzie raczej nie...
Jednym z ważniejszych parametrów przetwornika D/A - i od tego zwykle zależy jego cena - jest błąd przetwarzania; zwykle jest mierzony w działkach skali, np. 1/2 działki skali; rozróżnia się dwa rodzaje błędów: największe odchylenie, i największą różnicę odchyleń między sąsiednimi działkami (błąd różnicowy); jeśli masz błąd różnicowy 1/4 działki, i połączysz...
Zauważ, że przy podnoszeniu do potęgi ilość bitów rośnie w przybliżeniu z wykładnikiem potęgi: 2 -> 15*15=225 -> 8 bitów 3 -> 15^3=3375 -> 12 bitów czyli układ się rozbudowuje. Budowa takiego układu na pojedyńczych bramkach jest raczej nieopłacalne raczej trzeba stosować układy większej skali integeracji i przyjąc jakąś metodę mnożenia liczby przez...
Dziś siedze całą noc nad tym jak wymyśleć algorym prostego dzielenia liczby 16bit przez liczbe 8bit ze wzracaniem reszty na procesor 8bit i szczeże mówiąc nic nie wymyśliłem.... Jedynym sensownym rozwiązaniem jest realizacja klasycznego sposobu dzielenia:( Moje pytanie brzmi... czy da sie jakoś inaczej zrealizować funkcje dzielenia?? np tak jak w mnożeniu...
Pfemek- czy chodziło Ci o linie: Impulsy_drogi_1 = 256 * Przep : Przep = 0 ??? To znaczy z czym mi chodziło o co? :) Ta linia którą przytoczyłeś dotyczy zliczania impulsów z czujnika prędkości (drogi) wtedy gdy mikrokontroler zajęty jest czym innym (np. czeka 3s na koniec wyświetlenia jakiejś informacji) po to aby nie gubić impulsów. Dlatego też gdy...
utoa() pracuje z liczbami 16-bitowymi. 'odczytane' jest liczbą 32-bitową, więc trzeba użyć ultoa(). Próbowałem przez ultoa, ale wtedy jest jeszcze gorzej bo końcowa wartość wynosi 357887394. I właśnie męczę się z tym prawie od godziny na różne sposoby i nic... Używam 32-bitowej zmiennej bo muszę mnożyć przez 10, więc wyszedłbym poza zakres. Tymczasem...
Dostaje dane o wilgotności z tego czujnika (12 bitów) i mam je zapisane w dwóch rejestrach. Poszukuje wszelkich materiałów dotyczących tego jak przeliczyć tą 12-bitową liczbę na wartość w % RH. Podobnie z temperaturą. Wogóle poszukuję przystępnych materiałów zawierających opisy procedur do mnożenia, dzielenia itp. liczb całkowitych i ułamkowych w assemblerze.
na początek wystarczy tak if ( (a = j+k*10+l*100)!=0){ if ((i+e*10+f*100)>=a)... } } dalej można kombinować z upraszczaniem kolejnych operacji: j+k*10+l*100 to jak sądzę liczba dziesiętna składana z cyfr. Więc warunek ( j+k*10+l*100)!=0) mozna zastąpić ( j || k || l) pomija to...
Nie jesteś na dobrej drodze. Zrób sobie przykład na piechotę (na papierze) i jak się wynik zgodzi to ubierz to w rozkazy. Na razie nie widze algorytmu który chcesz zastosowac do mnożenia. I jeśli będziesz umieszczał program do analizy na forum, to bardzo dokładnie opisz każdy rozkaz do czego służy (co robi)
Tylko że jak pomnożę całość przez 10 to już nie zrobię tego na 8 bitach. Czy jak dziele 2 liczby inie dzielą się całkowicie to ustawiany jest jakiś bit lub kilka ? Poza tym nie mam zielonego pojęcia jak wyświetlić pojedynczą cyfrę na wyświetlaczy z jakiejś 3 cyfrowej liczby zapisanej w końcu w postaci hex. Zakres liczb przy podanym przeze mnie wzorze...
Własciwie to racja :) zadania ponizej: Zad. 1. Zaprojektować i zasymulować działanie układu sumująco – mnożącego. Na wejście podawane są dwie liczby 3 bitowe oraz sygnał mówiący o operacji arytmetycznej (0 – sumowania; 1 – mnożenia). Na wyjściu pojawia się wynik operacji. Zad. 2. Zaprojktować konwerter kodu: a)Binarnego na „2”...
co do wyświetlania, to mam panel TD 400 i to na nim chcę wyświetlać wynik temperatury, nie będę wyświetlacza zwykłego podłączać do sterownika. poprawiłem "działanie": http://obrazki.elektroda.pl/2934606300_1... ale chyba ni będę mógł użyć bloczka DIV_I ponieważ na liście rozwijanej w instrukcjach Integer Math jest wyświetlonym przy nim...
Jeśli na wejściu ma być 1Hz, to do przełączania AM/PM trzeba to podzielić przez 86400, i ostatni podział musi być przez 2, żeby czasy '0' i '1' były równe. 4059 może zliczać do 21327, więc licznik binarny co najmniej 3-bitowy. 4059 może sterować TTL, ale jeśli wygodnie jest zastosować np. zasilanie 12V, to wypada użyć licznika binarnego z serii CMOS...
http://obrazki.elektroda.pl/4339422600_1... To moja trzecia konstrukcja na FPGA ;) pierwszy był trywialny zegarek na kilku licznikach, a potem prosty kalkulatorek dodający dwie liczby. Tak więc proszę o konstruktywną krytykę i porady, co by tu można jeszcze ulepszyć. FPGA ciekawi mnie już od jakiegoś czasu, ze względu na to, że można...
Przetwonnik zlicza napięcia tylko do 2047, pokazując ujemne napięcie nie ma znaku minus i wartość, tylko np 65320. Czyli przetwornik zwraca wyniki w kodzie U2. Tam nie ma znaku minus. Jest za to przesunięcie poziomu. Najprościej mówiąc, zastosowanie takiej funkcji do konwersji: Napiecie = Zmierz1 * 256 Napiecie = Napiecie + Zmierz2 da Ci złe wyniki....
... bo nie rozumiem czemu pseudo-twórcy nie dali zmiennych 5 bajtowych... Wtedy zapewne jakiś programista :D-maruda napisał by: "nie rozumiem czemu pseudo-twórcy nie dali zmiennych 6 bajtowych..." itd. Zastanawiałem się nad kiedyś nad zbudowaniem procedur arytmetycznych dla liczb wielocyfrowych i wykorzystaniem klasycznych algorytmów działań pisemnych....
Przesuwa sie w prawo bo na ostatnim miejscu nic już sie nie zmieni i dodaje sie wprost wartość jak sie okręci rejestrem określona ilość razy to i tak wyjdzie dokładnie to co ma wyjść może to troszkę bez logiki ale działa jak powinno. A wynika to z tego że rejestr z wynikiem jest 16 bitowy składa sie z 2 rejestrów. Jak kolega by chciał przesunąć liczbę...
2^52 = 4 503 599 627 370 496. Jak widać mamy 16 cyfr, przy czym jedna jest "upośledzona" i nie może mieć wartości większej niż 4. 100 mnożeń i 100 dodawań w jednym takcie zegara przy operacjach na liczbach zmiennoprzecinkowych i do tego 64 bitowych? Ciężko sobie wyobrazić układ FPGA, w którym mógłbyś to zrobić, skoro sam piszesz, że przy 4 mnożeniach...
poziom:=cisnienie* 10.19716; (*wartosc rzeczywista - przeskalowanie ciśnienia na wysokosc slupa wody*) poziomCentymetry:=TRUNC(poziom*1... (*poziom w centymetrach+ odcięcie czesci po przecinku*) 1. czyli poziomCm = cisnienie * 1019.716, spodziewasz się wartości od 0 do 1000 cm, więc cisnienie < 1.0 bar 2. ciśnienia...
mnożenie liczba bitowy sumator liczba bitowy dzielenie liczba bitowy
piosenka radia sterujacy samsung amplituner instrukcja
whirlpool bitron solid security
Audi A1 1.6 TDI 2014 – koszt ASO 4+, zmiana języka MMI, wymiana filtra paliwa Schemat ideowy chłodziarki samochodowej – Peltier TEC1-12706, sprężarka SECOP, BLDC, 12V